<?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>145440</bug_id>
          
          <creation_ts>2015-05-28 10:44:59 -0700</creation_ts>
          <short_desc>Rename HTMLMediaSession to HTMLMediaElementSession in anticipation of Media Session API</short_desc>
          <delta_ts>2015-05-28 16:03:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Rajca">mrajca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097909</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 10:44:59 -0700</bug_when>
    <thetext>As discussed with Eric Carlson and Jer Noble, we should rename HTMLMediaSession to HTMLMediaElementSession to reserve &quot;media session&quot; for the Media Session API (bug 145411).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097910</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-28 10:46:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/21142951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097923</commentid>
    <comment_count>2</comment_count>
      <attachid>253854</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 12:10:30 -0700</bug_when>
    <thetext>Created attachment 253854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097925</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 12:13:17 -0700</bug_when>
    <thetext>Attachment 253854 did not pass style-queue:


ERROR: Source/WebCore/html/HTMLMediaElementSession.cpp:30:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/html/HTMLMediaElementSession.cpp:58:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 10 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>1097933</commentid>
    <comment_count>4</comment_count>
      <attachid>253854</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-28 12:47:32 -0700</bug_when>
    <thetext>Comment on attachment 253854
Patch

Generally we only want to use the HTML prefix for classes actually exposed to the DOM. So I think MediaElementSession would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097934</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 12:56:49 -0700</bug_when>
    <thetext>I&apos;ll send out a new patch. I already ran this change by Eric as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097962</commentid>
    <comment_count>6</comment_count>
      <attachid>253866</attachid>
    <who name="Matt Rajca">mrajca</who>
    <bug_when>2015-05-28 14:51:36 -0700</bug_when>
    <thetext>Created attachment 253866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097964</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 14:53:15 -0700</bug_when>
    <thetext>Attachment 253866 did not pass style-queue:


ERROR: Source/WebCore/html/MediaElementSession.cpp:30:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/html/MediaElementSession.cpp:58:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 10 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>1097991</commentid>
    <comment_count>8</comment_count>
      <attachid>253866</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 16:03:52 -0700</bug_when>
    <thetext>Comment on attachment 253866
Patch

Clearing flags on attachment: 253866

Committed r184966: &lt;http://trac.webkit.org/changeset/184966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097992</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 16:03:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253854</attachid>
            <date>2015-05-28 12:10:30 -0700</date>
            <delta_ts>2015-05-28 14:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145440-20150528121017.patch</filename>
            <type>text/plain</type>
            <size>67236</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5Y2NlMDJjMzJkNDIw
NDMwMzc1OTk2YTRiMjFiZTUwOGZmNzMxMy4uN2Y2NGZiMjg3NTczNWU2MDMzNDI2YzcxZDAxMGU0
OWMyOTIxYWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDE1LTA1LTI4ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW5hbWVkIEhUTUxNZWRpYVNl
c3Npb24gdG8gSFRNTE1lZGlhRWxlbWVudFNlc3Npb24gdG8gcmVzZXJ2ZSAibWVkaWEgc2Vzc2lv
biIgZm9yIHRoZSBNZWRpYSBTZXNzaW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTQ0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVt
b3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU3RhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFTZXNzaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZWdpc3RlcldpdGhEb2N1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6dW5yZWdpc3Rl
cldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lv
bjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpmdWxsc2NyZWVu
UGVybWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpw
YWdlQWxsb3dzRGF0YUxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Np
b246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudFNlc3Npb246OnNldFBsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudFNlc3Npb246OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmlzUGxheWluZ1RvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhU3RhdGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVByZWxvYWRGb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1
aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb246Om1heGltdW1NZWRpYVNv
dXJjZUJ1ZmZlclNpemUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudFNlc3Npb24u
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6c2V0TWVkaWFFbGVtZW50UmVzdHJpY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKToKKworMjAxNS0wNS0yOCAgTWF0
dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIEVOQUJMRV9NRURJQV9T
RVNTSU9OIGZlYXR1cmUgZmxhZyAod2hpY2ggaXMgb2ZmIGJ5IGRlZmF1bHQpLgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NDE1CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYWFiZmNjOGFlOTUxNWM2Zjc0NjYwYTcyMjI2OTBmYWMzZDQ0N2RjYS4u
ZGFiZGU5YTQyNGNjZDJkYTMyNjRjY2Y5ZDFkZmZlN2M5OGE4YTZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2MzYsNyArMTYzNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L0hUTUxNYXBFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAogICAg
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKLSAgICBodG1sL0hUTUxNZWRpYVNlc3Npb24uY3Bw
CisgICAgaHRtbC9IVE1MTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKICAgICBodG1sL0hUTUxNZW51
RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagppbmRleCAyMzgzNTQ4MTk5NTgyYTViMTQ4MWIwNWExMGNkODk5ZTU1ZDMzODAz
Li4yMGQ5YWNkZjI3OTg3Zjk1NjBjZDU5OGYwZDhmOTA5ZjQ5OGYwYTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE1MDk4LDcgKzE1
MDk4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRE9NU2V0dGFibGVUb2tl
bkxpc3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxET01Ub2tlbkxp
c3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxET01VUkwuY3BwIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MTWVkaWFTZXNzaW9uLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTE1lZGlhRWxlbWVudFNlc3Np
b24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxFbWFpbElucHV0VHlw
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXFB1YmxpY1VSTE1hbmFn
ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZmlsZWFwaVxGaWxlLmNwcCIg
Lz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA1NWRjYWY2ZjFlYmNkZWJlMDMxN2Y2ZjJiY2RmOTc3NzZjNTUy
NzVlLi5iMDdjM2E5NThkNTNkYWU4NDZmMjczNWU3NjNiYmUzNDcyZTJlOTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC03MDMwLDcgKzcwMzAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xnYW1lcGFkXEdhbWVwYWRFdmVudC5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXGdh
bWVwYWQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGh0bWxcSFRNTE1lZGlhU2Vzc2lvbi5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAiPgogICAgICAgPEZpbHRlcj5odG1s
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRUUEhlYWRlck5hbWVzLmNwcCI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjQ0MGFjZDdi
N2UyYTQ1YWNlNTg0MmU3NjI2ZjU1MDBkZDc4YTgyNy4uN2ZiN2M3OWRkMmE5ODFkZDBmYjE0NDJm
Y2UyYzA2Y2IwNzkxYTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUxLDggKzM1MSw4IEBACiAJCTA3Rjg3Njg0MUFENTgw
RjkwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdG
QkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVEMTc4MDAxQTdD
RkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLzsgfTsKLQkJMDdGRTk5REMxODgwN0E3RDAwMjU2
NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNl
c3Npb24uY3BwICovOyB9OwotCQkwN0ZFOTlERDE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlh
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwN0ZFOTlEQzE4ODA3QTdE
MDAyNTY2NDggLyogSFRNTE1lZGlhRWxlbWVudFNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REExODgwN0E3RDAwMjU2NjQ4IC8q
IEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLzsgfTsKKwkJMDdGRTk5REQxODgwN0E3RDAw
MjU2NjQ4IC8qIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZFOTlEQjE4ODA3QTdEMDAyNTY2NDggLyogSFRN
TE1lZGlhRWxlbWVudFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwN0ZGREU2ODE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdGRkRFNjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcCAqLzsgfTsKIAkJMDdGRkRFNjkxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0ZGREU2NzE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCAq
LzsgfTsKIAkJMDgwNkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwNkU1NzkxMjg5MzA0NTAw
N0NFRDMyIC8qIFNWR01hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC03NDAzLDggKzc0MDMsOCBAQAogCQkwN0YwQjk3QjFBQzVEQjQ2MDBF
NTM1RDkgLyogQVZGb3VuZGF0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFWRm91bmRhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Y4
NzY4MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZG
IC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RhdGFDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
N0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFTZXNzaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxN
ZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE1lZGlh
U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0ZFOTlEQTE4ODA3QTdE
MDAyNTY2NDggLyogSFRNTE1lZGlhRWxlbWVudFNlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1lZGlhRWxlbWVudFNlc3Npb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0ZFOTlEQjE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1l
ZGlhRWxlbWVudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TE1lZGlhRWxlbWVudFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdG
RkRFNjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRkRFNjcxODFBRUQ0MjAwNzJE
NDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODE1Niw4ICsxODE1Niw4IEBACiAJCQkJRTQ0NjEzOTMwQ0Q2MzMxMDAw
RkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuaCAqLywKIAkJCQlFNDQ2MTM5NDBDRDYzMzEwMDBG
QURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5pZGwgKi8sCiAJCQkJQ0Q1MjA5RTUxQjBCRDlFMTAw
NzcxODRFIC8qIEhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oICovLAotCQkJCTA3RkU5OURBMTg4MDdB
N0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNzaW9uLmNwcCAqLywKLQkJCQkwN0ZFOTlEQjE4ODA3
QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5oICovLAorCQkJCTA3RkU5OURBMTg4MDdB
N0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgKi8sCisJCQkJMDdGRTk5
REIxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uLmggKi8sCiAJCQkJ
QThFQTc5RUMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5jcHAgKi8sCiAJCQkJ
QThFQTc5RTgwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5oICovLAogCQkJCTFB
RTJBRTQzMEExRDI2OUUwMEI0MkIyNSAvKiBIVE1MTWVudUVsZW1lbnQuaWRsICovLApAQCAtMjQ4
OTUsNyArMjQ4OTUsNyBAQAogCQkJCUE4RUE3Q0FCMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MTWFy
cXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0E1MENENjMzMTAwMEZBREE3
NSAvKiBIVE1MTWVkaWFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzc5QkYwRTE4NDUz
MTY4MDAwQjZBRTcgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwN0ZFOTlERDE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDdGRTk5REQxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYUVs
ZW1lbnRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGNDBBMTkxNkRGMDBBOEVG
NUYgLyogSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQkU4RTJDNzEyQTU4
OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODcxREMyNDBBMTUyMDU3MDBCMTJBNjggLyogSFRNTE1ldGFFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4NDAyLDcgKzI4NDAyLDcgQEAKIAkJCQlBOEVBN0NBQzBBMTkyQjlDMDBBOEVG
NUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxM0E0
MENENjMzMTAwMEZBREE3NSAvKiBIVE1MTWVkaWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3NzlCRjBEMTg0NTMxNjgwMDBCNkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIEhU
TUxNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdGRTk5REMxODgwN0E3RDAw
MjU2NjQ4IC8qIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4RUE3OUY4MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MTWVudUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkJFOEUyQzkxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBh
cnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyNzBBMTUyMDU3MDBCMTJBNjggLyog
SFRNTE1ldGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTBlZjE0MmY3YmJiMTFjYmExYWY5YmUwMmE0NzIxMjIw
ZmRiM2ExZi4uZGMwZjk2NTY1NWQ3NzA5ZDQ4Mjk0NGFlNzM3ZTE4ZDU2YWFhMTE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAg
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICwgbV9h
dWRpb1NvdXJjZU5vZGUoMCkKICNlbmRpZgotICAgICwgbV9tZWRpYVNlc3Npb24oc3RkOjptYWtl
X3VuaXF1ZTxIVE1MTWVkaWFTZXNzaW9uPigqdGhpcykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihz
dGQ6Om1ha2VfdW5pcXVlPEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcykpCiAgICAgLCBt
X3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KDApCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICAsIG1fbWVkaWFTdHJlYW1TcmNPYmplY3QobnVsbHB0cikKQEAgLTM2MCwzNiArMzYwLDM2IEBA
IEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6SFRNTE1lZGlhRWxlbWVudCglcCkiLCB0aGlzKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJl
c29sdmVDYWxsYmFja3MoKTsKIAotICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3Ry
aWN0aW9uKEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4p
OwotICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNl
c3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKKyAgICBtX21lZGlhU2Vzc2lv
bi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CisgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2Vu
dFRvTG9hZE1lZGlhKTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAg
IG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNlc3Npb246
OlJlcXVpcmVVc2VyR2VzdHVyZVRvQXV0b3BsYXlUb0V4dGVybmFsRGV2aWNlKTsKKyAgICBtX21l
ZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFFbGVtZW50U2Vzc2lv
bjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRvRXh0ZXJuYWxEZXZpY2UpOwogI2VuZGlm
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNsZWFuIHVwIGFuZCBsb29rIHRvIGJldHRlciBt
ZXJnZSB0aGUgaU9TIGFuZCBub24taU9TIGNvZGUgYmVsb3cuCiAgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+cmVxdWlyZXNVc2VyR2VzdHVyZUZvck1lZGlhUGxheWJhY2so
KSkgewotICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1M
TWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKLSAgICAgICAg
bV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6
UmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCk7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdl
c3R1cmVGb3JSYXRlQ2hhbmdlKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZv
ckxvYWQpOwogICAgIH0KICNlbHNlCiAgICAgbV9zZW5kUHJvZ3Jlc3NFdmVudHMgPSBmYWxzZTsK
ICAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5yZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVk
aWFQbGF5YmFjaygpKSB7CiAgICAgICAgIC8vIEFsbG93IGF1dG9wbGF5IGluIGEgTWVkaWFEb2N1
bWVudCB0aGF0IGlzIG5vdCBpbiBhbiBpZnJhbWUuCiAgICAgICAgIGlmIChkb2N1bWVudC5vd25l
ckVsZW1lbnQoKSB8fCAhZG9jdW1lbnQuaXNNZWRpYURvY3VtZW50KCkpCi0gICAgICAgICAgICBt
X21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFTZXNzaW9uOjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNz
aW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQotICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlv
bihIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcik7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFj
a1RhcmdldFBpY2tlcik7CiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICAvLyBSZWxheCBS
ZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuIHdoZW4gcmVxdWlyZXNVc2VyR2VzdHVyZUZv
ck1lZGlhUGxheWJhY2sgaXMgbm90IHNldDoKLSAgICAgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJl
Rm9yRnVsbHNjcmVlbik7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JG
dWxsc2NyZWVuKTsKICAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGlmIChz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkK
LSAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlh
U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKKyAgICAgICAg
bV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhRWxlbWVudFNl
c3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSk7CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKQEAgLTEwMjEsNyArMTAy
MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKICAgICAvLyBPbmNl
IHRoZSBwYWdlIGhhcyBhbGxvd2VkIGFuIGVsZW1lbnQgdG8gbG9hZCBtZWRpYSwgaXQgaXMgZnJl
ZSB0byBsb2FkIGF0IHdpbGwuIFRoaXMgYWxsb3dzIGEgCiAgICAgLy8gcGxheWxpc3QgdGhhdCBz
dGFydHMgaW4gYSBmb3JlZ3JvdW5kIHRhYiB0byBjb250aW51ZSBhdXRvbWF0aWNhbGx5IGlmIHRo
ZSB0YWIgaXMgc3Vic2VxdWVudGx5IAogICAgIC8vIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgot
ICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNl
c3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKKyAgICBtX21lZGlhU2Vzc2lv
bi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVx
dWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQog
ICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRl
bnRUeXBlJiBjb250ZW50VAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoTWVk
aWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS5sb29rdXAodXJsLnN0cmluZygpKSkKLSAgICAg
ICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSk7CisgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKICNlbmRpZgogCiAgICAgaWYgKG1f
c2VuZFByb2dyZXNzRXZlbnRzKSAKQEAgLTQ4MzUsNyArNDgzNSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICB7CiAgICAgICAg
IGNhc2UgUGFnZUNhY2hlOgogICAgICAgICAgICAgc3RvcCgpOwotICAgICAgICAgICAgbV9tZWRp
YVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWly
ZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBh
Z2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBEb2N1bWVudFdpbGxCZVBhdXNlZDoKICAgICAgICAgY2FzZSBKYXZhU2NyaXB0RGVidWdnZXJQ
YXVzZWQ6CkBAIC00ODU3LDcgKzQ4NTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZSgpCiAgICAgZWxzZQogICAgICAgICBzZXRQYXVzZWRJbnRlcm5hbChmYWxzZSk7CiAKLSAgICBt
X21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFTZXNzaW9u
OjpSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CiAKICAgICBpZiAobV9lcnJvciAmJiBtX2Vycm9y
LT5jb2RlKCkgPT0gTWVkaWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQpIHsKICAgICAgICAgLy8g
UmVzdGFydCB0aGUgbG9hZCBpZiBpdCB3YXMgYWJvcnRlZCBpbiB0aGUgbWlkZGxlIGJ5IG1vdmlu
ZyB0aGUgZG9jdW1lbnQgdG8gdGhlIHBhZ2UgY2FjaGUuCkBAIC01OTYyLDE1ICs1OTYyLDE1IEBA
IGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlcXVlc3RlZFBsYXliYWNrUmF0
ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQmVoYXZpb3JzUmVzdHJp
Y3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCkKIHsKLSAgICBIVE1MTWVkaWFTZXNzaW9uOjpC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnNUb1JlbW92ZSA9IEhUTUxNZWRpYVNlc3Np
b246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQKKyAgICBIVE1MTWVkaWFFbGVtZW50U2Vzc2lv
bjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zVG9SZW1vdmUgPSBIVE1MTWVkaWFF
bGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgICAgIHwgSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIKLSAgICAgICAgfCBIVE1MTWVk
aWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0F1dG9wbGF5VG9FeHRlcm5hbERldmljZQor
ICAgICAgICB8IEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1No
b3dQbGF5YmFja1RhcmdldFBpY2tlcgorICAgICAgICB8IEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVUb0F1dG9wbGF5VG9FeHRlcm5hbERldmljZQogI2VuZGlmCi0g
ICAgICAgIHwgSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZAotICAg
ICAgICB8IEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UK
LSAgICAgICAgfCBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1Jh
dGVDaGFuZ2UKLSAgICAgICAgfCBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JGdWxsc2NyZWVuOworICAgICAgICB8IEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVGb3JMb2FkCisgICAgICAgIHwgSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OlJl
cXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UKKyAgICAgICAgfCBIVE1MTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlCisgICAgICAgIHwg
SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW47
CiAgICAgbV9tZWRpYVNlc3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rp
b25zVG9SZW1vdmUpOwogfQogCkBAIC02Mjk1LDcgKzYyOTUsNyBAQCBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAgICAg
aWYgKCFtX21lZGlhU2Vzc2lvbi0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKnRoaXMp
ICYmIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgJiYgbV9wbGF5ZXIt
PmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSkKICAgICAgICAgc3RhdGUgfD0gUmVx
dWlyZXNQbGF5YmFja1RhcmdldE1vbml0b3Jpbmc7CiAKLSAgICBib29sIHJlcXVpcmVVc2VyR2Vz
dHVyZSA9IG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNl
c3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQXV0b3BsYXlUb0V4dGVybmFsRGV2aWNlKTsKKyAg
ICBib29sIHJlcXVpcmVVc2VyR2VzdHVyZSA9IG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJl
c3RyaWN0aW9uKEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0F1
dG9wbGF5VG9FeHRlcm5hbERldmljZSk7CiAgICAgaWYgKGhhc0FjdGl2ZVZpZGVvICYmICghcmVx
dWlyZVVzZXJHZXN0dXJlIHx8IChoYXNBdWRpbyAmJiAhbG9vcCgpKSkpCiAgICAgICAgIHN0YXRl
IHw9IEV4dGVybmFsRGV2aWNlQXV0b1BsYXlDYW5kaWRhdGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDMwYjE4ZjdjOGEyNzFiMzlhZDk0MTkxMTc1
MDEyMzFiNTRjZmY0Yy4uZDU2NzA5YTVjZTEzY2ZkNzdmYmYwMjdiNzk4NDdhYTVjMzBmZTQzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVl
dWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKLSNpbmNsdWRlICJIVE1M
TWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb24uaCIKICNp
bmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCkBAIC00MTYsNyArNDE2
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHBy
ZWxvYWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbG9hZDsgfQotICAgIEhUTUxNZWRpYVNl
c3Npb24mIG1lZGlhU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuICptX21lZGlhU2Vzc2lvbjsgfQor
ICAgIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uJiBtZWRpYVNlc3Npb24oKSBjb25zdCB7IHJldHVy
biAqbV9tZWRpYVNlc3Npb247IH0KIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQp
CiAgICAgdm9pZCBwYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CkBAIC04OTQsNyArODk0LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3Bs
YXRmb3JtTWVudTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxNZWRpYVNlc3Np
b24+IG1fbWVkaWFTZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MTWVkaWFFbGVtZW50
U2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAgICAgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4g
bV9hY3Rpdml0eVRva2VuOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudFNlc3Npb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4MzQ1MGExY2M2YzljYjk2NjM0NWNmNGU0YzE1M2EwMWI1M2E5YmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcApAQCAtMCwwICsxLDQyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9u
LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCisK
KyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIFN0cmluZyByZXN0cmljdGlvbk5hbWUo
SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
KQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdHJpY3Rpb25CdWlsZGVyOworI2RlZmluZSBDQVNF
KHJlc3RyaWN0aW9uVHlwZSkgXAorICAgIGlmIChyZXN0cmljdGlvbiAmIEhUTUxNZWRpYUVsZW1l
bnRTZXNzaW9uOjpyZXN0cmljdGlvblR5cGUpIHsgXAorICAgICAgICBpZiAoIXJlc3RyaWN0aW9u
QnVpbGRlci5pc0VtcHR5KCkpIFwKKyAgICAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5hcHBl
bmQoIiwgIik7IFwKKyAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgjcmVzdHJpY3Rp
b25UeXBlKTsgXAorICAgIH0gXAorCisgICAgQ0FTRShOb1Jlc3RyaWN0aW9ucyk7CisgICAgQ0FT
RShSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkKTsKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVy
ZUZvclJhdGVDaGFuZ2UpOworICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRl
Q2hhbmdlKTsKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOworICAg
IENBU0UoUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOworICAgIENBU0UoUmVxdWlyZVBh
Z2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKTsKKyAgICBDQVNFKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyNlbmRpZgor
ICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKKworICAgIHJl
dHVybiByZXN0cmljdGlvbkJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKyNlbmRpZgorCitIVE1MTWVk
aWFFbGVtZW50U2Vzc2lvbjo6SFRNTE1lZGlhRWxlbWVudFNlc3Npb24oTWVkaWFTZXNzaW9uQ2xp
ZW50JiBjbGllbnQpCisgICAgOiBNZWRpYVNlc3Npb24oY2xpZW50KQorICAgICwgbV9yZXN0cmlj
dGlvbnMoTm9SZXN0cmljdGlvbnMpCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKKyAgICAsIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyKCp0aGlzLCAmSFRNTE1l
ZGlhRWxlbWVudFNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQor
I2VuZGlmCit7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnJlZ2lzdGVyV2l0
aERvY3VtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCit7CisjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBlbGVtZW50LmRvY3VtZW50KCkuYWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoKnRoaXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
ZWxlbWVudCk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6dW5y
ZWdpc3RlcldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQorewor
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisgICAgZWxlbWVudC5kb2N1bWVu
dCgpLnJlbW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGVsZW1lbnQpOworI2VuZGlmCit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVz
dHJpY3Rpb24pCit7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb24gLSBhZGRpbmcgJXMiLCByZXN0cmljdGlvbk5hbWUocmVzdHJp
Y3Rpb24pLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9u
OworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3Ry
aWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQoreworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uIC0g
cmVtb3ZpbmcgJXMiLCByZXN0cmljdGlvbk5hbWUocmVzdHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkp
OworICAgIG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsKK30KKworYm9vbCBIVE1MTWVk
aWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JSYXRlQ2hhbmdlICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50U2Vzc2lv
bjo6cGxheWJhY2tQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2Vz
dHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAmJiBlbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIVNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZCAtIHJldHVybmluZyBG
QUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAoreworICAgIGlmIChtX3Jlc3RyaWN0aW9u
cyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnRTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Np
b246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEhUTUxNZWRp
YUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gZWxlbWVudC5kb2N1bWVu
dCgpLnBhZ2UoKTsKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRU
b0xvYWRNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGlu
ZyAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VB
bGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVu
dCkgY29uc3QKK3sKKyAgICBQYWdlKiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsK
KyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlh
ICYmIHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWlu
ZyAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciIpOworCisgICAg
aWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7
CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIgLSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBvZiBwZXJtaXNzaW9ucyIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFlbGVtZW50LmRvY3VtZW50KCku
cGFnZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpz
aG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgZWFybHkgYmVj
YXVzZSBwYWdlIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmICFQTEFU
Rk9STShJT1MpCisgICAgaWYgKCFlbGVtZW50Lmhhc1ZpZGVvKCkpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciAt
IHJldHVybmluZyBlYXJseSBiZWNhdXNlIGVsZW1lbnQgaGFzIG5vIHZpZGVvIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5zaG93UGxh
eWJhY2tUYXJnZXRQaWNrZXIoKnRoaXMsIGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpKTsK
K30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1Rh
cmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIC8vIEZJWE1FOiBjb25zb2xpZGF0ZSBNYWMgYW5kIGlPUyBpbXBsZW1lbnRhdGlvbnMK
KyAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsKKyNlbmRpZgorCisgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzIC0gcmV0dXJuaW5nICVzIiwgbV9oYXNQbGF5YmFja1RhcmdldHMgPyAiVFJVRSIgOiAiRkFM
U0UiKTsKKworICAgIHJldHVybiBtX2hhc1BsYXliYWNrVGFyZ2V0czsKK30KKworYm9vbCBIVE1M
TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8
ICFzZXR0aW5ncy0+YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2soKSkgeworICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIHNldHRpbmdzIik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUo
SFRNTE5hbWVzOjp3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpKSB7Cisg
ICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgYXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBT
dHJpbmcgbGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5mYXN0R2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6d2Via2l0YWlycGxheUF0dHIpOworICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpIHsKKyAgICAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobGVn
YWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiYWxsb3ciKSkgeworICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQg
LSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIE1lZGlhUGxheWVyKiBwbGF5ZXIg
PSBlbGVtZW50LnBsYXllcigpOworICAgIGlmICghcGxheWVyKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nICVzIGJlY2F1c2UgbWVkaWEgZW5n
aW5lIHNheXMgc28iLCBkaXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIAorICAgIHJl
dHVybiBkaXNhYmxlZDsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVu
dCwgYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBpZiAoZGlzYWJsZWQpCisgICAgICAgIGFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOworICAgIGVsc2UK
KyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCk7CisKKyAgICBNZWRpYVBsYXllciogcGxheWVyID0gZWxlbWVudC5wbGF5ZXIoKTsK
KyAgICBpZiAoIXBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudFNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0g
ZGlzYWJsZWQgJXMiLCBkaXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIHBsYXllci0+
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxp
c3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBib29sIGhhc0xpc3RlbmVy
cykKK3sKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0SGFzUGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgLSBoYXNMaXN0ZW5lcnMgJXMiLCBoYXNM
aXN0ZW5lcnMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBV
TlVTRURfUEFSQU0oZWxlbWVudCk7CisgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVycyA9IGhhc0xpc3RlbmVyczsKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuY29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShoYXNMaXN0ZW5lcnMpOworICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5w
bGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKCp0aGlzLCBlbGVtZW50Lm1l
ZGlhU3RhdGUoKSk7CisjZW5kaWYKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6
c2V0UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgZGV2aWNlKQorewor
ICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUoZGV2aWNlKTsKKyAgICBjbGllbnQoKS5z
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Cit9
CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5n
ZWRUaW1lckZpcmVkKCkKK3sKKyAgICBjbGllbnQoKS53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZSgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sIGhhc1RhcmdldHMpCit7CisgICAgaWYg
KG1faGFzUGxheWJhY2tUYXJnZXRzID09IGhhc1RhcmdldHMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZSglcCkgLSBoYXNUYXJnZXRzICVzIiwgdGhpcywgaGFzVGFy
Z2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworCisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBo
YXNUYXJnZXRzOworICAgIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuUGxheVRvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0
IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gY2xpZW50KCkuY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rh
cmdldCgpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjppc1BsYXlpbmdUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdAoreworICAgIGlmICghbV9wbGF5YmFja1Rhcmdl
dCB8fCAhbV9wbGF5YmFja1RhcmdldC0+aGFzQWN0aXZlUm91dGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGNsaWVudCgpLmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFj
a1RhcmdldCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCit7CisgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudFNlc3Npb246OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IC0g
c2hvdWxkUGxheSAlcyIsIHNob3VsZFBsYXkgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ID0gc2hvdWxkUGxheTsKKyAgICBjbGllbnQoKS5zZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVt
ZW50JiBlbGVtZW50LCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCit7Cisg
ICAgZWxlbWVudC5kb2N1bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRD
aGFuZ2UoKnRoaXMsIHN0YXRlKTsKK30KKyNlbmRpZgorCitNZWRpYVBsYXllcjo6UHJlbG9hZCBI
VE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkpOworICAgIE1lZGlh
UGxheWVyOjpQcmVsb2FkIHByZWxvYWQgPSBlbGVtZW50LnByZWxvYWRWYWx1ZSgpOworCisgICAg
aWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGlu
Z05vdFBlcm1pdHRlZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOb25lOworCisgICAg
aWYgKChyZXN0cmljdGlvbnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpBdXRvUHJlbG9hZGluZ05v
dFBlcm1pdHRlZCkgPT0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJt
aXR0ZWQpIHsKKyAgICAgICAgaWYgKHByZWxvYWQgPiBNZWRpYVBsYXllcjo6TWV0YURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhOworICAgIH0KKworICAgIHJl
dHVybiBwcmVsb2FkOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJl
c0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Cit7CisgICAgaWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50
KCkuc2V0dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChlbGVt
ZW50LmZhc3RIYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChhcHBs
aWNhdGlvbklzRHVtcFJlbmRlclRyZWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6
bWVkaWFFbmdpbmVVcGRhdGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRl
ZCIpOworCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICBpZiAobV9y
ZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkKKyAgICAgICAgc2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVudCwgdHJ1ZSk7CisgICAgaWYgKG1f
cGxheWJhY2tUYXJnZXQpCisgICAgICAgIGNsaWVudCgpLnNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKKyAgICBpZiAobV9zaG91bGRQbGF5VG9Q
bGF5YmFja1RhcmdldCkKKyAgICAgICAgY2xpZW50KCkuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyNlbmRpZgor
ICAgIAorfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NBbHRlcm5hdGVG
dWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
U2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCk7CisgICAg
cmV0dXJuIHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKCk7
Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorY29uc3QgdW5zaWduZWQgZml2ZU1pbnV0
ZXNPZjEwODBQVmlkZW8gPSAyOTAgKiAxMDI0ICogMTAyNDsgLy8gMjkwIE1CIGlzIGFwcHJveGlt
YXRlbHkgNSBtaW51dGVzIG9mIDhNYnBzICgxMDgwcCkgY29udGVudC4KK2NvbnN0IHVuc2lnbmVk
IGZpdmVNaW51dGVzU3RlcmVvQXVkaW8gPSAxNCAqIDEwMjQgKiAxMDI0OyAvLyAxNCBNQiBpcyBh
cHByb3hpbWF0ZWx5IDUgbWludXRlcyBvZiAzODRrYnBzIGNvbnRlbnQuCisKK3NpemVfdCBIVE1M
TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWF4aW11bU1lZGlhU291cmNlQnVmZmVyU2l6ZShjb25zdCBT
b3VyY2VCdWZmZXImIGJ1ZmZlcikgY29uc3QKK3sKKyAgICAvLyBBIGdvb2QgcXVhbGl0eSAxMDgw
cCB2aWRlbyB1c2VzIDgsMDAwIGticHMgYW5kIHN0ZXJlbyBhdWRpbyB1c2VzIDM4NCBrYnBzLCBz
byBhc3N1bWUgOTUlIGZvciB2aWRlbyBhbmQgNSUgZm9yIGF1ZGlvLgorICAgIGNvbnN0IGZsb2F0
IGJ1ZmZlckJ1ZGdldFBlcmNlbnRhZ2VGb3JWaWRlbyA9IC45NTsKKyAgICBjb25zdCBmbG9hdCBi
dWZmZXJCdWRnZXRQZXJjZW50YWdlRm9yQXVkaW8gPSAuMDU7CisKKyAgICBzaXplX3QgbWF4aW11
bTsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBidWZmZXIuZG9jdW1lbnQoKS5zZXR0aW5ncygp
OworICAgIGlmIChzZXR0aW5ncykKKyAgICAgICAgbWF4aW11bSA9IHNldHRpbmdzLT5tYXhpbXVt
U291cmNlQnVmZmVyU2l6ZSgpOworICAgIGVsc2UKKyAgICAgICAgbWF4aW11bSA9IGZpdmVNaW51
dGVzT2YxMDgwUFZpZGVvICsgZml2ZU1pbnV0ZXNTdGVyZW9BdWRpbzsKKworICAgIC8vIEFsbG93
IGEgU291cmNlQnVmZmVyIHRvIGJ1ZmZlciBhcyB0aG91Z2ggaXQgaXMgYXVkaW8tb25seSBldmVu
IGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgYWN0aXZlIHRyYWNrcyAoeWV0KS4KKyAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bSAqIGJ1ZmZlckJ1ZGdldFBl
cmNlbnRhZ2VGb3JBdWRpbyk7CisgICAgaWYgKGJ1ZmZlci5oYXNWaWRlbygpKQorICAgICAgICBi
dWZmZXJTaXplICs9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bSAqIGJ1ZmZlckJ1ZGdldFBl
cmNlbnRhZ2VGb3JWaWRlbyk7CisKKyAgICAvLyBGSVhNRTogd2UgbWlnaHQgd2FudCB0byBtb2Rp
ZnkgdGhpcyBhbGdvcml0aG0gdG86CisgICAgLy8gLSBkZWNyZWFzZSB0aGUgbWF4aW11bSBzaXpl
IGZvciBiYWNrZ3JvdW5kIHRhYnMKKyAgICAvLyAtIGRlY3JlYXNlIHRoZSBtYXhpbXVtIHNpemUg
YWxsb3dlZCBmb3IgaW5hY3RpdmUgZWxlbWVudHMgd2hlbiBhIHByb2Nlc3MgaGFzIG1vcmUgdGhh
biBvbmUKKyAgICAvLyAgIGVsZW1lbnQsIGVnLiBzbyBhIHBhZ2Ugd2l0aCBtYW55IGVsZW1lbnRz
IHdoaWNoIGFyZSBwbGF5ZWQgb25lIGF0IGEgdGltZSBkb2Vzbid0IGtlZXAKKyAgICAvLyAgIGV2
ZXJ5dGhpbmcgYnVmZmVyZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgZmluaXNoZWQgcGxheWluZy4K
KworICAgIHJldHVybiBidWZmZXJTaXplOworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudFNlc3Np
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNDE0NzRiYWRlMmEyODkwNzNkNjM3ZmM5NjViMTk2MjYzMzhkY2E2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
U2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhU
TUxNZWRpYUVsZW1lbnRTZXNzaW9uX2gKKyNkZWZpbmUgSFRNTE1lZGlhRWxlbWVudFNlc3Npb25f
aAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNs
dWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNz
IFNvdXJjZUJ1ZmZlcjsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudFNlc3Npb24gZmluYWwgOiBw
dWJsaWMgTWVkaWFTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbihNZWRpYVNlc3Npb25DbGll
bnQmKTsKKyAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50U2Vzc2lvbigpIHsgfQorCisgICAg
dm9pZCByZWdpc3RlcldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKwor
ICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OworICAgIGJvb2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OworICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVt
ZW50JikgY29uc3Q7CisgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1
bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKworICAgIGJvb2wgd2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAg
IHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYsIGJvb2wpOworCisgICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCBvdmVycmlkZTsKKworICAgIHZvaWQgbWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVk
aWFFbGVtZW50JiwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKyNlbmRpZgorCisg
ICAgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93c0FsdGVybmF0
ZUZ1bGxzY3JlZW4oY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIE1lZGlhUGxh
eWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKKworICAgIHZvaWQgbWVkaWFFbmdpbmVVcGRhdGVkKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKTsKKworICAgIC8vIFJlc3RyaWN0aW9ucyB0byBtb2RpZnkgZGVmYXVsdCBi
ZWhhdmlvcnMuCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAgICBO
b1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgPSAx
IDw8IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgPSAxIDw8IDEs
CisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gPSAxIDw8IDIsCisgICAg
ICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhID0gMSA8PCAzLAorICAgICAgICBSZXF1
aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhID0gMSA8PCA0LAorICAgICAgICBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UgPSAxIDw8IDUsCisjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIgPSAxIDw8IDYsCisgICAgICAgIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkID0gIDEgPDwgNywKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRv
RXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDgsCisjZW5kaWYKKyAgICB9OworICAgIHR5cGVkZWYgdW5z
aWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBCZWhhdmlv
clJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
dHJpY3Rpb25zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0
aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMpOworICAgIGJvb2wgaGFz
QmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgY29u
c3QgeyByZXR1cm4gcmVzdHJpY3Rpb24gJiBtX3Jlc3RyaWN0aW9uczsgfQorCisjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKKyAgICBzaXplX3QgbWF4aW11bU1lZGlhU291cmNlQnVmZmVyU2l6ZShj
b25zdCBTb3VyY2VCdWZmZXImKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorCisjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHRhcmdldEF2YWlsYWJpbGl0
eUNoYW5nZWRUaW1lckZpcmVkKCk7CisKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50
CisgICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFy
Z2V0PiYmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlOworI2VuZGlmCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnM7IH0KKyNlbmRpZgorCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0
cmljdGlvbnM7CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIG11
dGFibGUgVGltZXIgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXI7CisgICAgUmVmUHRy
PE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgYm9vbCBtX3Nob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNQ
bGF5YmFja1RhcmdldHMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAg
IGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyB7IGZhbHNlIH07
CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uX2gK
KworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNl
c3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2VhMTU4YjhmNjk4MTM0
MGM0ZDE3YzEwNGQxNWVlYTFkZGU1MjIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgIkhUTUxNZWRpYVNlc3Np
b24uaCIKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCi0jaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIK
LQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFt
ZShIVE1MTWVkaWFTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKLXsK
LSAgICBTdHJpbmdCdWlsZGVyIHJlc3RyaWN0aW9uQnVpbGRlcjsKLSNkZWZpbmUgQ0FTRShyZXN0
cmljdGlvblR5cGUpIFwKLSAgICBpZiAocmVzdHJpY3Rpb24gJiBIVE1MTWVkaWFTZXNzaW9uOjpy
ZXN0cmljdGlvblR5cGUpIHsgXAotICAgICAgICBpZiAoIXJlc3RyaWN0aW9uQnVpbGRlci5pc0Vt
cHR5KCkpIFwKLSAgICAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5hcHBlbmQoIiwgIik7IFwK
LSAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgjcmVzdHJpY3Rpb25UeXBlKTsgXAot
ICAgIH0gXAotCi0gICAgQ0FTRShOb1Jlc3RyaWN0aW9ucyk7Ci0gICAgQ0FTRShSZXF1aXJlVXNl
ckdlc3R1cmVGb3JMb2FkKTsKLSAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFu
Z2UpOwotICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKLSAg
ICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOwotICAgIENBU0UoUmVxdWly
ZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwotICAgIENBU0UoUmVxdWlyZVBhZ2VDb25zZW50VG9S
ZXN1bWVNZWRpYSk7Ci0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBD
QVNFKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTsKLSAgICBD
QVNFKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKLSNlbmRpZgotICAgIENBU0UoUmVx
dWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKLQotICAgIHJldHVybiByZXN0cmlj
dGlvbkJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1IVE1MTWVkaWFTZXNzaW9uOjpI
VE1MTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQotICAgIDogTWVkaWFT
ZXNzaW9uKGNsaWVudCkKLSAgICAsIG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgLCBtX3RhcmdldEF2YWlsYWJp
bGl0eUNoYW5nZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYVNlc3Npb246OnRhcmdldEF2YWlsYWJp
bGl0eUNoYW5nZWRUaW1lckZpcmVkKQotI2VuZGlmCi17Ci19Ci0KLXZvaWQgSFRNTE1lZGlhU2Vz
c2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVu
dCkKLXsKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIGVsZW1lbnQu
ZG9jdW1lbnQoKS5hZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqdGhpcyk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKLSNlbmRpZgotfQotCi12b2lkIEhUTUxNZWRpYVNl
c3Npb246OnVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCkKLXsKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIGVsZW1l
bnQuZG9jdW1lbnQoKS5yZW1vdmVQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCgqdGhpcyk7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKLSNlbmRpZgotfQotCi12b2lkIEhUTUxN
ZWRpYVNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb24pCi17Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVo
YXZpb3JSZXN0cmljdGlvbiAtIGFkZGluZyAlcyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmljdGlv
bikudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247Ci19
Ci0KLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKLXsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uIC0gcmVtb3ZpbmcgJXMiLCByZXN0
cmljdGlvbk5hbWUocmVzdHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fcmVzdHJpY3Rp
b25zICY9IH5yZXN0cmljdGlvbjsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpwbGF5YmFj
a1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAotewotICAg
IGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgJiYg
IVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIC0gcmV0dXJuaW5n
IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXN0
cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UgJiYgZWxlbWVu
dC5oYXNBdWRpbygpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpwbGF5YmFja1Blcm1p
dHRlZCAtIHJldHVybmluZyBGQUxTRSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6ZGF0YUxvYWRp
bmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Ci17Ci0gICAgaWYgKG1f
cmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCAmJiAhU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhU2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIEhUTUxNZWRpYVNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yRnVsbHNjcmVlbiAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6ZnVsbHNj
cmVlblBlcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6
cGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0Ci17Ci0gICAgUGFnZSogcGFnZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAg
aWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEgJiYgcGFn
ZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyAtIHJldHVybmluZyBGQUxTRSIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgSFRNTE1lZGlhU2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25z
dCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAotewotICAgIFBhZ2UqIHBhZ2UgPSBl
bGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwotICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRp
YSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnBhZ2VBbGxvd3NQ
bGF5YmFja0FmdGVyUmVzdW1pbmcgLSByZXR1cm5pbmcgRkFMU0UiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIik7Ci0K
LSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFj
a1RhcmdldFBpY2tlciAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnBh
Z2UoKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpzaG93aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdl
IGlzIE5VTEwiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmICFQTEFURk9STShJT1Mp
Ci0gICAgaWYgKCFlbGVtZW50Lmhhc1ZpZGVvKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhU2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5
IGJlY2F1c2UgZWxlbWVudCBoYXMgbm8gdmlkZW8iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZgotCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tl
cigqdGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOwotfQotCi1ib29sIEhUTUxN
ZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogY29uc29s
aWRhdGUgTWFjIGFuZCBpT1MgaW1wbGVtZW50YXRpb25zCi0gICAgbV9oYXNQbGF5YmFja1Rhcmdl
dHMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJn
ZXRzQXZhaWxhYmxlKCk7Ci0jZW5kaWYKLQotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Np
b246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5nICVzIiwgbV9oYXNQbGF5
YmFja1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKLQotICAgIHJldHVybiBtX2hhc1BsYXli
YWNrVGFyZ2V0czsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAotewot
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpOwot
ICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5hbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFjaygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBzZXR0aW5n
cyIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoZWxlbWVudC5mYXN0
SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6d2Via2l0d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJs
ZWRBdHRyKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgYXR0cmli
dXRlIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICBTdHJpbmcgbGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5mYXN0R2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6d2Via2l0YWlycGxheUF0dHIpOwotICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShsZWdh
Y3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJhbGxvdyIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJu
aW5nIEZBTFNFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBNZWRpYVBsYXllciogcGxheWVyID0gZWxlbWVu
dC5wbGF5ZXIoKTsKLSAgICBpZiAoIXBsYXllcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBib29sIGRpc2FibGVkID0gcGxheWVyLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgp
OwotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkIC0gcmV0dXJuaW5nICVzIGJlY2F1c2UgbWVkaWEgZW5naW5lIHNheXMgc28iLCBk
aXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOwotICAgIAotICAgIHJldHVybiBkaXNhYmxlZDsK
LX0KLQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBib29sIGRpc2FibGVkKQotewot
ICAgIGlmIChkaXNhYmxlZCkKLSAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7Ci0gICAgZWxzZQotICAgICAgICByZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKLQotICAgIE1lZGlh
UGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOwotICAgIGlmICghcGxheWVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpzZXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIGRpc2FibGVkICVzIiwgZGlzYWJsZWQgPyAiVFJV
RSIgOiAiRkFMU0UiKTsKLSAgICBwbGF5ZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGRpc2FibGVkKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRIYXNQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVt
ZW50LCBib29sIGhhc0xpc3RlbmVycykKLXsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNz
aW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyAtIGhhc0xpc3Rl
bmVycyAlcyIsIGhhc0xpc3RlbmVycyA/ICJUUlVFIiA6ICJGQUxTRSIpOwotCi0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKLSAgICBtX2hhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOwotICAgIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jp
bmcoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGhhc0xpc3RlbmVycyk7Ci0gICAgZWxlbWVu
dC5kb2N1bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRo
aXMsIGVsZW1lbnQubWVkaWFTdGF0ZSgpKTsKLSNlbmRpZgotfQotCi12b2lkIEhUTUxNZWRpYVNl
c3Npb246OnNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmlj
ZSkKLXsKLSAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjptb3ZlKGRldmljZSk7Ci0gICAgY2xp
ZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCgqbV9wbGF5YmFja1RhcmdldC5jb3B5UmVm
KCkpOwotfQotCi12b2lkIEhUTUxNZWRpYVNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5n
ZWRUaW1lckZpcmVkKCkKLXsKLSAgICBjbGllbnQoKS53aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZSgpOwotfQotCi12b2lkIEhUTUxNZWRpYVNlc3Npb246OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgaGFzVGFyZ2V0cykKLXsKLSAgICBpZiAobV9oYXNQ
bGF5YmFja1RhcmdldHMgPT0gaGFzVGFyZ2V0cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoJXApIC0gaGFzVGFyZ2V0cyAlcyIsIHRoaXMsIGhhc1RhcmdldHMgPyAiVFJVRSIg
OiAiRkFMU0UiKTsKLQotICAgIG1faGFzUGxheWJhY2tUYXJnZXRzID0gaGFzVGFyZ2V0czsKLSAg
ICBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0
LT5oYXNBY3RpdmVSb3V0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
Y2xpZW50KCkuY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpOwotfQotCi1ib29sIEhU
TUxNZWRpYVNlc3Npb246OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX3BsYXliYWNrVGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNB
Y3RpdmVSb3V0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY2xpZW50
KCkuaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Ci19Ci0KLXZvaWQgSFRNTE1l
ZGlhU2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5
KQotewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNldFNob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0IC0gc2hvdWxkUGxheSAlcyIsIHNob3VsZFBsYXkgPyAiVFJVRSIgOiAiRkFM
U0UiKTsKLSAgICBtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ID0gc2hvdWxkUGxheTsKLSAg
ICBjbGllbnQoKS5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKLX0K
LQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjptZWRpYVN0YXRlRGlkQ2hhbmdlKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0
ZSkKLXsKLSAgICBlbGVtZW50LmRvY3VtZW50KCkucGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRT
dGF0ZURpZENoYW5nZSgqdGhpcywgc3RhdGUpOwotfQotI2VuZGlmCi0KLU1lZGlhUGxheWVyOjpQ
cmVsb2FkIEhUTUxNZWRpYVNlc3Npb246OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKLSAgICBNZWRp
YVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKLQotICAg
IGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2Fk
aW5nTm90UGVybWl0dGVkKSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKLQotICAg
IGlmICgocmVzdHJpY3Rpb25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdO
b3RQZXJtaXR0ZWQpID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVy
bWl0dGVkKSB7Ci0gICAgICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhKQot
ICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcHJlbG9hZDsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpyZXF1aXJlc0Z1bGxz
Y3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0Ci17Ci0gICAgaWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vz
c2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKLSAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YWxsb3dzSW5saW5lTWVk
aWFQbGF5YmFjaygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChlbGVtZW50LmZh
c3RIYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChhcHBsaWNhdGlv
bklzRHVtcFJlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjptZWRpYUVuZ2luZVVw
ZGF0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQiKTsKLQotI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgV2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpCi0gICAgICAgIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGVsZW1lbnQsIHRydWUpOwotICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KQotICAg
ICAgICBjbGllbnQoKS5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0
LmNvcHlSZWYoKSk7Ci0gICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCi0gICAg
ICAgIGNsaWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7Ci0jZW5kaWYKLSAgICAKLX0KLQotYm9vbCBIVE1M
TWVkaWFTZXNzaW9uOjphbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVu
dC5kb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgcmV0dXJuIHNldHRpbmdzICYmIHNldHRpbmdz
LT5hbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKCk7Ci19Ci0KLSNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQotY29uc3QgdW5zaWduZWQgZml2ZU1pbnV0ZXNPZjEwODBQVmlkZW8gPSAyOTAgKiAxMDI0
ICogMTAyNDsgLy8gMjkwIE1CIGlzIGFwcHJveGltYXRlbHkgNSBtaW51dGVzIG9mIDhNYnBzICgx
MDgwcCkgY29udGVudC4KLWNvbnN0IHVuc2lnbmVkIGZpdmVNaW51dGVzU3RlcmVvQXVkaW8gPSAx
NCAqIDEwMjQgKiAxMDI0OyAvLyAxNCBNQiBpcyBhcHByb3hpbWF0ZWx5IDUgbWludXRlcyBvZiAz
ODRrYnBzIGNvbnRlbnQuCi0KLXNpemVfdCBIVE1MTWVkaWFTZXNzaW9uOjptYXhpbXVtTWVkaWFT
b3VyY2VCdWZmZXJTaXplKGNvbnN0IFNvdXJjZUJ1ZmZlciYgYnVmZmVyKSBjb25zdAotewotICAg
IC8vIEEgZ29vZCBxdWFsaXR5IDEwODBwIHZpZGVvIHVzZXMgOCwwMDAga2JwcyBhbmQgc3RlcmVv
IGF1ZGlvIHVzZXMgMzg0IGticHMsIHNvIGFzc3VtZSA5NSUgZm9yIHZpZGVvIGFuZCA1JSBmb3Ig
YXVkaW8uCi0gICAgY29uc3QgZmxvYXQgYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvclZpZGVvID0g
Ljk1OwotICAgIGNvbnN0IGZsb2F0IGJ1ZmZlckJ1ZGdldFBlcmNlbnRhZ2VGb3JBdWRpbyA9IC4w
NTsKLQotICAgIHNpemVfdCBtYXhpbXVtOwotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGJ1ZmZl
ci5kb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgaWYgKHNldHRpbmdzKQotICAgICAgICBtYXhp
bXVtID0gc2V0dGluZ3MtPm1heGltdW1Tb3VyY2VCdWZmZXJTaXplKCk7Ci0gICAgZWxzZQotICAg
ICAgICBtYXhpbXVtID0gZml2ZU1pbnV0ZXNPZjEwODBQVmlkZW8gKyBmaXZlTWludXRlc1N0ZXJl
b0F1ZGlvOwotCi0gICAgLy8gQWxsb3cgYSBTb3VyY2VCdWZmZXIgdG8gYnVmZmVyIGFzIHRob3Vn
aCBpdCBpcyBhdWRpby1vbmx5IGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIGFueSBhY3RpdmUgdHJh
Y2tzICh5ZXQpLgotICAgIHNpemVfdCBidWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
YXhpbXVtICogYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvckF1ZGlvKTsKLSAgICBpZiAoYnVmZmVy
Lmhhc1ZpZGVvKCkpCi0gICAgICAgIGJ1ZmZlclNpemUgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
YXhpbXVtICogYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvclZpZGVvKTsKLQotICAgIC8vIEZJWE1F
OiB3ZSBtaWdodCB3YW50IHRvIG1vZGlmeSB0aGlzIGFsZ29yaXRobSB0bzoKLSAgICAvLyAtIGRl
Y3JlYXNlIHRoZSBtYXhpbXVtIHNpemUgZm9yIGJhY2tncm91bmQgdGFicwotICAgIC8vIC0gZGVj
cmVhc2UgdGhlIG1heGltdW0gc2l6ZSBhbGxvd2VkIGZvciBpbmFjdGl2ZSBlbGVtZW50cyB3aGVu
IGEgcHJvY2VzcyBoYXMgbW9yZSB0aGFuIG9uZQotICAgIC8vICAgZWxlbWVudCwgZWcuIHNvIGEg
cGFnZSB3aXRoIG1hbnkgZWxlbWVudHMgd2hpY2ggYXJlIHBsYXllZCBvbmUgYXQgYSB0aW1lIGRv
ZXNuJ3Qga2VlcAotICAgIC8vICAgZXZlcnl0aGluZyBidWZmZXJlZCBhZnRlciBhbiBlbGVtZW50
IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgotCi0gICAgcmV0dXJuIGJ1ZmZlclNpemU7Ci19Ci0jZW5k
aWYKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYVNlc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk4M2I5YTNhYThk
YzUzYTE1YTEzNGNjNmFhOWJkOWNhYjUwZjg0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEhUTUxNZWRpYVNlc3Npb25faAotI2RlZmluZSBIVE1MTWVkaWFTZXNzaW9uX2gKLQotI2lm
IEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiTWVk
aWFTZXNzaW9uLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBTb3VyY2VC
dWZmZXI7Ci0KLWNsYXNzIEhUTUxNZWRpYVNlc3Npb24gZmluYWwgOiBwdWJsaWMgTWVkaWFTZXNz
aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBIVE1MTWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYpOwotICAgIHZpcnR1YWwgfkhU
TUxNZWRpYVNlc3Npb24oKSB7IH0KLQotICAgIHZvaWQgcmVnaXN0ZXJXaXRoRG9jdW1lbnQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIHZvaWQgdW5yZWdpc3RlcldpdGhEb2N1bWVudChj
b25zdCBIVE1MTWVkaWFFbGVtZW50Jik7Ci0KLSAgICBib29sIHBsYXliYWNrUGVybWl0dGVkKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBib29sIGRhdGFMb2FkaW5nUGVybWl0
dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBib29sIGZ1bGxzY3JlZW5Q
ZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIGJvb2wgcGFnZUFs
bG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBib29s
IHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7Ci0gICAg
Ym9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y29uc3Q7Ci0KLSAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBib29sKTsKLQotICAgIHZvaWQgc2V0
SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYsIGJvb2wpOwotCi0gICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG1lZGlh
U3RhdGVEaWRDaGFuZ2UoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyk7Ci0jZW5kaWYKLQotICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9y
VmlkZW9QbGF5YmFjayhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBhbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKLSAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBlZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIG1l
ZGlhRW5naW5lVXBkYXRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7Ci0KLSAgICAvLyBSZXN0
cmljdGlvbnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3JzLgotICAgIGVudW0gQmVoYXZpb3JS
ZXN0cmljdGlvbkZsYWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAgICBS
ZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkID0gMSA8PCAwLAotICAgICAgICBSZXF1aXJlVXNlckdl
c3R1cmVGb3JSYXRlQ2hhbmdlID0gMSA8PCAxLAotICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVG
b3JGdWxsc2NyZWVuID0gMSA8PCAyLAotICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRN
ZWRpYSA9IDEgPDwgMywKLSAgICAgICAgUmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSA9
IDEgPDwgNCwKLSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlID0g
MSA8PCA1LAotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgICAgIFJl
cXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyID0gMSA8PCA2LAotICAg
ICAgICBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCA9ICAxIDw8IDcsCi0gICAgICAgIFJl
cXVpcmVVc2VyR2VzdHVyZVRvQXV0b3BsYXlUb0V4dGVybmFsRGV2aWNlID0gMSA8PCA4LAotI2Vu
ZGlmCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmlj
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9y
UmVzdHJpY3Rpb25zKTsKLSAgICBib29sIGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHJlc3RyaWN0aW9uICYgbV9y
ZXN0cmljdGlvbnM7IH0KLQotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc2l6ZV90IG1h
eGltdW1NZWRpYVNvdXJjZUJ1ZmZlclNpemUoY29uc3QgU291cmNlQnVmZmVyJikgY29uc3Q7Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLQotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
Ci0gICAgdm9pZCB0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpOwotCi0gICAg
Ly8gTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFj
a1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29s
KSBvdmVycmlkZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIHJlcXVpcmVz
UGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzOyB9Ci0jZW5kaWYKLQotICAg
IEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwotCi0jaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICBtdXRhYmxlIFRpbWVyIG1fdGFyZ2V0QXZhaWxhYmls
aXR5Q2hhbmdlZFRpbWVyOwotICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXli
YWNrVGFyZ2V0OwotICAgIGJvb2wgbV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCB7IGZhbHNl
IH07Ci0gICAgbXV0YWJsZSBib29sIG1faGFzUGxheWJhY2tUYXJnZXRzIHsgZmFsc2UgfTsKLSNl
bmRpZgotI2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIG1faGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9OwotI2VuZGlmCi19OwotCi19Ci0KLSNlbmRpZiAv
LyBNZWRpYVNlc3Npb25faAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwMzRlOGI4ZTFjZDM2OWM0MGUwMjdmMGZhNTNjNjEw
MTdhZmM1ODcuLjg4MTYwMTQyN2Y3ZDg1ZDA5NGU0Zjk5NjJiZWVjYmI4NWY2MjI1MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI2NDgsMzQgKzI2NDgsMzQgQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEhUTUxN
ZWRpYVNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGVsZW1lbnQt
Pm1lZGlhU2Vzc2lvbigpLmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7CisgICAgSFRNTE1lZGlhRWxl
bWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGVsZW1lbnQt
Pm1lZGlhU2Vzc2lvbigpLmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7CiAgICAgZWxlbWVudC0+bWVk
aWFTZXNzaW9uKCkucmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwogCi0g
ICAgcmVzdHJpY3Rpb25zID0gSFRNTE1lZGlhU2Vzc2lvbjo6Tm9SZXN0cmljdGlvbnM7CisgICAg
cmVzdHJpY3Rpb25zID0gSFRNTE1lZGlhRWxlbWVudFNlc3Npb246Ok5vUmVzdHJpY3Rpb25zOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdHJpY3Rpb25zQXJyYXk7CiAgICAgcmVzdHJpY3Rpb25z
U3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIHJlc3RyaWN0aW9uc0FycmF5KTsKICAgICBmb3IgKGF1
dG8mIHJlc3RyaWN0aW9uU3RyaW5nIDogcmVzdHJpY3Rpb25zQXJyYXkpIHsKICAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiTm9SZXN0cmljdGlvbnMiKSkK
LSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpOb1Jlc3RyaWN0
aW9uczsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmlj
dGlvblN0cmluZywgIlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQiKSkKLSAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2Fk
OworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEhUTUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVzdHJpY3Rpb25TdHJpbmcsICJSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlIikpCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJH
ZXN0dXJlRm9yUmF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVk
aWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZTsKICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yRnVsbHNjcmVlbiIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEhUTUxN
ZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW47CisgICAgICAgICAg
ICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2Vz
dHVyZUZvckZ1bGxzY3JlZW47CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmlj
dGlvblN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhIikpCi0gICAgICAgICAg
ICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9M
b2FkTWVkaWE7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhRWxlbWVudFNl
c3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhOwogICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3Vt
ZU1lZGlhIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhU2Vzc2lvbjo6
UmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYTsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9u
cyB8PSBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVN
ZWRpYTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJSZXF1aXJlVXNlckdlc3R1cmVU
b1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9
IEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEhUTUxNZWRpYUVsZW1lbnRTZXNz
aW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjsKICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiV2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVk
aWFTZXNzaW9uOjpXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKKyAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFFbGVtZW50U2Vzc2lvbjo6V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3Ry
aWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlIikpCi0g
ICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJH
ZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEhU
TUxNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFu
Z2U7CiAgICAgfQogICAgIGVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFkZEJlaGF2aW9yUmVzdHJp
Y3Rpb24ocmVzdHJpY3Rpb25zKTsKIH0KQEAgLTI3MjcsNyArMjcyNyw3IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcKICAgICBBdWRpb0NvbnRleHQ6OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9ucyA9IGNvbnRleHQtPmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7CiAgICAgY29udGV4dC0+
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwogCi0gICAgcmVzdHJpY3Rp
b25zID0gSFRNTE1lZGlhU2Vzc2lvbjo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25z
ID0gSFRNTE1lZGlhRWxlbWVudFNlc3Npb246Ok5vUmVzdHJpY3Rpb25zOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gcmVzdHJpY3Rpb25zQXJyYXk7CiAgICAgcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0
KCcsJywgZmFsc2UsIHJlc3RyaWN0aW9uc0FycmF5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253866</attachid>
            <date>2015-05-28 14:51:36 -0700</date>
            <delta_ts>2015-05-28 16:03:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145440-20150528145123.patch</filename>
            <type>text/plain</type>
            <size>68127</size>
            <attacher name="Matt Rajca">mrajca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ5Y2NlMDJjMzJkNDIw
NDMwMzc1OTk2YTRiMjFiZTUwOGZmNzMxMy4uNjY2MzU5MzcxNWViYWYyMTc5YjY1YWExY2UxYTNi
ZDI2NDE4MzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYwIEBACiAyMDE1LTA1LTI4ICBNYXR0
IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW5hbWUgSFRNTE1lZGlhU2Vz
c2lvbiB0byBNZWRpYUVsZW1lbnRTZXNzaW9uIHRvIHJlc2VydmUgIm1lZGlhIHNlc3Npb24iIGZv
ciB0aGUgTWVkaWEgU2Vzc2lvbiBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDU0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJl
aGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVN0YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
U2Vzc2lvbik6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpyZXN0cmljdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVt
ZW50U2Vzc2lvbjo6TWVkaWFFbGVtZW50U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVsZW1lbnRTZXNzaW9uOjpyZWdpc3RlcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp1bnJlZ2lzdGVyV2l0aERvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0
cmljdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFj
a1Blcm1pdHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRh
TG9hZGluZ1Blcm1pdHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpmdWxsc2NyZWVuUGVybWl0dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNl
c3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1l
bnRTZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUxpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpz
ZXRQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
Ojp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5QbGF5VG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNl
c3Npb246OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVN0YXRlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVBy
ZWxvYWRGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWF4aW11bU1lZGlhU291cmNlQnVm
ZmVyU2l6ZSk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaC4KKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE1l
ZGlhRWxlbWVudFJlc3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisKKzIwMTUtMDUtMjggIE1hdHQgUmFqY2EgIDxt
cmFqY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBFTkFCTEVfTUVESUFfU0VTU0lPTiBmZWF0
dXJlIGZsYWcgKHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0KS4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTQxNQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGFhYmZjYzhhZTk1MTVjNmY3NDY2MGE3MjIyNjkwZmFjM2Q0NDdkY2EuLmJhNmE1MDQ1OGVm
YmFiNzdiMzYzY2FmMjA5YzNjZDUxZmY0Njc1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
NjM2LDcgKzE2MzYsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9IVE1MTWFwRWxl
bWVudC5jcHAKICAgICBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCi0gICAgaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAogICAgIGh0bWwv
SFRNTE1lbnVFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAogICAgIGh0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTE2ODgsNiArMTY4Nyw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBodG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwCiAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcAorICAgIGh0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAKICAgICBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCiAg
ICAgaHRtbC9Nb250aElucHV0VHlwZS5jcHAKICAgICBodG1sL051bWJlcklucHV0VHlwZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IDIzODM1NDgxOTk1ODJhNWIxNDgxYjA1YTEwY2Q4OTllNTVkMzM4MDMuLmNkZjk2YzkzMDBmY2Ew
MWNjYWIwOWJkNjAwM2ViNjAxMDBiMGU5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTUwOTgsNyArMTUwOTgsNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxET01TZXR0YWJsZVRva2VuTGlzdC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXERPTVRva2VuTGlzdC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXERPTVVSTC5jcHAiIC8+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxNZWRpYVNlc3Npb24uY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRW1haWxJbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxQdWJsaWNVUkxNYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGZpbGVhcGlcRmlsZS5jcHAiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
NTVkY2FmNmYxZWJjZGViZTAzMTdmNmYyYmNkZjk3Nzc2YzU1Mjc1ZS4uN2E3MTEzMWFmNjk3MzQ2
OTkwZjU5ODliNWYyNzBjYTY1NDY1YTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzAzMCw3ICs3MDMw
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2FtZXBhZFxHYW1lcGFk
RXZlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xnYW1lcGFkPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxNZWRpYVNl
c3Npb24uY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRU
UEhlYWRlck5hbWVzLmNwcCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjQ0MGFjZDdiN2UyYTQ1YWNlNTg0MmU3NjI2ZjU1MDBk
ZDc4YTgyNy4uNGE3OTYwMzAwYTRmNTA1Y2YzNWE5N2MxZDk0YTYxNzg2YzU1NTc0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzUxLDggKzM1MSw4IEBACiAJCTA3Rjg3Njg0MUFENTgwRjkwMDkwNTg0OSAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdGODc2ODMxQUQ0QTk0NTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUU4QzA4MTc0NkI5
NTcwMDUzMkQ3OCAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGQkRFMkMxOEZFRDE3ODAwMUE3Q0ZGIC8q
IEpTRGF0YUN1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0ZCREUyQjE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNw
cCAqLzsgfTsKLQkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5
REExODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uY3BwICovOyB9OwotCQkwN0ZF
OTlERDE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4
IC8qIEhUTUxNZWRpYVNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwN0ZFOTlEQzE4ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50
U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0ZFOTlEQTE4ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgKi87
IH07CisJCTA3RkU5OUREMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZFOTlEQjE4
ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RkZERTY4MTgxQUVENDIwMDcyRDQw
OSAvKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0ZGREU2NjE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwICovOyB9OwogCQkwN0ZGREU2OTE4MUFFRDQyMDA3MkQ0MDkg
LyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3RkZERTY3MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5oICovOyB9OwogCQkwODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZH
TWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0MDMsOCArNzQwMyw4IEBACiAJCTA3
RjBCOTdCMUFDNURCNDYwMEU1MzVEOSAvKiBBVkZvdW5kYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVZGb3VuZGF0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0ZCREUy
QjE4RkVEMTc4MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0YUN1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTA3RkU5OURBMTg4MDdBN0QwMDI1NjY0OCAvKiBIVE1MTWVkaWFTZXNz
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxNZWRpYVNl
c3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0ZFOTlEQjE4ODA3QTdE
MDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MTWVkaWFTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3RkU5OURBMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0ZFOTlEQjE4ODA3QTdEMDAyNTY2NDgg
LyogTWVkaWFFbGVtZW50U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYUVsZW1lbnRTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RkZERTY3MTgxQUVENDIwMDcy
RDQwOSAvKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgxNTYsOCArMTgxNTYsNiBAQAogCQkJCUU0NDYxMzkzMENENjMzMTAw
MEZBREE3NSAvKiBIVE1MTWVkaWFFbGVtZW50LmggKi8sCiAJCQkJRTQ0NjEzOTQwQ0Q2MzMxMDAw
RkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuaWRsICovLAogCQkJCUNENTIwOUU1MUIwQkQ5RTEw
MDc3MTg0RSAvKiBIVE1MTWVkaWFFbGVtZW50RW51bXMuaCAqLywKLQkJCQkwN0ZFOTlEQTE4ODA3
QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgKi8sCi0JCQkJMDdGRTk5REIxODgw
N0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNlc3Npb24uaCAqLywKIAkJCQlBOEVBNzlFQzBBMTkx
NkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCAqLywKIAkJCQlBOEVBNzlFODBBMTkx
NkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFFNDMwQTFEMjY5
RTAwQjQyQjI1IC8qIEhUTUxNZW51RWxlbWVudC5pZGwgKi8sCkBAIC0xODI5Niw2ICsxODI5NCw4
IEBACiAJCQkJQ0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZS5oICovLAogCQkJCTk3MjA1QUIzMTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50
LmNwcCAqLywKIAkJCQk5NzIwNUFCNDEyMzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5o
ICovLAorCQkJCTA3RkU5OURBMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcCAqLywKKwkJCQkwN0ZFOTlEQjE4ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vz
c2lvbi5oICovLAogCQkJCUU0NDYxMzlCMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmgg
Ki8sCiAJCQkJRTQ0NjEzOUMwQ0Q2MzMxMDAwRkFEQTc1IC8qIE1lZGlhRXJyb3IuaWRsICovLAog
CQkJCTA3QTZEMUU5MTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNw
cCAqLywKQEAgLTI0ODk1LDcgKzI0ODk1LDYgQEAKIAkJCQlBOEVBN0NBQjBBMTkyQjlDMDBBOEVG
NUYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNBNTBD
RDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc3OUJGMEUxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMDdGRTk5REQxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRp
YVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAv
KiBIVE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJCRThFMkM3MTJBNTg5RUMw
MEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzFEQzI0MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MTWV0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjU3NzQsNiArMjU3NzMsNyBAQAogCQkJCTVFQTcyNUQzMUFDQUJENDcwMEVBRDE3QiAv
KiBNZWRpYURldmljZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUI4MTIzOTI5MTAwMEIx
NzM4MCAvKiBNZWRpYURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDZGMjUyRDEzRjVF
RjBFMDA2NTE2NUYgLyogTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwN0ZFOTlERDE4ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8qIE1lZGlhRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRp
YUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMxNDkxMTM3NzAwMDUx
RDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0MDIs
NyArMjg0MDIsNiBAQAogCQkJCUE4RUE3Q0FDMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MTWFycXVl
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEzQTQwQ0Q2MzMxMDAwRkFEQTc1
IC8qIEhUTUxNZWRpYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc3OUJGMEQxODQ1
MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkwN0ZFOTlEQzE4ODA3QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNzlGODBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTE1l
bnVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJCRThFMkM5MTJBNThBMDEwMEZBRDU1
MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURD
MjcwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxNZXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI5MzU1LDYgKzI5MzU0LDcgQEAKIAkJCQk1RUE3MjVEMjFBQ0FCRDQ3MDBFQUQxN0IgLyog
TWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5MTAwMEIx
NzM4MCAvKiBNZWRpYURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENkYyNTJDMTNG
NUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEUxOTU5MjEwQTM5REFCQTAwMjIwRkU1IC8qIE1l
ZGlhRmVhdHVyZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3QTZEMUVCMTQ5MTEzNzcw
MDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTBlZjE0
MmY3YmJiMTFjYmExYWY5YmUwMmE0NzIxMjIwZmRiM2ExZi4uYTYyYzI4NDI4NDlmNmEyNmQ4NzAz
NzI5YzhkOWE0MjNlYmM5MWYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNpZiBF
TkFCTEUoV0VCX0FVRElPKQogICAgICwgbV9hdWRpb1NvdXJjZU5vZGUoMCkKICNlbmRpZgotICAg
ICwgbV9tZWRpYVNlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWVkaWFTZXNzaW9uPigqdGhp
cykpCisgICAgLCBtX21lZGlhU2Vzc2lvbihzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxlbWVudFNl
c3Npb24+KCp0aGlzKSkKICAgICAsIG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QoMCkKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9tZWRpYVN0cmVhbVNyY09iamVjdChudWxscHRy
KQpAQCAtMzYwLDM2ICszNjAsMzYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KCVwKSIsIHRoaXMpOwog
ICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCi0gICAgbV9tZWRpYVNl
c3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7Ci0gICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVk
aWEpOworICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxl
bWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOworICAgIG1fbWVk
aWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJl
cXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQotICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKEhU
TUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQXV0b3BsYXlUb0V4dGVybmFsRGV2
aWNlKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0F1dG9wbGF5VG9FeHRlcm5hbERldmlj
ZSk7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2xlYW4gdXAgYW5kIGxvb2sg
dG8gYmV0dGVyIG1lcmdlIHRoZSBpT1MgYW5kIG5vbi1pT1MgY29kZSBiZWxvdy4KICAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5yZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVk
aWFQbGF5YmFjaygpKSB7Ci0gICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3Ry
aWN0aW9uKEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2Up
OwotICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVk
aWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkKTsKKyAgICAgICAgbV9tZWRpYVNl
c3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSk7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVy
ZUZvckxvYWQpOwogICAgIH0KICNlbHNlCiAgICAgbV9zZW5kUHJvZ3Jlc3NFdmVudHMgPSBmYWxz
ZTsKICAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5yZXF1aXJlc1VzZXJHZXN0dXJlRm9y
TWVkaWFQbGF5YmFjaygpKSB7CiAgICAgICAgIC8vIEFsbG93IGF1dG9wbGF5IGluIGEgTWVkaWFE
b2N1bWVudCB0aGF0IGlzIG5vdCBpbiBhbiBpZnJhbWUuCiAgICAgICAgIGlmIChkb2N1bWVudC5v
d25lckVsZW1lbnQoKSB8fCAhZG9jdW1lbnQuaXNNZWRpYURvY3VtZW50KCkpCi0gICAgICAgICAg
ICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihIVE1MTWVkaWFTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlKTsKKyAgICAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVp
cmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UpOwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCi0gICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIpOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVsYXggUmVxdWly
ZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiB3aGVuIHJlcXVpcmVzVXNlckdlc3R1cmVGb3JNZWRp
YVBsYXliYWNrIGlzIG5vdCBzZXQ6Ci0gICAgICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1
bGxzY3JlZW4pOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVu
KTsKICAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIGlmIChzZXR0aW5ncyAm
JiBzZXR0aW5ncy0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKLSAgICAgICAg
bV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6
UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKKyAgICAgICAgbV9tZWRpYVNl
c3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKICAgICBpZiAoZG9jdW1lbnQucGFnZSgpKQpAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoKQogICAgIC8vIE9uY2UgdGhlIHBhZ2UgaGFz
IGFsbG93ZWQgYW4gZWxlbWVudCB0byBsb2FkIG1lZGlhLCBpdCBpcyBmcmVlIHRvIGxvYWQgYXQg
d2lsbC4gVGhpcyBhbGxvd3MgYSAKICAgICAvLyBwbGF5bGlzdCB0aGF0IHN0YXJ0cyBpbiBhIGZv
cmVncm91bmQgdGFiIHRvIGNvbnRpbnVlIGF1dG9tYXRpY2FsbHkgaWYgdGhlIHRhYiBpcyBzdWJz
ZXF1ZW50bHkgCiAgICAgLy8gcHV0IGludG8gdGhlIGJhY2tncm91bmQuCi0gICAgbV9tZWRpYVNl
c3Npb24tPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWly
ZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOworICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRv
TG9hZE1lZGlhKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoaGFzTWVkaWFD
b250cm9scygpKQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojps
b2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKE1lZGlhU3RyZWFtUmVnaXN0cnk6
OnJlZ2lzdHJ5KCkubG9va3VwKHVybC5zdHJpbmcoKSkpCi0gICAgICAgIG1fbWVkaWFTZXNzaW9u
LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2Vy
R2VzdHVyZUZvclJhdGVDaGFuZ2UpOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JSYXRlQ2hhbmdlKTsKICNlbmRpZgogCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSAK
QEAgLTQ4MzUsNyArNDgzNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgUGFnZUNhY2hlOgogICAg
ICAgICAgICAgc3RvcCgpOwotICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVN
ZWRpYSk7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvY3VtZW50V2lsbEJlUGF1c2VkOgog
ICAgICAgICBjYXNlIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKQEAgLTQ4NTcsNyArNDg1Nyw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICBlbHNlCiAgICAgICAgIHNl
dFBhdXNlZEludGVybmFsKGZhbHNlKTsKIAotICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVz
dW1lTWVkaWEpOworICAgIG1fbWVkaWFTZXNzaW9uLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9u
KE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEpOwog
CiAgICAgaWYgKG1fZXJyb3IgJiYgbV9lcnJvci0+Y29kZSgpID09IE1lZGlhRXJyb3I6Ok1FRElB
X0VSUl9BQk9SVEVEKSB7CiAgICAgICAgIC8vIFJlc3RhcnQgdGhlIGxvYWQgaWYgaXQgd2FzIGFi
b3J0ZWQgaW4gdGhlIG1pZGRsZSBieSBtb3ZpbmcgdGhlIGRvY3VtZW50IHRvIHRoZSBwYWdlIGNh
Y2hlLgpAQCAtNTk2MiwxNSArNTk2MiwxNSBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJSZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgp
CiB7Ci0gICAgSFRNTE1lZGlhU2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b25zVG9SZW1vdmUgPSBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2Fk
CisgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b25zVG9SZW1vdmUgPSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JM
b2FkCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICAgICAgfCBIVE1M
TWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tl
cgotICAgICAgICB8IEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQXV0b3Bs
YXlUb0V4dGVybmFsRGV2aWNlCisgICAgICAgIHwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIKKyAgICAgICAgfCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0F1dG9wbGF5VG9FeHRlcm5hbERldmlj
ZQogI2VuZGlmCi0gICAgICAgIHwgSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJl
Rm9yTG9hZAotICAgICAgICB8IEhUTUxNZWRpYVNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZv
clJhdGVDaGFuZ2UKLSAgICAgICAgfCBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1
cmVGb3JBdWRpb1JhdGVDaGFuZ2UKLSAgICAgICAgfCBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuOworICAgICAgICB8IE1lZGlhRWxlbWVudFNlc3Npb246
OlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQKKyAgICAgICAgfCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlCisgICAgICAgIHwgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlCisgICAgICAgIHwg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbjsKICAg
ICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnNU
b1JlbW92ZSk7CiB9CiAKQEAgLTYyOTUsNyArNjI5NSw3IEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVN0YXRlKCkgY29uc3QKICAgICBpZiAo
IW1fbWVkaWFTZXNzaW9uLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcykgJiYg
bV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyAmJiBtX3BsYXllci0+Y2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpKQogICAgICAgICBzdGF0ZSB8PSBSZXF1aXJl
c1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZzsKIAotICAgIGJvb2wgcmVxdWlyZVVzZXJHZXN0dXJl
ID0gbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oSFRNTE1lZGlhU2Vzc2lv
bjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRvRXh0ZXJuYWxEZXZpY2UpOworICAgIGJv
b2wgcmVxdWlyZVVzZXJHZXN0dXJlID0gbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2aW9yUmVzdHJp
Y3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRv
RXh0ZXJuYWxEZXZpY2UpOwogICAgIGlmIChoYXNBY3RpdmVWaWRlbyAmJiAoIXJlcXVpcmVVc2Vy
R2VzdHVyZSB8fCAoaGFzQXVkaW8gJiYgIWxvb3AoKSkpKQogICAgICAgICBzdGF0ZSB8PSBFeHRl
cm5hbERldmljZUF1dG9QbGF5Q2FuZGlkYXRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IGQzMGIxOGY3YzhhMjcxYjM5YWQ5NDE5MTE3NTAxMjMxYjU0
Y2ZmNGMuLmRmNDQ1Zjg5ZDMzNDc4ZmQ3Yjk2OTgxZDc1OWU0YzgxYzZhNGFkZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMiw5ICszMiw5IEBACiAjaW5jbHVk
ZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCiAj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudFNlc3Npb24u
aCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5o
IgogCkBAIC00MTYsNyArNDE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBNZWRpYVBsYXll
ckVudW1zOjpQcmVsb2FkIHByZWxvYWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbG9hZDsg
fQotICAgIEhUTUxNZWRpYVNlc3Npb24mIG1lZGlhU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuICpt
X21lZGlhU2Vzc2lvbjsgfQorICAgIE1lZGlhRWxlbWVudFNlc3Npb24mIG1lZGlhU2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuICptX21lZGlhU2Vzc2lvbjsgfQogCiAjaWYgRU5BQkxFKE1FRElBX0NP
TlRST0xTX1NDUklQVCkKICAgICB2b2lkIHBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKQEAgLTg5
NCw3ICs4OTQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFja01lbnVJ
bnRlcmZhY2U+IG1fcGxhdGZvcm1NZW51OwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SFRNTE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhRWxlbWVudFNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAgIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuIG1fYWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3QgbV9yZXBvcnRlZEV4dHJhTWVt
b3J5Q29zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZWExNThiOGY2OTgxMzQwYzRkMTdjMTA0ZDE1ZWVh
MWRkZTUyMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFZJREVPKQotCi0jaW5jbHVkZSAiSFRNTE1lZGlhU2Vzc2lvbi5oIgotCi0jaW5jbHVk
ZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmICFM
T0dfRElTQUJMRUQKLXN0YXRpYyBTdHJpbmcgcmVzdHJpY3Rpb25OYW1lKEhUTUxNZWRpYVNlc3Np
b246OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQotewotICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdHJpY3Rpb25CdWlsZGVyOwotI2RlZmluZSBDQVNFKHJlc3RyaWN0aW9uVHlwZSkgXAot
ICAgIGlmIChyZXN0cmljdGlvbiAmIEhUTUxNZWRpYVNlc3Npb246OnJlc3RyaWN0aW9uVHlwZSkg
eyBcCi0gICAgICAgIGlmICghcmVzdHJpY3Rpb25CdWlsZGVyLmlzRW1wdHkoKSkgXAotICAgICAg
ICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgiLCAiKTsgXAotICAgICAgICByZXN0cmlj
dGlvbkJ1aWxkZXIuYXBwZW5kKCNyZXN0cmljdGlvblR5cGUpOyBcCi0gICAgfSBcCi0KLSAgICBD
QVNFKE5vUmVzdHJpY3Rpb25zKTsKLSAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQp
OwotICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSk7Ci0gICAgQ0FTRShS
ZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UpOwotICAgIENBU0UoUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7Ci0gICAgQ0FTRShSZXF1aXJlUGFnZUNvbnNlbnRUb0xv
YWRNZWRpYSk7Ci0gICAgQ0FTRShSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhKTsKLSNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIENBU0UoUmVxdWlyZVVzZXJH
ZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOwotICAgIENBU0UoV2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQpOwotI2VuZGlmCi0gICAgQ0FTRShSZXF1aXJlVXNlckdlc3R1cmVG
b3JBdWRpb1JhdGVDaGFuZ2UpOwotCi0gICAgcmV0dXJuIHJlc3RyaWN0aW9uQnVpbGRlci50b1N0
cmluZygpOwotfQotI2VuZGlmCi0KLUhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24o
TWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCi0gICAgOiBNZWRpYVNlc3Npb24oY2xpZW50KQot
ICAgICwgbV9yZXN0cmljdGlvbnMoTm9SZXN0cmljdGlvbnMpCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLSAgICAsIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVy
KCp0aGlzLCAmSFRNTE1lZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVy
RmlyZWQpCi0jZW5kaWYKLXsKLX0KLQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpyZWdpc3Rlcldp
dGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQotewotI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLmFkZFBs
YXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGVsZW1lbnQpOwotI2VuZGlmCi19Ci0KLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6dW5yZWdpc3Rl
cldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQotewotI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLnJl
bW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCp0aGlzKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGVsZW1lbnQpOwotI2VuZGlmCi19Ci0KLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6YWRk
QmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKLXsK
LSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0aW9u
IC0gYWRkaW5nICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJlc3RyaWN0aW9uKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsKLX0KLQotdm9pZCBIVE1MTWVk
aWFTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25z
IHJlc3RyaWN0aW9uKQotewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0
cmljdGlvbikudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0
aW9uOwotfQotCi1ib29sIEhUTUxNZWRpYVNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVzdHJpY3Rp
b25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNoYW5nZSAmJiAhU2NyaXB0Q29udHJvbGxl
cjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhU2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAmJiBlbGVtZW50Lmhhc0F1ZGlvKCkgJiYg
IVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIC0gcmV0dXJuaW5n
IEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZChjb25z
dCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3QKLXsKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBS
ZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpk
YXRhTG9hZGluZ1Blcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSFRNTE1lZGlhU2Vz
c2lvbjo6ZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3QK
LXsKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2Ny
ZWVuICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpmdWxsc2NyZWVuUGVybWl0dGVkIC0g
cmV0dXJuaW5nIEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxv
YWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICBQYWdl
KiBwYWdlID0gZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBpZiAobV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5T
dGFydE1lZGlhKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6cGFn
ZUFsbG93c0RhdGFMb2FkaW5nIC0gcmV0dXJuaW5nIEZBTFNFIik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBIVE1MTWVkaWFTZXNz
aW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgUGFnZSogcGFnZSA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5wYWdlKCk7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9S
ZXN1bWVNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1
bWluZyAtIHJldHVybmluZyBGQUxTRSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIiKTsKLQotICAgIGlmIChtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyICYm
ICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIgLSBy
ZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBvZiBwZXJtaXNzaW9ucyIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpKSB7Ci0gICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tl
clBlcm1pdHRlZCAtIHJldHVybmluZyBlYXJseSBiZWNhdXNlIHBhZ2UgaXMgTlVMTCIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoIWVsZW1l
bnQuaGFzVmlkZW8oKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIgLSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBlbGVtZW50
IGhhcyBubyB2aWRlbyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBl
bGVtZW50LmRvY3VtZW50KCkuc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCp0aGlzLCBpczxIVE1M
VmlkZW9FbGVtZW50PihlbGVtZW50KSk7Ci19Ci0KLWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6aGFz
V2lyZWxlc3NQbGF5YmFja1RhcmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Ci17
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIEZJWE1FOiBjb25zb2xpZGF0ZSBNYWMgYW5kIGlP
UyBpbXBsZW1lbnRhdGlvbnMKLSAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsK
LSNlbmRpZgotCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6aGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldHMgLSByZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0cyA/ICJU
UlVFIiA6ICJGQUxTRSIpOwotCi0gICAgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRzOwotfQot
Ci1ib29sIEhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgaWYgKCFzZXR0aW5n
cyB8fCAhc2V0dGluZ3MtPmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXliYWNrKCkpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIHNldHRpbmdzIik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoSFRN
TE5hbWVzOjp3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBhdHRyaWJ1dGUiKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFN0cmluZyBsZWdh
Y3lBaXJwbGF5QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjp3ZWJraXRhaXJwbGF5QXR0cik7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGxlZ2Fj
eUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSwgImRlbnkiKSkgewotICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmlu
ZyBUUlVFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGxlZ2FjeUFpcnBsYXlBdHRyaWJ1
dGVWYWx1ZSwgImFsbG93IikpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lv
bjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVz
ZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIE1lZGlhUGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOwotICAg
IGlmICghcGxheWVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGJvb2wgZGlzYWJsZWQg
PSBwbGF5ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7Ci0gICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1
cm5pbmcgJXMgYmVjYXVzZSBtZWRpYSBlbmdpbmUgc2F5cyBzbyIsIGRpc2FibGVkID8gIlRSVUUi
IDogIkZBTFNFIik7Ci0gICAgCi0gICAgcmV0dXJuIGRpc2FibGVkOwotfQotCi12b2lkIEhUTUxN
ZWRpYVNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgZGlzYWJsZWQpCi17Ci0gICAgaWYgKGRpc2FibGVk
KQotICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKTsKLSAgICBlbHNlCi0gICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOwotCi0gICAgTWVkaWFQbGF5ZXIqIHBsYXllciA9
IGVsZW1lbnQucGxheWVyKCk7Ci0gICAgaWYgKCFwbGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkIC0gZGlzYWJsZWQgJXMiLCBkaXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOwot
ICAgIHBsYXllci0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwot
fQotCi12b2lkIEhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaGFzTGlz
dGVuZXJzKQotewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzIC0gaGFzTGlzdGVuZXJzICVzIiwgaGFzTGlz
dGVuZXJzID8gIlRSVUUiIDogIkZBTFNFIik7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgVU5V
U0VEX1BBUkFNKGVsZW1lbnQpOwotICAgIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlM
aXN0ZW5lcnMgPSBoYXNMaXN0ZW5lcnM7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVk
TWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oaGFzTGlzdGVuZXJzKTsKLSAgICBlbGVtZW50LmRvY3VtZW50KCkucGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZSgqdGhpcywgZWxlbWVudC5tZWRp
YVN0YXRlKCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6c2V0UGxheWJh
Y2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgZGV2aWNlKQotewotICAgIG1fcGxh
eWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUoZGV2aWNlKTsKLSAgICBjbGllbnQoKS5zZXRXaXJlbGVz
c1BsYXliYWNrVGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7Ci19Ci0KLXZvaWQg
SFRNTE1lZGlhU2Vzc2lvbjo6dGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQoKQot
ewotICAgIGNsaWVudCgpLndpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCk7Ci19Ci0K
LXZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoYm9vbCBoYXNUYXJnZXRzKQotewotICAgIGlmIChtX2hhc1BsYXliYWNrVGFyZ2V0cyA9
PSBoYXNUYXJnZXRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSglcCkgLSBo
YXNUYXJnZXRzICVzIiwgdGhpcywgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOwotCi0g
ICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBoYXNUYXJnZXRzOwotICAgIG1fdGFyZ2V0QXZhaWxh
YmlsaXR5Q2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotYm9vbCBIVE1MTWVkaWFT
ZXNzaW9uOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fcGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjbGllbnQoKS5jYW5QbGF5
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCk7Ci19Ci0KLWJvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6
aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
cGxheWJhY2tUYXJnZXQgfHwgIW1fcGxheWJhY2tUYXJnZXQtPmhhc0FjdGl2ZVJvdXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBjbGllbnQoKS5pc1BsYXlpbmdUb1dp
cmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKLX0KLQotdm9pZCBIVE1MTWVkaWFTZXNzaW9uOjpzZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCi17Ci0gICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgLSBz
aG91bGRQbGF5ICVzIiwgc2hvdWxkUGxheSA/ICJUUlVFIiA6ICJGQUxTRSIpOwotICAgIG1fc2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQgPSBzaG91bGRQbGF5OwotICAgIGNsaWVudCgpLnNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXkpOwotfQotCi12b2lkIEhUTUxNZWRp
YVNlc3Npb246Om1lZGlhU3RhdGVEaWRDaGFuZ2UoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHN0YXRlKQotewotICAgIGVsZW1l
bnQuZG9jdW1lbnQoKS5wbGF5YmFja1RhcmdldFBpY2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKCp0
aGlzLCBzdGF0ZSk7Ci19Ci0jZW5kaWYKLQotTWVkaWFQbGF5ZXI6OlByZWxvYWQgSFRNTE1lZGlh
U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5yZXN0cmljdGlvbnMobWVkaWFUeXBlKCkpOwotICAgIE1lZGlhUGxheWVyOjpQcmVsb2Fk
IHByZWxvYWQgPSBlbGVtZW50LnByZWxvYWRWYWx1ZSgpOwotCi0gICAgaWYgKChyZXN0cmljdGlv
bnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQp
ID09IE1lZGlhU2Vzc2lvbk1hbmFnZXI6Ok1ldGFkYXRhUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkK
LSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOb25lOwotCi0gICAgaWYgKChyZXN0cmljdGlv
bnMgJiBNZWRpYVNlc3Npb25NYW5hZ2VyOjpBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkgPT0g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpIHsKLSAgICAg
ICAgaWYgKHByZWxvYWQgPiBNZWRpYVBsYXllcjo6TWV0YURhdGEpCi0gICAgICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhOwotICAgIH0KLQotICAgIHJldHVybiBwcmVsb2FkOwot
fQotCi1ib29sIEhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICBpZiAo
IU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uUmVzdHJpY3RzSW5s
aW5lVmlkZW9QbGF5YmFjaygqdGhpcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGlm
ICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShI
VE1MTmFtZXM6OndlYmtpdF9wbGF5c2lubGluZUF0dHIpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKGFwcGxpY2F0aW9uSXNEdW1wUmVuZGVyVHJl
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIEhUTUxNZWRpYVNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50JiBlbGVtZW50KQotewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Np
b246Om1lZGlhRW5naW5lVXBkYXRlZCIpOwotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCkKLSAgICAgICAgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVu
dCwgdHJ1ZSk7Ci0gICAgaWYgKG1fcGxheWJhY2tUYXJnZXQpCi0gICAgICAgIGNsaWVudCgpLnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tUYXJnZXQuY29weVJlZigpKTsKLSAg
ICBpZiAobV9zaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCkKLSAgICAgICAgY2xpZW50KCkuc2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodHJ1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShlbGVtZW50KTsKLSNlbmRpZgotICAgIAotfQotCi1ib29sIEhUTUxNZWRpYVNlc3Npb246OmFs
bG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4oY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKLXsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKLSAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmFsbG93c0FsdGVybmF0
ZUZ1bGxzY3JlZW4oKTsKLX0KLQotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi1jb25zdCB1bnNp
Z25lZCBmaXZlTWludXRlc09mMTA4MFBWaWRlbyA9IDI5MCAqIDEwMjQgKiAxMDI0OyAvLyAyOTAg
TUIgaXMgYXBwcm94aW1hdGVseSA1IG1pbnV0ZXMgb2YgOE1icHMgKDEwODBwKSBjb250ZW50Lgot
Y29uc3QgdW5zaWduZWQgZml2ZU1pbnV0ZXNTdGVyZW9BdWRpbyA9IDE0ICogMTAyNCAqIDEwMjQ7
IC8vIDE0IE1CIGlzIGFwcHJveGltYXRlbHkgNSBtaW51dGVzIG9mIDM4NGticHMgY29udGVudC4K
LQotc2l6ZV90IEhUTUxNZWRpYVNlc3Npb246Om1heGltdW1NZWRpYVNvdXJjZUJ1ZmZlclNpemUo
Y29uc3QgU291cmNlQnVmZmVyJiBidWZmZXIpIGNvbnN0Ci17Ci0gICAgLy8gQSBnb29kIHF1YWxp
dHkgMTA4MHAgdmlkZW8gdXNlcyA4LDAwMCBrYnBzIGFuZCBzdGVyZW8gYXVkaW8gdXNlcyAzODQg
a2Jwcywgc28gYXNzdW1lIDk1JSBmb3IgdmlkZW8gYW5kIDUlIGZvciBhdWRpby4KLSAgICBjb25z
dCBmbG9hdCBidWZmZXJCdWRnZXRQZXJjZW50YWdlRm9yVmlkZW8gPSAuOTU7Ci0gICAgY29uc3Qg
ZmxvYXQgYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvckF1ZGlvID0gLjA1OwotCi0gICAgc2l6ZV90
IG1heGltdW07Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gYnVmZmVyLmRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKLSAgICBpZiAoc2V0dGluZ3MpCi0gICAgICAgIG1heGltdW0gPSBzZXR0aW5ncy0+
bWF4aW11bVNvdXJjZUJ1ZmZlclNpemUoKTsKLSAgICBlbHNlCi0gICAgICAgIG1heGltdW0gPSBm
aXZlTWludXRlc09mMTA4MFBWaWRlbyArIGZpdmVNaW51dGVzU3RlcmVvQXVkaW87Ci0KLSAgICAv
LyBBbGxvdyBhIFNvdXJjZUJ1ZmZlciB0byBidWZmZXIgYXMgdGhvdWdoIGl0IGlzIGF1ZGlvLW9u
bHkgZXZlbiBpZiBpdCBkb2Vzbid0IGhhdmUgYW55IGFjdGl2ZSB0cmFja3MgKHlldCkuCi0gICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGltdW0gKiBidWZmZXJC
dWRnZXRQZXJjZW50YWdlRm9yQXVkaW8pOwotICAgIGlmIChidWZmZXIuaGFzVmlkZW8oKSkKLSAg
ICAgICAgYnVmZmVyU2l6ZSArPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1heGltdW0gKiBidWZmZXJC
dWRnZXRQZXJjZW50YWdlRm9yVmlkZW8pOwotCi0gICAgLy8gRklYTUU6IHdlIG1pZ2h0IHdhbnQg
dG8gbW9kaWZ5IHRoaXMgYWxnb3JpdGhtIHRvOgotICAgIC8vIC0gZGVjcmVhc2UgdGhlIG1heGlt
dW0gc2l6ZSBmb3IgYmFja2dyb3VuZCB0YWJzCi0gICAgLy8gLSBkZWNyZWFzZSB0aGUgbWF4aW11
bSBzaXplIGFsbG93ZWQgZm9yIGluYWN0aXZlIGVsZW1lbnRzIHdoZW4gYSBwcm9jZXNzIGhhcyBt
b3JlIHRoYW4gb25lCi0gICAgLy8gICBlbGVtZW50LCBlZy4gc28gYSBwYWdlIHdpdGggbWFueSBl
bGVtZW50cyB3aGljaCBhcmUgcGxheWVkIG9uZSBhdCBhIHRpbWUgZG9lc24ndCBrZWVwCi0gICAg
Ly8gICBldmVyeXRoaW5nIGJ1ZmZlcmVkIGFmdGVyIGFuIGVsZW1lbnQgaGFzIGZpbmlzaGVkIHBs
YXlpbmcuCi0KLSAgICByZXR1cm4gYnVmZmVyU2l6ZTsKLX0KLSNlbmRpZgotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTgzYjlhM2FhOGRjNTNhMTVhMTM0Y2M2YWE5
YmQ5Y2FiNTBmODRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRNTE1lZGlhU2Vz
c2lvbl9oCi0jZGVmaW5lIEhUTUxNZWRpYVNlc3Npb25faAotCi0jaWYgRU5BQkxFKFZJREVPKQot
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKLSNp
bmNsdWRlICJUaW1lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50
OwotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNzIFNvdXJjZUJ1ZmZlcjsKLQotY2xhc3Mg
SFRNTE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVNlc3Npb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IEhUTUxNZWRpYVNlc3Np
b24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7Ci0gICAgdmlydHVhbCB+SFRNTE1lZGlhU2Vzc2lvbigp
IHsgfQotCi0gICAgdm9pZCByZWdpc3RlcldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVt
ZW50Jik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKTsKLQotICAgIGJvb2wgcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYpIGNvbnN0OwotICAgIGJvb2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0gICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmco
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIGJvb2wgcGFnZUFsbG93c1BsYXli
YWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0KLSNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKLSAgICBib29sIGhhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLQotICAgIGJv
b2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwotICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYsIGJvb2wpOwotCi0gICAgdm9pZCBzZXRIYXNQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgbWVkaWFTdGF0ZURpZENoYW5nZShj
b25zdCBIVE1MTWVkaWFFbGVtZW50JiwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsK
LSNlbmRpZgotCi0gICAgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFs
bG93c0FsdGVybmF0ZUZ1bGxzY3JlZW4oY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Owot
ICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLQotICAgIHZvaWQgbWVkaWFFbmdpbmVVcGRhdGVk
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKLQotICAgIC8vIFJlc3RyaWN0aW9ucyB0byBtb2Rp
ZnkgZGVmYXVsdCBiZWhhdmlvcnMuCi0gICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3Mg
ewotICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckxvYWQgPSAxIDw8IDAsCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFu
Z2UgPSAxIDw8IDEsCi0gICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gPSAx
IDw8IDIsCi0gICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhID0gMSA8PCAzLAot
ICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhID0gMSA8PCA0LAotICAgICAg
ICBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UgPSAxIDw8IDUsCi0jaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJl
VG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIgPSAxIDw8IDYsCi0gICAgICAgIFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkID0gIDEgPDwgNywKLSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJl
VG9BdXRvcGxheVRvRXh0ZXJuYWxEZXZpY2UgPSAxIDw8IDgsCi0jZW5kaWYKLSAgICB9OwotICAg
IHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMpOwot
ICAgIGJvb2wgaGFzQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbikgY29uc3QgeyByZXR1cm4gcmVzdHJpY3Rpb24gJiBtX3Jlc3RyaWN0aW9uczsgfQot
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBzaXplX3QgbWF4aW11bU1lZGlhU291cmNl
QnVmZmVyU2l6ZShjb25zdCBTb3VyY2VCdWZmZXImKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRl
OgotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2b2lkIHRhcmdl
dEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCk7Ci0KLSAgICAvLyBNZWRpYVBsYXliYWNr
VGFyZ2V0Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRp
YVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlOwotI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJv
dXRlTW9uaXRvcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnM7IH0KLSNlbmRpZgotCi0gICAgQmVoYXZpb3JSZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnM7Ci0KLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQotICAgIG11dGFibGUgVGltZXIgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXI7
Ci0gICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7Ci0gICAg
Ym9vbCBtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKLSAgICBtdXRhYmxl
IGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldHMgeyBmYWxzZSB9OwotI2VuZGlmCi0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIGJvb2wgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
cyB7IGZhbHNlIH07Ci0jZW5kaWYKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1lZGlhU2Vzc2lvbl9o
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDg5OTM5ZDM4MjAzZTZlOWY4NTFkMzA3ZDc4
NDliMzVlOTAzYzhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMCwwICsxLDQyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIk1lZGlhRWxl
bWVudFNlc3Npb24uaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTb3VyY2VC
dWZmZXIuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIK
KyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhTE9HX0RJU0FCTEVECitzdGF0aWMgU3RyaW5nIHJlc3Ry
aWN0aW9uTmFtZShNZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3RyaWN0aW9uQnVpbGRlcjsKKyNkZWZp
bmUgQ0FTRShyZXN0cmljdGlvblR5cGUpIFwKKyAgICBpZiAocmVzdHJpY3Rpb24gJiBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpyZXN0cmljdGlvblR5cGUpIHsgXAorICAgICAgICBpZiAoIXJlc3RyaWN0
aW9uQnVpbGRlci5pc0VtcHR5KCkpIFwKKyAgICAgICAgICAgIHJlc3RyaWN0aW9uQnVpbGRlci5h
cHBlbmQoIiwgIik7IFwKKyAgICAgICAgcmVzdHJpY3Rpb25CdWlsZGVyLmFwcGVuZCgjcmVzdHJp
Y3Rpb25UeXBlKTsgXAorICAgIH0gXAorCisgICAgQ0FTRShOb1Jlc3RyaWN0aW9ucyk7CisgICAg
Q0FTRShSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkKTsKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2Vz
dHVyZUZvclJhdGVDaGFuZ2UpOworICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9S
YXRlQ2hhbmdlKTsKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOwor
ICAgIENBU0UoUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOworICAgIENBU0UoUmVxdWly
ZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKTsKKyAgICBDQVNFKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyNlbmRp
ZgorICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlKTsKKworICAg
IHJldHVybiByZXN0cmljdGlvbkJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKyNlbmRpZgorCitNZWRp
YUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRTZXNzaW9uKE1lZGlhU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQorICAgIDogTWVkaWFTZXNzaW9uKGNsaWVudCkKKyAgICAsIG1fcmVzdHJpY3Rpb25z
KE5vUmVzdHJpY3Rpb25zKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisg
ICAgLCBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lcigqdGhpcywgJk1lZGlhRWxlbWVu
dFNlc3Npb246OnRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKQorI2VuZGlmCit7
Cit9CisKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQorICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5hZGRQbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudCgqdGhpcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyNl
bmRpZgorfQorCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnVucmVnaXN0ZXJXaXRoRG9jdW1l
bnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKK3sKKyNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5yZW1vdmVQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCgqdGhpcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVt
ZW50KTsKKyNlbmRpZgorfQorCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCit7CisgICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbiAtIGFk
ZGluZyAlcyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmljdGlvbikudXRmOCgpLmRhdGEoKSk7Cisg
ICAgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247Cit9CisKK3ZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbikKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1v
dmVCZWhhdmlvclJlc3RyaWN0aW9uIC0gcmVtb3ZpbmcgJXMiLCByZXN0cmljdGlvbk5hbWUocmVz
dHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmlj
dGlvbjsKK30KKworYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZChj
b25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIGlmIChtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgJiYgIVNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIC0gcmV0dXJuaW5nIEZBTFNFIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UgJiYgZWxlbWVudC5oYXNBdWRp
bygpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgeworICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZCAt
IHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQ
ZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVz
dHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCAmJiAhU2NyaXB0Q29udHJvbGxl
cjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6
ZnVsbHNjcmVlblBlcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgUGFnZSogcGFnZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5wYWdl
KCk7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVk
aWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyAtIHJldHVybmlu
ZyBGQUxTRSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0
ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAg
IFBhZ2UqIHBhZ2UgPSBlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOworICAgIGlmIChtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEgJiYgcGFnZSAmJiAhcGFn
ZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcgLSByZXR1cm5pbmcgRkFMU0Ui
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKK3ZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyIik7CisKKyAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJl
VXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciAmJiAhU2NyaXB0Q29udHJvbGxl
cjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5
IGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQg
LSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdlIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworI2lmICFQTEFURk9STShJT1MpCisgICAgaWYgKCFlbGVtZW50Lmhhc1ZpZGVv
KCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxlbWVudCBoYXMgbm8g
dmlkZW8iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZWxlbWVudC5k
b2N1bWVudCgpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcywgaXM8SFRNTFZpZGVvRWxl
bWVudD4oZWxlbWVudCkpOworfQorCitib29sIE1lZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdAoreworI2lm
IFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogY29uc29saWRhdGUgTWFjIGFuZCBpT1MgaW1w
bGVtZW50YXRpb25zCisgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlKCk7CisjZW5k
aWYKKworICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5nICVzIiwgbV9oYXNQbGF5YmFja1RhcmdldHMgPyAiVFJV
RSIgOiAiRkFMU0UiKTsKKworICAgIHJldHVybiBtX2hhc1BsYXliYWNrVGFyZ2V0czsKK30KKwor
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChj
b25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGlu
Z3MgfHwgIXNldHRpbmdzLT5hbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFjaygpKSB7CisgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBzZXR0aW5ncyIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC5mYXN0SGFzQXR0cmlidXRl
KEhUTUxOYW1lczo6d2Via2l0d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKSkgewor
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgYXR0cmlidXRlIik7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBTdHJp
bmcgbGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5mYXN0R2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6d2Via2l0YWlycGxheUF0dHIpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQg
LSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShsZWdhY3lBaXJw
bGF5QXR0cmlidXRlVmFsdWUsICJhbGxvdyIpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5n
IEZBTFNFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmCisKKyAgICBNZWRpYVBsYXllciogcGxheWVyID0gZWxlbWVudC5w
bGF5ZXIoKTsKKyAgICBpZiAoIXBsYXllcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBi
b29sIGRpc2FibGVkID0gcGxheWVyLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpOwor
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkIC0gcmV0dXJuaW5nICVzIGJlY2F1c2UgbWVkaWEgZW5naW5lIHNheXMgc28iLCBk
aXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIAorICAgIHJldHVybiBkaXNhYmxlZDsK
K30KKwordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBib29sIGRpc2FibGVkKQor
eworICAgIGlmIChkaXNhYmxlZCkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7CisgICAgZWxzZQorICAgICAgICByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKworICAgIE1l
ZGlhUGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOworICAgIGlmICghcGxheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIGRpc2FibGVkICVzIiwgZGlzYWJsZWQg
PyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBwbGF5ZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGRpc2FibGVkKTsKK30KKwordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRI
YXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVt
ZW50JiBlbGVtZW50LCBib29sIGhhc0xpc3RlbmVycykKK3sKKyAgICBMT0coTWVkaWEsICJNZWRp
YUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
cyAtIGhhc0xpc3RlbmVycyAlcyIsIGhhc0xpc3RlbmVycyA/ICJUUlVFIiA6ICJGQUxTRSIpOwor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyAgICBtX2hh
c1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOworICAg
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jb25maWd1cmVXaXJlTGVzc1Rh
cmdldE1vbml0b3JpbmcoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhhc0xpc3RlbmVycyk7
CisgICAgZWxlbWVudC5kb2N1bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVE
aWRDaGFuZ2UoKnRoaXMsIGVsZW1lbnQubWVkaWFTdGF0ZSgpKTsKKyNlbmRpZgorfQorCit2b2lk
IE1lZGlhRWxlbWVudFNlc3Npb246OnNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNr
VGFyZ2V0PiYmIGRldmljZSkKK3sKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjptb3ZlKGRl
dmljZSk7CisgICAgY2xpZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCgqbV9wbGF5YmFj
a1RhcmdldC5jb3B5UmVmKCkpOworfQorCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnRhcmdl
dEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAgICBjbGllbnQoKS53aXJlbGVz
c1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpOworfQorCit2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgaGFzVGFyZ2V0
cykKK3sKKyAgICBpZiAobV9oYXNQbGF5YmFja1RhcmdldHMgPT0gaGFzVGFyZ2V0cykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoJXApIC0gaGFzVGFyZ2V0cyAlcyIsIHRo
aXMsIGhhc1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKworICAgIG1faGFzUGxheWJhY2tU
YXJnZXRzID0gaGFzVGFyZ2V0czsKKyAgICBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRUaW1l
ci5zdGFydE9uZVNob3QoMCk7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuUGxh
eVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNr
VGFyZ2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY2xpZW50KCkuY2FuUGxheVRvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpOworfQorCitib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmlzUGxheWluZ1Rv
V2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXliYWNrVGFy
Z2V0IHx8ICFtX3BsYXliYWNrVGFyZ2V0LT5oYXNBY3RpdmVSb3V0ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY2xpZW50KCkuaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCk7Cit9CisKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5KQoreworICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IC0gc2hvdWxk
UGxheSAlcyIsIHNob3VsZFBsYXkgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBtX3Nob3VsZFBs
YXlUb1BsYXliYWNrVGFyZ2V0ID0gc2hvdWxkUGxheTsKKyAgICBjbGllbnQoKS5zZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsKK30KKwordm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjptZWRpYVN0YXRlRGlkQ2hhbmdlKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSkKK3sKKyAgICBlbGVtZW50
LmRvY3VtZW50KCkucGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5nZSgqdGhp
cywgc3RhdGUpOworfQorI2VuZGlmCisKK01lZGlhUGxheWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVu
dFNlc3Npb246OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkucmVzdHJpY3Rpb25zKG1lZGlhVHlwZSgpKTsKKyAgICBNZWRpYVBsYXllcjo6UHJlbG9h
ZCBwcmVsb2FkID0gZWxlbWVudC5wcmVsb2FkVmFsdWUoKTsKKworICAgIGlmICgocmVzdHJpY3Rp
b25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVk
KSA9PSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQp
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6Tm9uZTsKKworICAgIGlmICgocmVzdHJpY3Rp
b25zICYgTWVkaWFTZXNzaW9uTWFuYWdlcjo6QXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpID09
IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKSB7CisgICAg
ICAgIGlmIChwcmVsb2FkID4gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhKQorICAgICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpNZXRhRGF0YTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJlbG9hZDsK
K30KKworYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRl
b1BsYXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
aWYgKCFNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvblJlc3RyaWN0
c0lubGluZVZpZGVvUGxheWJhY2soKnRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKKyAg
ICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+YWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChlbGVtZW50LmZhc3RIYXNBdHRyaWJ1
dGUoSFRNTE5hbWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChhcHBsaWNhdGlvbklzRHVtcFJlbmRl
clRyZWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQiKTsKKworI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgV2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQpCisgICAgICAgIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGVsZW1lbnQsIHRydWUpOworICAgIGlmIChtX3BsYXliYWNrVGFyZ2V0KQorICAgICAgICBj
bGllbnQoKS5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlS
ZWYoKSk7CisgICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCisgICAgICAgIGNs
aWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZWxlbWVudCk7CisjZW5kaWYKKyAgICAKK30KKworYm9vbCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjphbGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVudC5k
b2N1bWVudCgpLnNldHRpbmdzKCk7CisgICAgcmV0dXJuIHNldHRpbmdzICYmIHNldHRpbmdzLT5h
bGxvd3NBbHRlcm5hdGVGdWxsc2NyZWVuKCk7Cit9CisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQorY29uc3QgdW5zaWduZWQgZml2ZU1pbnV0ZXNPZjEwODBQVmlkZW8gPSAyOTAgKiAxMDI0ICog
MTAyNDsgLy8gMjkwIE1CIGlzIGFwcHJveGltYXRlbHkgNSBtaW51dGVzIG9mIDhNYnBzICgxMDgw
cCkgY29udGVudC4KK2NvbnN0IHVuc2lnbmVkIGZpdmVNaW51dGVzU3RlcmVvQXVkaW8gPSAxNCAq
IDEwMjQgKiAxMDI0OyAvLyAxNCBNQiBpcyBhcHByb3hpbWF0ZWx5IDUgbWludXRlcyBvZiAzODRr
YnBzIGNvbnRlbnQuCisKK3NpemVfdCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptYXhpbXVtTWVkaWFT
b3VyY2VCdWZmZXJTaXplKGNvbnN0IFNvdXJjZUJ1ZmZlciYgYnVmZmVyKSBjb25zdAoreworICAg
IC8vIEEgZ29vZCBxdWFsaXR5IDEwODBwIHZpZGVvIHVzZXMgOCwwMDAga2JwcyBhbmQgc3RlcmVv
IGF1ZGlvIHVzZXMgMzg0IGticHMsIHNvIGFzc3VtZSA5NSUgZm9yIHZpZGVvIGFuZCA1JSBmb3Ig
YXVkaW8uCisgICAgY29uc3QgZmxvYXQgYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvclZpZGVvID0g
Ljk1OworICAgIGNvbnN0IGZsb2F0IGJ1ZmZlckJ1ZGdldFBlcmNlbnRhZ2VGb3JBdWRpbyA9IC4w
NTsKKworICAgIHNpemVfdCBtYXhpbXVtOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGJ1ZmZl
ci5kb2N1bWVudCgpLnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzKQorICAgICAgICBtYXhp
bXVtID0gc2V0dGluZ3MtPm1heGltdW1Tb3VyY2VCdWZmZXJTaXplKCk7CisgICAgZWxzZQorICAg
ICAgICBtYXhpbXVtID0gZml2ZU1pbnV0ZXNPZjEwODBQVmlkZW8gKyBmaXZlTWludXRlc1N0ZXJl
b0F1ZGlvOworCisgICAgLy8gQWxsb3cgYSBTb3VyY2VCdWZmZXIgdG8gYnVmZmVyIGFzIHRob3Vn
aCBpdCBpcyBhdWRpby1vbmx5IGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIGFueSBhY3RpdmUgdHJh
Y2tzICh5ZXQpLgorICAgIHNpemVfdCBidWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
YXhpbXVtICogYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvckF1ZGlvKTsKKyAgICBpZiAoYnVmZmVy
Lmhhc1ZpZGVvKCkpCisgICAgICAgIGJ1ZmZlclNpemUgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90Piht
YXhpbXVtICogYnVmZmVyQnVkZ2V0UGVyY2VudGFnZUZvclZpZGVvKTsKKworICAgIC8vIEZJWE1F
OiB3ZSBtaWdodCB3YW50IHRvIG1vZGlmeSB0aGlzIGFsZ29yaXRobSB0bzoKKyAgICAvLyAtIGRl
Y3JlYXNlIHRoZSBtYXhpbXVtIHNpemUgZm9yIGJhY2tncm91bmQgdGFicworICAgIC8vIC0gZGVj
cmVhc2UgdGhlIG1heGltdW0gc2l6ZSBhbGxvd2VkIGZvciBpbmFjdGl2ZSBlbGVtZW50cyB3aGVu
IGEgcHJvY2VzcyBoYXMgbW9yZSB0aGFuIG9uZQorICAgIC8vICAgZWxlbWVudCwgZWcuIHNvIGEg
cGFnZSB3aXRoIG1hbnkgZWxlbWVudHMgd2hpY2ggYXJlIHBsYXllZCBvbmUgYXQgYSB0aW1lIGRv
ZXNuJ3Qga2VlcAorICAgIC8vICAgZXZlcnl0aGluZyBidWZmZXJlZCBhZnRlciBhbiBlbGVtZW50
IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorCisgICAgcmV0dXJuIGJ1ZmZlclNpemU7Cit9CisjZW5k
aWYKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmQxOTNhMGM3ZTQ1NmVmNWE0N2RlMDFk
YTUzZWVmZTE2YmZjNjg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWVkaWFFbGVtZW50U2Vzc2lvbl9oCisjZGVmaW5lIE1lZGlhRWxlbWVudFNlc3Np
b25faAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2Ns
YXNzIFNvdXJjZUJ1ZmZlcjsKKworY2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1
YmxpYyBNZWRpYVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IE1lZGlhRWxlbWVudFNlc3Npb24oTWVkaWFTZXNzaW9uQ2xpZW50Jik7
CisgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50U2Vzc2lvbigpIHsgfQorCisgICAgdm9pZCByZWdp
c3RlcldpdGhEb2N1bWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdm9pZCB1bnJl
Z2lzdGVyV2l0aERvY3VtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKworICAgIGJvb2wg
cGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJv
b2wgZGF0YUxvYWRpbmdQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Owor
ICAgIGJvb2wgZnVsbHNjcmVlblBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7CisgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OworICAgIGJvb2wgcGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25z
dCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQorICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgc2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJv
b2wpOworCisgICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIHZvaWQgbWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKyNlbmRpZgorCisgICAgYm9vbCBy
ZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93c0FsdGVybmF0ZUZ1bGxzY3Jl
ZW4oY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIE1lZGlhUGxheWVyOjpQcmVs
b2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsKKworICAgIHZvaWQgbWVkaWFFbmdpbmVVcGRhdGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKTsKKworICAgIC8vIFJlc3RyaWN0aW9ucyB0byBtb2RpZnkgZGVmYXVsdCBiZWhhdmlvcnMu
CisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAgICBOb1Jlc3RyaWN0
aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgPSAxIDw8IDAsCisg
ICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2UgPSAxIDw8IDEsCisgICAgICAg
IFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gPSAxIDw8IDIsCisgICAgICAgIFJlcXVp
cmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhID0gMSA8PCAzLAorICAgICAgICBSZXF1aXJlUGFnZUNv
bnNlbnRUb1Jlc3VtZU1lZGlhID0gMSA8PCA0LAorICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVG
b3JBdWRpb1JhdGVDaGFuZ2UgPSAxIDw8IDUsCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIgPSAxIDw8IDYsCisgICAgICAgIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkID0g
IDEgPDwgNywKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRvRXh0ZXJuYWxE
ZXZpY2UgPSAxIDw8IDgsCisjZW5kaWYKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgQmVo
YXZpb3JSZXN0cmljdGlvbnM7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBCZWhhdmlvclJlc3RyaWN0
aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25z
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUJlaGF2aW9y
UmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMpOworICAgIGJvb2wgaGFzQmVoYXZpb3JS
ZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgY29uc3QgeyByZXR1
cm4gcmVzdHJpY3Rpb24gJiBtX3Jlc3RyaWN0aW9uczsgfQorCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKyAgICBzaXplX3QgbWF4aW11bU1lZGlhU291cmNlQnVmZmVyU2l6ZShjb25zdCBTb3Vy
Y2VCdWZmZXImKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorCisjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKKyAgICB2b2lkIHRhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRU
aW1lckZpcmVkKCk7CisKKyAgICAvLyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50CisgICAgdmly
dHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIGJvb2wgcmVxdWlyZXNQbGF5YmFja1RhcmdldFJvdXRlTW9uaXRvcmluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5l
cnM7IH0KKyNlbmRpZgorCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7
CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQorICAgIG11dGFibGUgVGlt
ZXIgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXI7CisgICAgUmVmUHRyPE1lZGlhUGxh
eWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CisgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1Bs
YXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNQbGF5YmFja1Rh
cmdldHMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9o
YXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyB7IGZhbHNlIH07CisjZW5kaWYK
K307CisKK30KKworI2VuZGlmIC8vIE1lZGlhRWxlbWVudFNlc3Npb25faAorCisjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwMzRl
OGI4ZTFjZDM2OWM0MGUwMjdmMGZhNTNjNjEwMTdhZmM1ODcuLjA3ZjhjYmQ4ODQ3MGIyMTI4NTlk
MDM1MmEwNWRkMDBiZTQzMjVmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTI2NDgsMzQgKzI2NDgsMzQgQEAgdm9pZCBJbnRlcm5hbHM6OnNldE1lZGlhRWxlbWVudFJl
c3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEhUTUxNZWRpYVNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rp
b25zIHJlc3RyaWN0aW9ucyA9IGVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmJlaGF2aW9yUmVzdHJp
Y3Rpb25zKCk7CisgICAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMg
cmVzdHJpY3Rpb25zID0gZWxlbWVudC0+bWVkaWFTZXNzaW9uKCkuYmVoYXZpb3JSZXN0cmljdGlv
bnMoKTsKICAgICBlbGVtZW50LT5tZWRpYVNlc3Npb24oKS5yZW1vdmVCZWhhdmlvclJlc3RyaWN0
aW9uKHJlc3RyaWN0aW9ucyk7CiAKLSAgICByZXN0cmljdGlvbnMgPSBIVE1MTWVkaWFTZXNzaW9u
OjpOb1Jlc3RyaWN0aW9uczsKKyAgICByZXN0cmljdGlvbnMgPSBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpOb1Jlc3RyaWN0aW9uczsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3RyaWN0aW9uc0FycmF5
OwogICAgIHJlc3RyaWN0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCByZXN0cmljdGlvbnNB
cnJheSk7CiAgICAgZm9yIChhdXRvJiByZXN0cmljdGlvblN0cmluZyA6IHJlc3RyaWN0aW9uc0Fy
cmF5KSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywg
Ik5vUmVzdHJpY3Rpb25zIikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlh
U2Vzc2lvbjo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQiKSkK
LSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNl
ckdlc3R1cmVGb3JMb2FkOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVu
dFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQ7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVD
aGFuZ2UiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JSYXRlQ2hhbmdlOworICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2U7
CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIlJlcXVp
cmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4iKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8
PSBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuOworICAg
ICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2Vy
R2VzdHVyZUZvckZ1bGxzY3JlZW47CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0
cmljdGlvblN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhIikpCi0gICAgICAg
ICAgICByZXN0cmljdGlvbnMgfD0gSFRNTE1lZGlhU2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50
VG9Mb2FkTWVkaWE7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWE7CiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1l
TWVkaWEiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpS
ZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhOworICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWE7
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1M
TWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tl
cjsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjsKICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiV2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9u
OjpXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9u
cyB8PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsK
ICNlbmRpZgogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1JhdGVDaGFuZ2UiKSkKLSAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBIVE1MTWVkaWFTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRp
b1JhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlOwogICAgIH0KICAgICBl
bGVtZW50LT5tZWRpYVNlc3Npb24oKS5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9u
cyk7CiB9CkBAIC0yNzI3LDcgKzI3MjcsNyBAQCB2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250
ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAg
QXVkaW9Db250ZXh0OjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBjb250ZXh0
LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOwogICAgIGNvbnRleHQtPnJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0aW9ucyA9IEhUTUxNZWRpYVNl
c3Npb246Ok5vUmVzdHJpY3Rpb25zOworICAgIHJlc3RyaWN0aW9ucyA9IE1lZGlhRWxlbWVudFNl
c3Npb246Ok5vUmVzdHJpY3Rpb25zOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdHJpY3Rpb25z
QXJyYXk7CiAgICAgcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIHJlc3RyaWN0
aW9uc0FycmF5KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>