<?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>77291</bug_id>
          
          <creation_ts>2012-01-28 16:29:59 -0800</creation_ts>
          <short_desc>Add back WTFURL to WebKit</short_desc>
          <delta_ts>2012-02-11 22:32:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>544706</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-28 16:29:59 -0800</bug_when>
    <thetext>Add back what was removed by r86787.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544707</commentid>
    <comment_count>1</comment_count>
      <attachid>124457</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-28 16:40:26 -0800</bug_when>
    <thetext>Created attachment 124457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544708</commentid>
    <comment_count>2</comment_count>
      <attachid>124457</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-28 16:55:52 -0800</bug_when>
    <thetext>Comment on attachment 124457
Patch

There&apos;s still an ongoing thread on webkit-dev about this work, but I think it&apos;s fine to proceed as long as you&apos;re aware of the issues being discussed there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544710</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-28 17:40:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 124457 [details])
&gt; There&apos;s still an ongoing thread on webkit-dev about this work, but I think it&apos;s fine to proceed as long as you&apos;re aware of the issues being discussed there.

Yep, I&apos;ll wait until there is some clear path forward before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554765</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-11 19:24:50 -0800</bug_when>
    <thetext>Are you OK if I land this?

I think we have an idea of where to go from here:
-no dependency on anything else in WTF
-at some point WTFURL will have to be compiled as a static library for Chromium


Next I think I am gonna export the headers for WebCore and make an empty skeleton of KURL based on ParsedURL + a WTFString for invalid URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554766</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-11 19:30:59 -0800</bug_when>
    <thetext>That sounds like a good plan.  I&apos;m not sure we have 100% buy-in from all the stakeholders, but if you&apos;re ok proceeding knowing that risk is out there, I&apos;m happy to review your patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554788</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-11 22:32:49 -0800</bug_when>
    <thetext>Committed r107502: &lt;http://trac.webkit.org/changeset/107502&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124457</attachid>
            <date>2012-01-28 16:40:26 -0800</date>
            <delta_ts>2012-01-28 16:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77291-20120128164024.patch</filename>
            <type>text/plain</type>
            <size>94370</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjI4ZWNmNzBjYmI3OTY1MmQyNzZiYTRkZjg5NmVjYTAzZGNlNTc1Li44ZDljZDM3MTc2ZGM3MThk
ODRmMjE2ODQyZTRlNDVjZjc1MGViYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTItMDEtMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCBiYWNrIFdURlVSTCB0byBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV1RGVVJMIHdhcyByZW1vdmVkIGZy
b20gV2ViS2l0IGluIHI4Njc4Ny4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUg
YmFjayB0byBXVEYgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CisgICAgICAgIC1HdWFyZCB0
aGUgZmVhdHVyZSB3aXRoIFVTRShXVEZVUkwpLgorICAgICAgICAtQ2hhbmdlIHRoZSB0eXBlbmFt
ZSBDSEFSIHRvIENoYXJhY3RlclR5cGUgdG8gZm9sbG93IHJlY2VudCBXZWJLaXQgY29udmVudGlv
bnMuCisgICAgICAgIC1GaXggc29tZSBjb2Rpbmcgc3R5bGUgdG8gbWFrZSBjaGVjay13ZWJraXQt
c3R5bGUgaGFwcHkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi91cmwv
YXBpL1BhcnNlZFVSTC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6
UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNjaGVtZSk6
CisgICAgICAgIChXVEY6OlBhcnNlZFVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV1RGOjpQYXJz
ZWRVUkw6OnBhc3N3b3JkKToKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpob3N0KToKKyAgICAg
ICAgKFdURjo6UGFyc2VkVVJMOjpwb3J0KToKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpwYXRo
KToKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpxdWVyeSk6CisgICAgICAgIChXVEY6OlBhcnNl
ZFVSTDo6ZnJhZ21lbnQpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNlZ21lbnQpOgorICAg
ICAgICAqIHd0Zi91cmwvYXBpL1BhcnNlZFVSTC5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6Cisg
ICAgICAgIChQYXJzZWRVUkwpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNwZWMpOgorICAg
ICAgICAqIHd0Zi91cmwvYXBpL1VSTFN0cmluZy5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6Cisg
ICAgICAgIChVUkxTdHJpbmcpOgorICAgICAgICAoV1RGOjpVUkxTdHJpbmc6OlVSTFN0cmluZyk6
CisgICAgICAgIChXVEY6OlVSTFN0cmluZzo6c3RyaW5nKToKKyAgICAgICAgKiB3dGYvdXJsL3Ny
Yy9SYXdVUkxCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoUmF3VVJM
QnVmZmVyKToKKyAgICAgICAgKFdURjo6UmF3VVJMQnVmZmVyOjpSYXdVUkxCdWZmZXIpOgorICAg
ICAgICAoV1RGOjpSYXdVUkxCdWZmZXI6On5SYXdVUkxCdWZmZXIpOgorICAgICAgICAoV1RGOjpS
YXdVUkxCdWZmZXI6OnJlc2l6ZSk6CisgICAgICAgICogd3RmL3VybC9zcmMvVVJMQnVmZmVyLmg6
IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFVSTEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlVSTEJ1ZmZlcjo6VVJMQnVmZmVyKToKKyAgICAgICAgKFdURjo6VVJMQnVmZmVyOjp+VVJM
QnVmZmVyKToKKyAgICAgICAgKFdURjo6VVJMQnVmZmVyOjphdCk6CisgICAgICAgIChXVEY6OlVS
TEJ1ZmZlcjo6c2V0KToKKyAgICAgICAgKFdURjo6VVJMQnVmZmVyOjpjYXBhY2l0eSk6CisgICAg
ICAgIChXVEY6OlVSTEJ1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdURjo6VVJMQnVmZmVyOjpk
YXRhKToKKyAgICAgICAgKFdURjo6VVJMQnVmZmVyOjpzZXRMZW5ndGgpOgorICAgICAgICAoV1RG
OjpVUkxCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXVEY6OlVSTEJ1ZmZlcjo6Z3Jvdyk6Cisg
ICAgICAgICogd3RmL3VybC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdURik6CisgICAgICAgICgpOgorICAgICAgICAqIHd0Zi91cmwvc3JjL1VSTENoYXJhY3Rl
clR5cGVzLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFVSTENoYXJhY3RlclR5
cGVzKToKKyAgICAgICAgKFdURjo6VVJMQ2hhcmFjdGVyVHlwZXM6OmlzUXVlcnlDaGFyKToKKyAg
ICAgICAgKFdURjo6VVJMQ2hhcmFjdGVyVHlwZXM6OmlzSVB2NENoYXIpOgorICAgICAgICAoV1RG
OjpVUkxDaGFyYWN0ZXJUeXBlczo6aXNIZXhDaGFyKToKKyAgICAgICAgKCk6CisgICAgICAgIChX
VEY6OlVSTENoYXJhY3RlclR5cGVzOjppc0NoYXJPZlR5cGUpOgorICAgICAgICAqIHd0Zi91cmwv
c3JjL1VSTENvbXBvbmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChVUkxD
b21wb25lbnQpOgorICAgICAgICAoV1RGOjpVUkxDb21wb25lbnQ6OlVSTENvbXBvbmVudCk6Cisg
ICAgICAgIChXVEY6OlVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKToKKyAgICAgICAgKFdURjo6VVJM
Q29tcG9uZW50Ojppc1ZhbGlkKToKKyAgICAgICAgKFdURjo6VVJMQ29tcG9uZW50Ojppc05vbkVt
cHR5KToKKyAgICAgICAgKFdURjo6VVJMQ29tcG9uZW50Ojppc0VtcHR5T3JJbnZhbGlkKToKKyAg
ICAgICAgKFdURjo6VVJMQ29tcG9uZW50OjpyZXNldCk6CisgICAgICAgIChXVEY6OlVSTENvbXBv
bmVudDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlVSTENvbXBvbmVudDo6YmVnaW4pOgor
ICAgICAgICAoV1RGOjpVUkxDb21wb25lbnQ6OnNldEJlZ2luKToKKyAgICAgICAgKFdURjo6VVJM
Q29tcG9uZW50OjpsZW5ndGgpOgorICAgICAgICAoV1RGOjpVUkxDb21wb25lbnQ6OnNldExlbmd0
aCk6CisgICAgICAgIChXVEY6OlVSTENvbXBvbmVudDo6ZW5kKToKKyAgICAgICAgKiB3dGYvdXJs
L3NyYy9VUkxFc2NhcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgICgpOgor
ICAgICAgICAqIHd0Zi91cmwvc3JjL1VSTEVzY2FwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6
CisgICAgICAgIChXVEY6OmFwcGVuZFVSTEVzY2FwZWRDaGFyYWN0ZXIpOgorICAgICAgICAqIHd0
Zi91cmwvc3JjL1VSTFBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChV
UkxQYXJzZXIpOgorICAgICAgICAoKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjppc1Bvc3Np
YmxlQXV0aG9yaXR5VGVybWluYXRvcik6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6cGFyc2VB
dXRob3JpdHkpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OmV4dHJhY3RTY2hlbWUpOgorICAg
ICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNlQWZ0ZXJTY2hlbWUpOgorICAgICAgICAoV1RGOjpV
UkxQYXJzZXI6OnBhcnNlU3RhbmRhcmRVUkwpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBh
cnNlUGF0aCk6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6cGFyc2VQYXRoVVJMKToKKyAgICAg
ICAgKFdURjo6VVJMUGFyc2VyOjpwYXJzZU1haWx0b1VSTCk6CisgICAgICAgIChXVEY6OlVSTFBh
cnNlcjo6cGFyc2VQb3J0KToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpleHRyYWN0RmlsZU5h
bWUpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OmV4dHJhY3RRdWVyeUtleVZhbHVlKToKKyAg
ICAgICAgKFdURjo6VVJMUGFyc2VyOjppc1VSTFNsYXNoKToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpzaG91bGRUcmltRnJvbVVSTCk6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6dHJpbVVS
TCk6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6Y29uc2VjdXRpdmVTbGFzaGVzKToKKyAgICAg
ICAgKFdURjo6VVJMUGFyc2VyOjppc1BvcnREaWdpdCk6CisgICAgICAgIChXVEY6OlVSTFBhcnNl
cjo6bmV4dEF1dGhvcml0eVRlcm1pbmF0b3IpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBh
cnNlVXNlckluZm8pOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnBhcnNlU2VydmVySW5mbyk6
CisgICAgICAgICogd3RmL3VybC9zcmMvVVJMUXVlcnlDYW5vbmljYWxpemVyLmg6IEFkZGVkLgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKFVSTFF1ZXJ5Q2Fub25pY2FsaXplcik6CisgICAgICAg
IChXVEY6OlVSTFF1ZXJ5Q2Fub25pY2FsaXplcjo6Y2Fub25pY2FsaXplKToKKyAgICAgICAgKFdU
Rjo6VVJMUXVlcnlDYW5vbmljYWxpemVyOjppc0FsbEFTQ0lJKToKKyAgICAgICAgKFdURjo6VVJM
UXVlcnlDYW5vbmljYWxpemVyOjppc1JhdzhCaXQpOgorICAgICAgICAoV1RGOjpVUkxRdWVyeUNh
bm9uaWNhbGl6ZXI6OmFwcGVuZFJhdzhCaXRRdWVyeVN0cmluZyk6CisgICAgICAgIChXVEY6OlVS
TFF1ZXJ5Q2Fub25pY2FsaXplcjo6Y29udmVydFRvUXVlcnlFbmNvZGluZyk6CisgICAgICAgICog
d3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6OlVSTFNlZ21lbnRzOjpsZW5ndGgpOgorICAgICAgICAoV1RGOjpVUkxTZWdtZW50
czo6Y2hhcmFjdGVyc0JlZm9yZSk6CisgICAgICAgICogd3RmL3VybC9zcmMvVVJMU2VnbWVudHMu
aDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoVVJMU2VnbWVudHMpOgorICAgICAg
ICAoKToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OlVSTFNlZ21lbnRzKToKKwogMjAxMi0w
MS0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjE4Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTc0ZGJmNTA0ZGZlNTYzNWRhM2VlYmYxZDg3OWZmZDhiYmZkMTAwYS4uMWZh
NDgyOTg0ZjJlMTJjNWZlNzVlY2ZmZjgyMzRiMGZhMDJmZjdkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI5Miw2ICsyOTIsMjAgQEAKIAkJMUEwODI3NzkxNDIxNjhENzAwOTBD
Q0FDIC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTA4Mjc3NzE0MjE2OEQ3MDA5MENDQUMgLyogQmluYXJ5U2VtYXBo
b3JlLmNwcCAqLzsgfTsKIAkJMUEwODI3N0ExNDIxNjhENzAwOTBDQ0FDIC8qIEJpbmFyeVNlbWFw
aG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEw
ODI3NzgxNDIxNjhENzAwOTBDQ0FDIC8qIEJpbmFyeVNlbWFwaG9yZS5oICovOyB9OwogCQkxQUE5
RTU1MTE0OTgwOTM1MDAwMDFBOEEgLyogRnVuY3Rpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBOUU1NTAxNDk4MDkzNTAwMDAxQThBIC8qIEZ1
bmN0aW9uYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkyNjg0QjJEMzE0RDRBOUIyMDA3MkMwQjYgLyogUGFyc2VkVVJMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2ODRCMkM0MTRENEE5QjIwMDcy
QzBCNiAvKiBQYXJzZWRVUkwuY3BwICovOyB9OworCQkyNjg0QjJENDE0RDRBOUIyMDA3MkMwQjYg
LyogUGFyc2VkVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjg0QjJDNTE0RDRBOUIyMDA3MkMwQjYgLyogUGFyc2VkVVJMLmggKi87IH07CisJCTI2
ODRCMkQ1MTRENEE5QjIwMDcyQzBCNiAvKiBVUkxTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2ODRCMkM2MTRENEE5QjIwMDcyQzBCNiAvKiBV
UkxTdHJpbmcuaCAqLzsgfTsKKwkJMjY4NEIyRDYxNEQ0QTlCMjAwNzJDMEI2IC8qIFJhd1VSTEJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY4
NEIyQzgxNEQ0QTlCMjAwNzJDMEI2IC8qIFJhd1VSTEJ1ZmZlci5oICovOyB9OworCQkyNjg0QjJE
NzE0RDRBOUIyMDA3MkMwQjYgLyogVVJMQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjg0QjJDOTE0RDRBOUIyMDA3MkMwQjYgLyogVVJMQnVm
ZmVyLmggKi87IH07CisJCTI2ODRCMkQ4MTRENEE5QjIwMDcyQzBCNiAvKiBVUkxDaGFyYWN0ZXJU
eXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
Njg0QjJDQTE0RDRBOUIyMDA3MkMwQjYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuY3BwICovOyB9Owor
CQkyNjg0QjJEOTE0RDRBOUIyMDA3MkMwQjYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2ODRCMkNCMTRENEE5QjIw
MDcyQzBCNiAvKiBVUkxDaGFyYWN0ZXJUeXBlcy5oICovOyB9OworCQkyNjg0QjJEQTE0RDRBOUIy
MDA3MkMwQjYgLyogVVJMQ29tcG9uZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNjg0QjJDQzE0RDRBOUIyMDA3MkMwQjYgLyogVVJMQ29tcG9uZW50
LmggKi87IH07CisJCTI2ODRCMkRCMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxFc2NhcGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY4NEIyQ0QxNEQ0
QTlCMjAwNzJDMEI2IC8qIFVSTEVzY2FwZS5jcHAgKi87IH07CisJCTI2ODRCMkRDMTRENEE5QjIw
MDcyQzBCNiAvKiBVUkxFc2NhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2ODRCMkNFMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxFc2NhcGUuaCAqLzsg
fTsKKwkJMjY4NEIyREQxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY4NEIyQ0YxNEQ0QTlCMjAwNzJD
MEI2IC8qIFVSTFBhcnNlci5oICovOyB9OworCQkyNjg0QjJERTE0RDRBOUIyMDA3MkMwQjYgLyog
VVJMUXVlcnlDYW5vbmljYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNjg0QjJEMDE0RDRBOUIyMDA3MkMwQjYgLyogVVJMUXVlcnlDYW5vbmlj
YWxpemVyLmggKi87IH07CisJCTI2ODRCMkRGMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxTZWdtZW50
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjg0
QjJEMTE0RDRBOUIyMDA3MkMwQjYgLyogVVJMU2VnbWVudHMuY3BwICovOyB9OworCQkyNjg0QjJF
MDE0RDRBOUIyMDA3MkMwQjYgLyogVVJMU2VnbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2ODRCMkQyMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxT
ZWdtZW50cy5oICovOyB9OwogCQkyQ0ZDNUQxRTEyRjQ1QjQ4MDA0OTE0RTIgLyogQ2hhcmFjdGVy
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJD
RkM1QjdBMTJGNDQ3MTQwMDQ5MTRFMiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIw
NjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9u
LmggKi87IH07CiAJCTQxMzU5Q0Y2MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRlTWF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1OUNGNDBGREQ4
OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguY3BwICovOyB9OwpAQCAtMTA0Nyw2ICsxMDYxLDIwIEBA
CiAJCTFDOTA1MTQ1MEJBOUU4QTcwMDgxRTlEMCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2ODRCMkM0MTRENEE5QjIwMDcyQzBCNiAvKiBQ
YXJzZWRVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2Vk
VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEIyQzUxNEQ0QTlCMjAw
NzJDMEI2IC8qIFBhcnNlZFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YXJzZWRVUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEIyQzYxNEQ0QTlC
MjAwNzJDMEI2IC8qIFVSTFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVUkxTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEIyQzgxNEQ0
QTlCMjAwNzJDMEI2IC8qIFJhd1VSTEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSYXdVUkxCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4
NEIyQzkxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVUkxCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY4NEIyQ0ExNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTENoYXJhY3RlclR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTENoYXJhY3RlclR5cGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEIyQ0IxNEQ0QTlCMjAwNzJDMEI2IC8qIFVS
TENoYXJhY3RlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTENo
YXJhY3RlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2ODRCMkNDMTRE
NEE5QjIwMDcyQzBCNiAvKiBVUkxDb21wb25lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVJMQ29tcG9uZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2
ODRCMkNEMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxFc2NhcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMRXNjYXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjY4NEIyQ0UxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTEVzY2FwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxFc2NhcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjY4NEIyQ0YxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjY4NEIyRDAxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFF1ZXJ5Q2Fub25p
Y2FsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxRdWVyeUNhbm9u
aWNhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEIyRDExNEQ0QTlC
MjAwNzJDMEI2IC8qIFVSTFNlZ21lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVSTFNlZ21lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY4NEIyRDIxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFNlZ21lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFNlZ21lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJDRkM1QjdBMTJGNDQ3MTQwMDQ5MTRFMiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJOYW1lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNGNTBGREQ4OUNCMDAyMDYxODAgLyog
RGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZU1hdGguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjUsNiArMTk1Myw0MyBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkyNjg0QjJDMjE0RDRBOUIyMDA3
MkMwQjYgLyogdXJsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkyNjg0QjJDMzE0RDRBOUIyMDA3MkMwQjYgLyogYXBpICovLAorCQkJCTI2ODRCMkM3MTRE
NEE5QjIwMDcyQzBCNiAvKiBzcmMgKi8sCisJCQkpOworCQkJcGF0aCA9IHVybDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTI2ODRCMkMzMTRENEE5QjIwMDcyQzBCNiAvKiBh
cGkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI2ODRC
MkM0MTRENEE5QjIwMDcyQzBCNiAvKiBQYXJzZWRVUkwuY3BwICovLAorCQkJCTI2ODRCMkM1MTRE
NEE5QjIwMDcyQzBCNiAvKiBQYXJzZWRVUkwuaCAqLywKKwkJCQkyNjg0QjJDNjE0RDRBOUIyMDA3
MkMwQjYgLyogVVJMU3RyaW5nLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGFwaTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTI2ODRCMkM3MTRENEE5QjIwMDcyQzBCNiAvKiBz
cmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI2ODRC
MkM4MTRENEE5QjIwMDcyQzBCNiAvKiBSYXdVUkxCdWZmZXIuaCAqLywKKwkJCQkyNjg0QjJDOTE0
RDRBOUIyMDA3MkMwQjYgLyogVVJMQnVmZmVyLmggKi8sCisJCQkJMjY4NEIyQ0ExNEQ0QTlCMjAw
NzJDMEI2IC8qIFVSTENoYXJhY3RlclR5cGVzLmNwcCAqLywKKwkJCQkyNjg0QjJDQjE0RDRBOUIy
MDA3MkMwQjYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuaCAqLywKKwkJCQkyNjg0QjJDQzE0RDRBOUIy
MDA3MkMwQjYgLyogVVJMQ29tcG9uZW50LmggKi8sCisJCQkJMjY4NEIyQ0QxNEQ0QTlCMjAwNzJD
MEI2IC8qIFVSTEVzY2FwZS5jcHAgKi8sCisJCQkJMjY4NEIyQ0UxNEQ0QTlCMjAwNzJDMEI2IC8q
IFVSTEVzY2FwZS5oICovLAorCQkJCTI2ODRCMkNGMTRENEE5QjIwMDcyQzBCNiAvKiBVUkxQYXJz
ZXIuaCAqLywKKwkJCQkyNjg0QjJEMDE0RDRBOUIyMDA3MkMwQjYgLyogVVJMUXVlcnlDYW5vbmlj
YWxpemVyLmggKi8sCisJCQkJMjY4NEIyRDExNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFNlZ21lbnRz
LmNwcCAqLywKKwkJCQkyNjg0QjJEMjE0RDRBOUIyMDA3MkMwQjYgLyogVVJMU2VnbWVudHMuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gc3JjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMTEwLDYgKzIxNzUsNyBA
QAogCQkJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1bmljb2RlICovLAogCQkJCTBGRDUy
QUFDMTQzMDM1OUQwMDI2REM5RiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQk5MzVBRjQ2QjA5RTlE
OURCMDBBQ0QxRDggLyogVW51c2VkUGFyYW0uaCAqLywKKwkJCQkyNjg0QjJDMjE0RDRBOUIyMDA3
MkMwQjYgLyogdXJsICovLAogCQkJCUUxN0ZGNzcwMTEyMTMxRDIwMDA3NkExOSAvKiBWYWx1ZUNo
ZWNrLmggKi8sCiAJCQkJNjU5MkMzMTYwOThCN0RFMTAwMDNENEY2IC8qIFZlY3Rvci5oICovLAog
CQkJCTY1OTJDMzE3MDk4QjdERTEwMDAzRDRGNiAvKiBWZWN0b3JUcmFpdHMuaCAqLywKQEAgLTI5
MzQsNiArMzAwMCw3IEBACiAJCQkJNzkzNEJCN0QxMzYxOTc5NDAwQ0I5OUExIC8qIFBhcmFsbGVs
Sm9ic0dlbmVyaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MzRCQjdFMTM2MTk3OTQwMENCOTlB
MSAvKiBQYXJhbGxlbEpvYnNMaWJkaXNwYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkzNEJC
N0YxMzYxOTc5NDAwQ0I5OUExIC8qIFBhcmFsbGVsSm9ic09wZW5NUC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMjY4NEIyRDQxNEQ0QTlCMjAwNzJDMEI2IC8qIFBhcnNlZFVSTC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NEIwRTE2RjVDRDAwQjM0NDYwIC8qIFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMwNTJDMzUwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTMwM0Q2NDE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5NTcsNiArMzAyNCw3IEBACiAJCQkJMTQ3Qjg0NjMwRTZERTZC
MTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4RkE1
QkMwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhFMjc5RTkwRUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTI2ODRCMkQ2MTRENEE5QjIwMDcyQzBCNiAvKiBSYXdVUkxCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOTYzQjI3MTNGNzUzQkIwMDAyRDlCMiAvKiBSZWRCbGFja1RyZWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZDb3Vu
dGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MEQzNDY5QzBFMjg1MjgwMDA5NDkyRUUgLyogUmVm
Q291bnRlZExlYWtDb3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNDYsNiArMzExNCwxNCBA
QAogCQkJCUJDMThDNDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ1MkFBRTE0MzAzNUEwMDAyNkRDOUYgLyogVW5pb25GaW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFyYW0uaCBp
biBIZWFkZXJzICovLAorCQkJCTI2ODRCMkQ1MTRENEE5QjIwMDcyQzBCNiAvKiBVUkxTdHJpbmcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTI2ODRCMkQ3MTRENEE5QjIwMDcyQzBCNiAvKiBVUkxCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTI2ODRCMkQ5MTRENEE5QjIwMDcyQzBCNiAvKiBVUkxD
aGFyYWN0ZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY4NEIyREExNEQ0QTlCMjAwNzJD
MEI2IC8qIFVSTENvbXBvbmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY4NEIyREMxNEQ0QTlC
MjAwNzJDMEI2IC8qIFVSTEVzY2FwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY4NEIyREQxNEQ0
QTlCMjAwNzJDMEI2IC8qIFVSTFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY4NEIyREUx
NEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFF1ZXJ5Q2Fub25pY2FsaXplci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMjY4NEIyRTAxNEQ0QTlCMjAwNzJDMEI2IC8qIFVSTFNlZ21lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQ3NjBFMTZGNUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDhEREE1QzExMjY0NjMxNzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NzBFMTZGNUNEMDBCMzQ0NjAgLyogVVRGOC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNTc1LDYgKzM2NTEsNyBAQAogCQkJCTE0RkZGOThDMTJCRkZGNzUw
MDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTRCM0VGMDYxMkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3OTM0QkI3QzEzNjE5Nzk0MDBDQjk5QTEgLyogUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyNjg0QjJEMzE0RDRBOUIyMDA3MkMwQjYgLyogUGFyc2VkVVJM
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBh
cnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5
NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzYyMCw2ICszNjk3LDkg
QEAKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNGMEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMgLyog
VHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjg0QjJEODE0RDRBOUIyMDA3MkMw
QjYgLyogVVJMQ2hhcmFjdGVyVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjY4NEIyREIx
NEQ0QTlCMjAwNzJDMEI2IC8qIFVSTEVzY2FwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjg0
QjJERjE0RDRBOUIyMDA3MkMwQjYgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ0NjlERUUxMDdFQzdFNzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEODJFOTAxNDIwN0E1RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA5MGRlYmQ5MTIw
MmQ0ODcwZWM2NjFkMThhN2JmNjlmY2JkOTgyOWE3Li40MTFkNGM5ZDA1MGVlOTlkNmIwY2JhMjIw
MWQ2ZGYzYjg5ZmZlZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0x
MTY3LDQgKzExNjcsOCBAQAogI2RlZmluZSBFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkg
MQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChXVEZfVVNFX1dURlVSTCkKKyNkZWZpbmUgV1RGX1VT
RV9XVEZVUkwgMAorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYzE1MTkxMzYyMzlhZjU4MDcwNGEyYjg1OTY0NDEyOWU2MDZkYjc3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlZFVSTC5oIgorCisjaWYg
VVNFKFdURlVSTCkKKworI2luY2x1ZGUgIlVSTENvbXBvbmVudC5oIgorI2luY2x1ZGUgIlVSTFBh
cnNlci5oIgorCituYW1lc3BhY2UgV1RGIHsKKworUGFyc2VkVVJMOjpQYXJzZWRVUkwoY29uc3Qg
VVJMU3RyaW5nJiBzcGVjKQorICAgIDogbV9zcGVjKHNwZWMpCit7CisgICAgLy8gRklYTUU6IEhh
bmRsZSBub24tc3RhbmRhcmQgVVJMcy4KKyAgICBpZiAoc3BlYy5zdHJpbmcoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBVUkxQYXJzZXI8VUNoYXI+OjpwYXJzZVN0YW5kYXJkVVJM
KHNwZWMuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBzcGVjLnN0cmluZygpLmxlbmd0aCgpLCBtX3Nl
Z21lbnRzKTsKK30KKworU3RyaW5nIFBhcnNlZFVSTDo6c2NoZW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnNjaGVtZSk7Cit9CisKK1N0cmluZyBQYXJzZWRVUkw6
OnVzZXJuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnVzZXJu
YW1lKTsKK30KKworU3RyaW5nIFBhcnNlZFVSTDo6cGFzc3dvcmQoKSBjb25zdAoreworICAgIHJl
dHVybiBzZWdtZW50KG1fc2VnbWVudHMucGFzc3dvcmQpOworfQorCitTdHJpbmcgUGFyc2VkVVJM
Ojpob3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLmhvc3QpOwor
fQorCitTdHJpbmcgUGFyc2VkVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VnbWVu
dChtX3NlZ21lbnRzLnBvcnQpOworfQorCitTdHJpbmcgUGFyc2VkVVJMOjpwYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLnBhdGgpOworfQorCitTdHJpbmcgUGFy
c2VkVVJMOjpxdWVyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlZ21lbnQobV9zZWdtZW50cy5x
dWVyeSk7Cit9CisKK1N0cmluZyBQYXJzZWRVUkw6OmZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2VnbWVudChtX3NlZ21lbnRzLmZyYWdtZW50KTsKK30KKworU3RyaW5nIFBhcnNlZFVS
TDo6c2VnbWVudChjb25zdCBVUkxDb21wb25lbnQmIGNvbXBvbmVudCkgY29uc3QKK3sKKyAgICBp
ZiAoIWNvbXBvbmVudC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gbV9zcGVjLnN0cmluZygpLnN1YnN0cmluZyhjb21wb25lbnQuYmVnaW4oKSwgY29tcG9u
ZW50Lmxlbmd0aCgpKTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKFdURlVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjM1
ODk1NjRhYjk4NDAwODdmOWJlYWE0YzI1YTQ2OTM5ZWI3M2M4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUGFyc2VkVVJMX2gKKyNkZWZpbmUgUGFyc2VkVVJMX2gKKworI2lmIFVTRShXVEZVUkwp
CisKKyNpbmNsdWRlICJVUkxTZWdtZW50cy5oIgorI2luY2x1ZGUgIlVSTFN0cmluZy5oIgorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMQ29tcG9uZW50OworCitjbGFzcyBQYXJzZWRVUkwg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFBhcnNlZFVSTChjb25zdCBVUkxTdHJpbmcmKTsKKwor
ICAgIC8vIEZJWE1FOiBBZGQgYSBtZXRob2QgZm9yIHBhcnNpbmcgbm9uLWNhbm9uaWNhbGl6ZWQg
VVJMcy4KKworICAgIFN0cmluZyBzY2hlbWUoKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlcm5hbWUo
KSBjb25zdDsKKyAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICBTdHJpbmcgaG9zdCgp
IGNvbnN0OworICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHBhdGgoKSBjb25z
dDsKKyAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKKyAgICBTdHJpbmcgZnJhZ21lbnQoKSBjb25z
dDsKKworICAgIFVSTFN0cmluZyBzcGVjKCkgeyByZXR1cm4gbV9zcGVjOyB9CisKK3ByaXZhdGU6
CisgICAgaW5saW5lIFN0cmluZyBzZWdtZW50KGNvbnN0IFVSTENvbXBvbmVudCYpIGNvbnN0Owor
CisgICAgVVJMU3RyaW5nIG1fc3BlYzsKKyAgICBVUkxTZWdtZW50cyBtX3NlZ21lbnRzOworfTsK
KworfQorCisjZW5kaWYgLy8gVVNFKFdURlVSTCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI5ZjUxZTJmYmUw
ODY2NzFiNmIwZjNhZGM3OTk1ODY1ZjIwMmUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9VUkxTdHJpbmcuaApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVS
TFN0cmluZ19oCisjZGVmaW5lIFVSTFN0cmluZ19oCisKKyNpZiBVU0UoV1RGVVJMKQorCisjaW5j
bHVkZSAiV1RGU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBVUkxTdHJpbmcgcmVw
cmVzZW50cyBhIHN0cmluZyB0aGF0J3MgYSBjYW5vbmljYWxpemVkIFVSTC4KK2NsYXNzIFVSTFN0
cmluZyB7CitwdWJsaWM6CisgICAgVVJMU3RyaW5nKCkgeyB9CisKKyAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nO30KKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgUGFyc2VkVVJMOworCisgICAgLy8gVVJMU3RyaW5nIGNhbiBvbmx5IGJlIGNvbnN0
cnVjdGVkIGJ5IGEgUGFyc2VkVVJMLgorICAgIGV4cGxpY2l0IFVSTFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKKyAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCisgICAgeworICAgIH0KKwor
ICAgIFN0cmluZyBtX3N0cmluZzsKK307CisKK30KKworI2VuZGlmIC8vIFVTRShXVEZVUkwpCisK
KyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMv
UmF3VVJMQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvUmF3VVJM
QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlhN2YxOGFmNDViMjkzY2RiNTM0MjRkNTA1ZTE0ZmQ3OThm
MjkyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3Ny
Yy9SYXdVUkxCdWZmZXIuaApAQCAtMCwwICsxLDc0IEBACisvLyBDb3B5cmlnaHQgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmbmRlZiBSYXdVUkxCdWZmZXJfaAorI2RlZmluZSBSYXdV
UkxCdWZmZXJfaAorCisjaWYgVVNFKFdURlVSTCkKKworI2luY2x1ZGUgIlVSTEJ1ZmZlci5oIgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVUkxC
dWZmZXIgdXNpbmcgbmV3W10uIFRoaXMgY2xhc3MKKy8vIGFsc28gc3VwcG9ydHMgYSBzdGF0aWMg
YnVmZmVyIHNvIGlmIGl0IGlzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIG1vc3QKKy8vIFVSTHMg
Y2FuIGJlIGNhbm9uaWNhbGl6ZWQgd2l0aCBubyBoZWFwIGFsbG9jYXRpb25zLgordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgaW50IGlubGluZUNhcGFjaXR5ID0gMTAyND4KK2NsYXNz
IFJhd1VSTEJ1ZmZlciA6IHB1YmxpYyBVUkxCdWZmZXI8Q2hhcmFjdGVyVHlwZT4geworcHVibGlj
OgorICAgIFJhd1VSTEJ1ZmZlcigpIDogVVJMQnVmZmVyPENoYXJhY3RlclR5cGU+KCkKKyAgICB7
CisgICAgICAgIHRoaXMtPm1fYnVmZmVyID0gbV9pbmxpbmVCdWZmZXI7CisgICAgICAgIHRoaXMt
Pm1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SYXdV
UkxCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMtPm1fYnVmZmVyICE9IG1faW5saW5l
QnVmZmVyKQorICAgICAgICAgICAgZGVsZXRlW10gdGhpcy0+bV9idWZmZXI7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHJlc2l6ZShpbnQgc2l6ZSkKKyAgICB7CisgICAgICAgIENoYXJhY3Rl
clR5cGUqIG5ld0J1ZmZlciA9IG5ldyBDaGFyYWN0ZXJUeXBlW3NpemVdOworICAgICAgICBtZW1j
cHkobmV3QnVmZmVyLCB0aGlzLT5tX2J1ZmZlciwgc2l6ZW9mKENoYXJhY3RlclR5cGUpICogKHRo
aXMtPm1fbGVuZ3RoIDwgc2l6ZSA/IHRoaXMtPm1fbGVuZ3RoIDogc2l6ZSkpOworICAgICAgICBp
ZiAodGhpcy0+bV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCisgICAgICAgICAgICBkZWxldGVb
XSB0aGlzLT5tX2J1ZmZlcjsKKyAgICAgICAgdGhpcy0+bV9idWZmZXIgPSBuZXdCdWZmZXI7Cisg
ICAgICAgIHRoaXMtPm1fY2FwYWNpdHkgPSBzaXplOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IENoYXJhY3RlclR5cGUgbV9pbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNpdHldOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoV1RGVVJMKQorCisjZW5kaWYgLy8gUmF3
VVJMQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3Ny
Yy9VUkxCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxCdWZm
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NGE0Zjg1YzI2ZGFhMjIwMDZlNGJkNjc2NjI4NWFhNjAyNzQ4NTlj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VS
TEJ1ZmZlci5oCkBAIC0wLDAgKzEsMTQwIEBACisvLyBDb3B5cmlnaHQgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmbmRlZiBVUkxCdWZmZXJfaAorI2RlZmluZSBVUkxCdWZmZXJfaAor
CisjaWYgVVNFKFdURlVSTCkKKworbmFtZXNwYWNlIFdURiB7CisKKy8vIEJhc2UgY2xhc3MgZm9y
IHRoZSBjYW5vbmljYWxpemVyIG91dHB1dCwgdGhpcyBtYWludGFpbnMgYSBidWZmZXIgYW5kCisv
LyBzdXBwb3J0cyBzaW1wbGUgcmVzaXppbmcgYW5kIGFwcGVuZCBvcGVyYXRpb25zIG9uIGl0Lgor
Ly8KKy8vIEl0IGlzIFZFUlkgSU1QT1JUQU5UIHRoYXQgbm8gdmlydHVhbCBmdW5jdGlvbiBjYWxs
cyBiZSBtYWRlIG9uIHRoZSBjb21tb24KKy8vIGNvZGUgcGF0aC4gV2Ugb25seSBoYXZlIHR3byB2
aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCB0aGUgZGVzdHJ1Y3RvciBhbmQgYQorLy8gcmVzaXplIGZ1
bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGV4aXN0aW5nIGJ1ZmZlciBpcyBub3QgYmln
IGVub3VnaC4KKy8vIFRoZSBkZXJpdmVkIGNsYXNzIGlzIHRoZW4gaW4gY2hhcmdlIG9mIHNldHRp
bmcgdXAgb3VyIGJ1ZmZlciB3aGljaCB3ZSB3aWxsCisvLyBtYW5hZ2UuCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorY2xhc3MgVVJMQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBVUkxC
dWZmZXIoKSA6IG1fYnVmZmVyKDApLCBtX2NhcGFjaXR5KDApLCBtX2xlbmd0aCgwKSB7IH0KKyAg
ICB2aXJ0dWFsIH5VUkxCdWZmZXIoKSB7IH0KKworICAgIC8vIEltcGxlbWVudGVkIHRvIHJlc2l6
ZSB0aGUgYnVmZmVyLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCB1cGRhdGUgdGhlIGJ1ZmZlcgorICAg
IC8vIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIG5ldyBidWZmZXIsIGFuZCBhbnkgb2xkIGRhdGEg
dXAgdG8gfG1fbGVuZ3RofCBpbgorICAgIC8vIHRoZSBidWZmZXIgbXVzdCBiZSBjb3BpZWQgb3Zl
ci4KKyAgICAvLworICAgIC8vIFRoZSBuZXcgc2l6ZSBtdXN0IGJlIGxhcmdlciB0aGFuIG1fY2Fw
YWNpdHkuCisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShpbnQpID0gMDsKKworICAgIGlubGluZSBj
aGFyIGF0KGludCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyW29mZnNldF07IH0KKyAg
ICBpbmxpbmUgdm9pZCBzZXQoaW50IG9mZnNldCwgQ2hhcmFjdGVyVHlwZSBjaCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiBBZGQgQVNTRVJUKG9mZnNldCA8IGxlbmd0aCgpKTsKKyAgICAgICAg
bV9idWZmZXJbb2Zmc2V0XSA9IGNoOworICAgIH0KKworICAgIC8vIFJldHVybnMgdGhlIGN1cnJl
bnQgY2FwYWNpdHkgb2YgdGhlIGJ1ZmZlci4gVGhlIGxlbmd0aCgpIGlzIHRoZSBudW1iZXIgb2YK
KyAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBiZWVuIGRlY2xhcmVkIHRvIGJlIHdyaXR0ZW4s
IGJ1dCB0aGUgY2FwYWNpdHkoKSBpcworICAgIC8vIHRoZSBudW1iZXIgdGhhdCBjYW4gYmUgd3Jp
dHRlbiB3aXRob3V0IHJlYWxsb2NhdGlvbi4gSWYgdGhlIGNhbGxlciBtdXN0CisgICAgLy8gd3Jp
dGUgbWFueSBjaGFyYWN0ZXJzIGF0IG9uY2UsIGl0IGNhbiBtYWtlIHN1cmUgdGhlcmUgaXMgZW5v
dWdoIGNhcGFjaXR5LAorICAgIC8vIHdyaXRlIHRoZSBkYXRhLCB0aGVuIHVzZSBzZXRMZW5ndGgo
KSB0byBkZWNsYXJlIHRoZSBuZXcgbGVuZ3RoKCkuCisgICAgaW50IGNhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9jYXBhY2l0eTsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aDsgfQorCisgICAgLy8gVGhlIG91dHB1dCB3aWxsIE5PVCBiZSAwLXRlcm1pbmF0ZWQu
IENhbGwgbGVuZ3RoKCkgdG8gZ2V0IHRoZSBsZW5ndGguCisgICAgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgQ2hhcmFjdGVyVHlwZSog
ZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisKKyAgICAvLyBTaG9ydGVucyB0aGUgVVJMIHRv
IHRoZSBuZXcgbGVuZ3RoLiBVc2VkIGZvciAiYmFja2luZyB1cCIgd2hlbiBwcm9jZXNzaW5nCisg
ICAgLy8gcmVsYXRpdmUgcGF0aHMuIFRoaXMgY2FuIGFsc28gYmUgdXNlZCBpZiBhbiBleHRlcm5h
bCBmdW5jdGlvbiB3cml0ZXMgYSBsb3QKKyAgICAvLyBvZiBkYXRhIHRvIHRoZSBidWZmZXIgKHdo
ZW4gdXNpbmcgdGhlICJSYXciIHZlcnNpb24gYmVsb3cpIGJleW9uZCB0aGUgZW5kLAorICAgIC8v
IHRvIGRlY2xhcmUgdGhlIG5ldyBsZW5ndGguCisgICAgdm9pZCBzZXRMZW5ndGgoaW50IGxlbmd0
aCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQVNTRVJUKGxlbmd0aCA8IGNhcGFjaXR5
KCkpOworICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlz
IHRoZSBtb3N0IHBlcmZvcm1hbmNlIGNyaXRpY2FsIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyBjYWxs
ZWQgZm9yCisgICAgLy8gZXZlcnkgY2hhcmFjdGVyLgorICAgIHZvaWQgYXBwZW5kKENoYXJhY3Rl
clR5cGUgY2gpCisgICAgeworICAgICAgICAvLyBJbiBWQzIwMDUsIHB1dHRpbmcgdGhpcyBjb21t
b24gY2FzZSBmaXJzdCBzcGVlZHMgdXAgZXhlY3V0aW9uCisgICAgICAgIC8vIGRyYW1hdGljYWxs
eSBiZWNhdXNlIHRoaXMgYnJhbmNoIGlzIHByZWRpY3RlZCBhcyB0YWtlbi4KKyAgICAgICAgaWYg
KG1fbGVuZ3RoIDwgbV9jYXBhY2l0eSkgeworICAgICAgICAgICAgbV9idWZmZXJbbV9sZW5ndGhd
ID0gY2g7CisgICAgICAgICAgICArK21fbGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFncm93KDEpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIG1fYnVmZmVyW21fbGVuZ3RoXSA9IGNoOworICAgICAgICArK21fbGVuZ3RoOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0ciwgaW50IHN0ckxl
bmd0aCkKKyAgICB7CisgICAgICAgIGlmIChtX2xlbmd0aCArIHN0ckxlbmd0aCA+IG1fY2FwYWNp
dHkpIHsKKyAgICAgICAgICAgIGlmICghZ3JvdyhtX2xlbmd0aCArIHN0ckxlbmd0aCAtIG1fY2Fw
YWNpdHkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHN0ckxlbmd0aDsgaSsrKQorICAgICAgICAgICAgbV9idWZmZXJbbV9s
ZW5ndGggKyBpXSA9IHN0cltpXTsKKyAgICAgICAgbV9sZW5ndGggKz0gc3RyTGVuZ3RoOworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVmZmVyIGNvdWxk
IGJlIHJlc2l6ZWQsIGZhbHNlIG9uIE9PTS4KKyAgICBib29sIGdyb3coaW50IG1pbmltdW1BZGRp
dGlvbmFsQ2FwYWNpdHkpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1D
YXBhY2l0eSA9IDE2OworICAgICAgICBpbnQgbmV3Q2FwYWNpdHkgPSBtX2NhcGFjaXR5ID8gbV9j
YXBhY2l0eSA6IG1pbmltdW1DYXBhY2l0eTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KG5ld0NhcGFjaXR5ID49ICgxIDw8IDMwKSkgLy8gUHJldmVudCBvdmVyZmxvdyBiZWxvdy4KKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBuZXdDYXBhY2l0eSAqPSAy
OworICAgICAgICB9IHdoaWxlIChuZXdDYXBhY2l0eSA8IG1fY2FwYWNpdHkgKyBtaW5pbXVtQWRk
aXRpb25hbENhcGFjaXR5KTsKKyAgICAgICAgcmVzaXplKG5ld0NhcGFjaXR5KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQ2hhcmFjdGVyVHlwZSogbV9idWZmZXI7CisgICAg
aW50IG1fY2FwYWNpdHk7CisgICAgaW50IG1fbGVuZ3RoOyAvLyBVc2VkIGNoYXJhY3RlcnMgaW4g
dGhlIGJ1ZmZlci4KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVNFKFdU
RlVSTCkKKworI2VuZGlmIC8vIFVSTEJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3VybC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENoYXJhY3RlclR5cGVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NTZlNzIwN2NjNWU2NmRiYTk3OTZiZjYxNjMxMWI1NzcyZmMzNGRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENoYXJhY3RlclR5cGVzLmNw
cApAQCAtMCwwICsxLDE3NyBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxDaGFyYWN0ZXJUeXBlcy5o
IgorCisjaWYgVVNFKFdURlVSTCkKKworbmFtZXNwYWNlIFdURiB7CisKK2NvbnN0IHVuc2lnbmVk
IGNoYXIgVVJMQ2hhcmFjdGVyVHlwZXM6OmNoYXJhY3RlclR5cGVUYWJsZVsweDEwMF0gPSB7Cisg
ICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3Rlciwg
SW52YWxpZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVy
LCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0
ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIs
CisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3Rl
ciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHgwMCAtIDB4MGYKKyAgICBJbnZhbGlkQ2hhcmFjdGVy
LCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAor
ICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIs
IEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3Rl
ciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFj
dGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVy
LCAvLyAweDEwIC0gMHgxZgorICAgIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4MjAgICcgJyAoZXNj
YXBlIHNwYWNlcyBpbiBxdWVyaWVzKQorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFy
YWN0ZXIsIC8vIDB4MjEgICEKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCAvLyAweDIyICAiCisgICAg
SW52YWxpZENoYXJhY3RlciwgLy8gMHgyMyAgIyAgKGludmFsaWQgaW4gcXVlcnkgc2luY2UgaXQg
bWFya3MgdGhlIHJlZikKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAv
LyAweDI0ICAkCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHgy
NSAgJQorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4MjYgICYK
KyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDI3ICAnCisgICAg
UXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHgyOCAgKAorICAgIFF1ZXJ5
Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4MjkgICkKKyAgICBRdWVyeUNoYXJh
Y3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDJhICAqCisgICAgUXVlcnlDaGFyYWN0ZXIg
fCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHgyYiAgKworICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNl
ckluZm9DaGFyYWN0ZXIsIC8vIDB4MmMgICwKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZv
Q2hhcmFjdGVyLCAvLyAweDJkICAtCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJh
Y3RlciB8IElQdjRDaGFyYWN0ZXIsIC8vIDB4MmUgIC4KKyAgICBRdWVyeUNoYXJhY3RlciwgLy8g
MHgyZiAgLworICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hh
cmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVjaW1hbENoYXJhY3RlciB8IE9jdGFsQ2hhcmFjdGVy
LCAvLyAweDMwICAwCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQ
djRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIgfCBEZWNpbWFsQ2hhcmFjdGVyIHwgT2N0YWxDaGFy
YWN0ZXIsIC8vIDB4MzEgIDEKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVy
IHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8IERlY2ltYWxDaGFyYWN0ZXIgfCBPY3Rh
bENoYXJhY3RlciwgLy8gMHgzMiAgMgorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFy
YWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVjaW1hbENoYXJhY3RlciB8
IE9jdGFsQ2hhcmFjdGVyLCAvLyAweDMzICAzCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5m
b0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIgfCBEZWNpbWFsQ2hhcmFj
dGVyIHwgT2N0YWxDaGFyYWN0ZXIsIC8vIDB4MzQgIDQKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVz
ZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8IERlY2ltYWxD
aGFyYWN0ZXIgfCBPY3RhbENoYXJhY3RlciwgLy8gMHgzNSAgNQorICAgIFF1ZXJ5Q2hhcmFjdGVy
IHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyIHwgRGVj
aW1hbENoYXJhY3RlciB8IE9jdGFsQ2hhcmFjdGVyLCAvLyAweDM2ICA2CisgICAgUXVlcnlDaGFy
YWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIg
fCBEZWNpbWFsQ2hhcmFjdGVyIHwgT2N0YWxDaGFyYWN0ZXIsIC8vIDB4MzcgIDcKKyAgICBRdWVy
eUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJh
Y3RlciB8IERlY2ltYWxDaGFyYWN0ZXIsIC8vIDB4MzggIDgKKyAgICBRdWVyeUNoYXJhY3RlciB8
IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciB8IERlY2lt
YWxDaGFyYWN0ZXIsIC8vIDB4MzkgIDkKKyAgICBRdWVyeUNoYXJhY3RlciwgLy8gMHgzYSAgOgor
ICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDNiICA7CisgICAgSW52YWxpZENoYXJhY3RlciwgLy8g
MHgzYyAgPAorICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDNkICA9CisgICAgSW52YWxpZENoYXJh
Y3RlciwgLy8gMHgzZSAgPgorICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDNmICA/CisgICAgUXVl
cnlDaGFyYWN0ZXIsIC8vIDB4NDAgIEAKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hh
cmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciwgLy8gMHg0MSAgQQorICAgIFF1
ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hh
cmFjdGVyLCAvLyAweDQyICBCCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3Rl
ciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8vIDB4NDMgIEMKKyAgICBRdWVyeUNo
YXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENoYXJhY3Rl
ciwgLy8gMHg0NCAgRAorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJ
UHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyLCAvLyAweDQ1ICBFCisgICAgUXVlcnlDaGFyYWN0
ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8v
IDB4NDYgIEYKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDQ3
ICBHCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg0OCAgSAor
ICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NDkgIEkKKyAgICBR
dWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDRhICBKCisgICAgUXVlcnlD
aGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg0YiAgSworICAgIFF1ZXJ5Q2hhcmFj
dGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NGMgIEwKKyAgICBRdWVyeUNoYXJhY3RlciB8
IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDRkICBNCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2Vy
SW5mb0NoYXJhY3RlciwgLy8gMHg0ZSAgTgorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9D
aGFyYWN0ZXIsIC8vIDB4NGYgIE8KKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFj
dGVyLCAvLyAweDUwICBQCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3Rlciwg
Ly8gMHg1MSAgUQorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4
NTIgIFIKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDUzICBT
CisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1NCAgVAorICAg
IFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NTUgIFUKKyAgICBRdWVy
eUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDU2ICBWCisgICAgUXVlcnlDaGFy
YWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1NyAgVworICAgIFF1ZXJ5Q2hhcmFjdGVy
IHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyLCAvLyAweDU4ICBYCisgICAgUXVl
cnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1OSAgWQorICAgIFF1ZXJ5Q2hh
cmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NWEgIFoKKyAgICBRdWVyeUNoYXJhY3Rl
ciwgLy8gMHg1YiAgWworICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDVjICAnXCcKKyAgICBRdWVy
eUNoYXJhY3RlciwgLy8gMHg1ZCAgXQorICAgIFF1ZXJ5Q2hhcmFjdGVyLCAvLyAweDVlICBeCisg
ICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg1ZiAgXworICAgIFF1
ZXJ5Q2hhcmFjdGVyLCAvLyAweDYwICBgCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0No
YXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0ZXIsIC8vIDB4NjEgIGEKKyAgICBR
dWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciB8IEhleENo
YXJhY3RlciwgLy8gMHg2MiAgYgorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0
ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyLCAvLyAweDYzICBjCisgICAgUXVlcnlD
aGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciB8IElQdjRDaGFyYWN0ZXIgfCBIZXhDaGFyYWN0
ZXIsIC8vIDB4NjQgIGQKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwg
SVB2NENoYXJhY3RlciB8IEhleENoYXJhY3RlciwgLy8gMHg2NSAgZQorICAgIFF1ZXJ5Q2hhcmFj
dGVyIHwgVXNlckluZm9DaGFyYWN0ZXIgfCBJUHY0Q2hhcmFjdGVyIHwgSGV4Q2hhcmFjdGVyLCAv
LyAweDY2ICBmCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg2
NyAgZworICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NjggIGgK
KyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDY5ICBpCisgICAg
UXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg2YSAgagorICAgIFF1ZXJ5
Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NmIgIGsKKyAgICBRdWVyeUNoYXJh
Y3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDZjICBsCisgICAgUXVlcnlDaGFyYWN0ZXIg
fCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg2ZCAgbQorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNl
ckluZm9DaGFyYWN0ZXIsIC8vIDB4NmUgIG4KKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZv
Q2hhcmFjdGVyLCAvLyAweDZmICBvCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJh
Y3RlciwgLy8gMHg3MCAgcAorICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIs
IC8vIDB4NzEgIHEKKyAgICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAw
eDcyICByCisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg3MyAg
cworICAgIFF1ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NzQgIHQKKyAg
ICBRdWVyeUNoYXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDc1ICB1CisgICAgUXVl
cnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJhY3RlciwgLy8gMHg3NiAgdgorICAgIFF1ZXJ5Q2hh
cmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NzcgIHcKKyAgICBRdWVyeUNoYXJhY3Rl
ciB8IFVzZXJJbmZvQ2hhcmFjdGVyIHwgSVB2NENoYXJhY3RlciwgLy8gMHg3OCAgeAorICAgIFF1
ZXJ5Q2hhcmFjdGVyIHwgVXNlckluZm9DaGFyYWN0ZXIsIC8vIDB4NzkgIHkKKyAgICBRdWVyeUNo
YXJhY3RlciB8IFVzZXJJbmZvQ2hhcmFjdGVyLCAvLyAweDdhICB6CisgICAgUXVlcnlDaGFyYWN0
ZXIsIC8vIDB4N2IgIHsKKyAgICBRdWVyeUNoYXJhY3RlciwgLy8gMHg3YyAgfAorICAgIFF1ZXJ5
Q2hhcmFjdGVyLCAvLyAweDdkICB9CisgICAgUXVlcnlDaGFyYWN0ZXIgfCBVc2VySW5mb0NoYXJh
Y3RlciwgLy8gMHg3ZSAgfgorICAgIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4N2YKKyAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJ
bnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCAvLyAweDgwIC0gMHg4ZgorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4
OTAgLSAweDlmCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHhhMCAtIDB4YWYKKyAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJ
bnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCAvLyAweGIwIC0gMHhiZgorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4
YzAgLSAweGNmCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgLy8gMHhkMCAtIDB4ZGYKKyAgICBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlk
Q2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52YWxpZENoYXJhY3RlciwgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwKKyAgICBJ
bnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCAvLyAweGUwIC0gMHhlZgorICAgIEludmFsaWRDaGFyYWN0ZXIsIEludmFs
aWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsCisgICAgSW52
YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxpZENoYXJhY3RlciwgSW52YWxp
ZENoYXJhY3RlciwKKyAgICBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLCBJbnZh
bGlkQ2hhcmFjdGVyLCBJbnZhbGlkQ2hhcmFjdGVyLAorICAgIEludmFsaWRDaGFyYWN0ZXIsIElu
dmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIEludmFsaWRDaGFyYWN0ZXIsIC8vIDB4
ZjAgLSAweGZmCit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoV1RGVVJMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENoYXJhY3RlclR5cGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMQ2hhcmFjdGVyVHlwZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZWRiOThjYTIwMzllYzRlNjg2N2EzNmY3NmY4MTIyZDBlZmMwNDdjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENoYXJhY3Rl
clR5cGVzLmgKQEAgLTAsMCArMSw2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyNpZm5kZWYgVVJMQ2hhcmFjdGVyVHlwZXNfaAorI2RlZmluZSBVUkxDaGFy
YWN0ZXJUeXBlc19oCisKKyNpZiBVU0UoV1RGVVJMKQorCituYW1lc3BhY2UgV1RGIHsKKworY2xh
c3MgVVJMQ2hhcmFjdGVyVHlwZXMgeworcHVibGljOgorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1F1ZXJ5Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGlzQ2hhck9mVHlwZShjLCBRdWVy
eUNoYXJhY3Rlcik7IH0KKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNJUHY0Q2hhcih1bnNpZ25l
ZCBjaGFyIGMpIHsgcmV0dXJuIGlzQ2hhck9mVHlwZShjLCBJUHY0Q2hhcmFjdGVyKTsgfQorICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0hleENoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBp
c0NoYXJPZlR5cGUoYywgSGV4Q2hhcmFjdGVyKTsgfQorCitwcml2YXRlOgorICAgIGVudW0gQ2hh
clR5cGVzIHsKKyAgICAgICAgSW52YWxpZENoYXJhY3RlciA9IDAsCisgICAgICAgIFF1ZXJ5Q2hh
cmFjdGVyID0gMSA8PCAwLAorICAgICAgICBVc2VySW5mb0NoYXJhY3RlciA9IDEgPDwgMSwKKyAg
ICAgICAgSVB2NENoYXJhY3RlciA9IDEgPDwgMiwKKyAgICAgICAgSGV4Q2hhcmFjdGVyID0gMSA8
PCAzLAorICAgICAgICBEZWNpbWFsQ2hhcmFjdGVyID0gMSA8PCA0LAorICAgICAgICBPY3RhbENo
YXJhY3RlciA9IDEgPDwgNSwKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIgY2hhcmFjdGVyVHlwZVRhYmxlWzB4MTAwXTsKKworICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0NoYXJPZlR5cGUodW5zaWduZWQgY2hhciBjLCBDaGFyVHlwZXMgdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIShjaGFyYWN0ZXJUeXBlVGFibGVbY10gJiB0eXBlKTsKKyAgICB9Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBVU0UoV1RGVVJMKQorCisjZW5kaWYgLy8gVVJMQ2hhcmFjdGVyVHlw
ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENv
bXBvbmVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTENvbXBvbmVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc0N2E4MGI4MGMyNjEyYTY2NzM4MWU3NjZkY2EzMGJmMGY2MGE3MjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJM
Q29tcG9uZW50LmgKQEAgLTAsMCArMSw4MSBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgVVJMQ29tcG9uZW50X2gKKyNkZWZpbmUgVVJMQ29tcG9u
ZW50X2gKKworI2lmIFVTRShXVEZVUkwpCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBSZXByZXNl
bnRzIGEgc3Vic3RyaW5nIGZvciBVUkwgcGFyc2luZy4KK2NsYXNzIFVSTENvbXBvbmVudCB7Citw
dWJsaWM6CisgICAgVVJMQ29tcG9uZW50KCkgOiBtX2JlZ2luKDApLCBtX2xlbmd0aCgtMSkgeyB9
CisgICAgVVJMQ29tcG9uZW50KGludCBiZWdpbiwgaW50IGxlbmd0aCkgOiBtX2JlZ2luKGJlZ2lu
KSwgbV9sZW5ndGgobGVuZ3RoKSB7IH0KKworICAgIC8vIEhlbHBlciB0aGF0IHJldHVybnMgYSBj
b21wb25lbnQgY3JlYXRlZCB3aXRoIHRoZSBnaXZlbiBiZWdpbiBhbmQgZW5kaW5nCisgICAgLy8g
cG9pbnRzLiBUaGUgZW5kaW5nIHBvaW50IGlzIG5vbi1pbmNsdXNpdmUuCisgICAgc3RhdGljIGlu
bGluZSBVUkxDb21wb25lbnQgZnJvbVJhbmdlKGludCBiZWdpbiwgaW50IGVuZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBVUkxDb21wb25lbnQoYmVnaW4sIGVuZCAtIGJlZ2luKTsKKyAgICB9CisK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBjb21wb25lbnQgaXMgdmFsaWQsIG1lYW5pbmcg
dGhlIGxlbmd0aCBpcyBnaXZlbi4gRXZlbgorICAgIC8vIHZhbGlkIGNvbXBvbmVudHMgbWF5IGJl
IGVtcHR5IHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZXkgZXhpc3QuCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGggIT0gLTE7IH0KKworICAgIGJvb2wgaXNOb25F
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoID4gMDsgfQorICAgIGJvb2wgaXNFbXB0eU9y
SW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoIDw9IDA7IH0KKworICAgIHZvaWQgcmVz
ZXQoKQorICAgIHsKKyAgICAgICAgbV9iZWdpbiA9IDA7CisgICAgICAgIG1fbGVuZ3RoID0gLTE7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTENvbXBvbmVudCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbiAmJiBtX2xlbmd0aCA9PSBv
dGhlci5tX2xlbmd0aDsgfQorCisgICAgaW50IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdp
bjsgfQorICAgIHZvaWQgc2V0QmVnaW4oaW50IGJlZ2luKSB7IG1fYmVnaW4gPSBiZWdpbjsgfQor
CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgdm9pZCBz
ZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQorCisgICAgaW50IGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4gKyBtX2xlbmd0aDsgfQorCitwcml2YXRlOgorICAg
IGludCBtX2JlZ2luOyAvLyBCeXRlIG9mZnNldCBpbiB0aGUgc3RyaW5nIG9mIHRoaXMgY29tcG9u
ZW50LgorICAgIGludCBtX2xlbmd0aDsgLy8gV2lsbCBiZSAtMSBpZiB0aGUgY29tcG9uZW50IGlz
IHVuc3BlY2lmaWVkLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0Uo
V1RGVVJMKQorCisjZW5kaWYgLy8gVVJMQ29tcG9uZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxFc2NhcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi91cmwvc3JjL1VSTEVzY2FwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFjZGNkZTI0ZDY3
NmUxYTk0NzM4MTNmMmYyMzk5ZTRjZjBjMjRmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxFc2NhcGUuY3BwCkBAIC0wLDAgKzEsNDMgQEAK
Ky8vIENvcHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVVJMRXNjYXBlLmgiCisKKyNpZiBVU0UoV1RGVVJMKQorCituYW1l
c3BhY2UgV1RGIHsKKworY29uc3QgY2hhciBoZXhDaGFyYWN0ZXJUYWJsZVsxNl0gPSB7CisgICAg
JzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsCisgICAgJzgnLCAnOScsICdB
JywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsCit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoV1RG
VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTEVz
Y2FwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTEVzY2FwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUwMTAwMTJhM2Y4YmVlN2U5M2Q4Mjg0ZDBkMjA0NWI2OTBlODgxODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMRXNjYXBl
LmgKQEAgLTAsMCArMSw1MyBAQAorLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworI2lmbmRlZiBVUkxFc2NhcGVfaAorI2RlZmluZSBVUkxFc2NhcGVfaAorCisjaWYg
VVNFKFdURlVSTCkKKworI2luY2x1ZGUgIlVSTEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV1RGIHsK
KworZXh0ZXJuIGNvbnN0IGNoYXIgaGV4Q2hhcmFjdGVyVGFibGVbMTZdOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJbkNoYXIsIHR5cGVuYW1lIE91dENoYXI+CitpbmxpbmUgdm9pZCBhcHBlbmRVUkxF
c2NhcGVkQ2hhcmFjdGVyKEluQ2hhciBjaCwgVVJMQnVmZmVyPE91dENoYXI+JiBidWZmZXIpCit7
CisgICAgYnVmZmVyLmFwcGVuZCgnJScpOworICAgIGJ1ZmZlci5hcHBlbmQoaGV4Q2hhcmFjdGVy
VGFibGVbY2ggPj4gNF0pOworICAgIGJ1ZmZlci5hcHBlbmQoaGV4Q2hhcmFjdGVyVGFibGVbY2gg
JiAweGZdKTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKFdURlVSTCkKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUGFyc2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDFmNzM4Y2YzOWM4NDRkOWM3MWVjN2I1ZDZkMTAxMjU5MDJhOGNlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxQYXJzZXIuaApAQCAtMCww
ICsxLDU3OSBAQAorLyogQmFzZWQgb24gbnNVUkxQYXJzZXJzLmNjIGZyb20gTW96aWxsYQorICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weXJpZ2h0IChDKSAx
OTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgorICoKKyAqIE90aGVyIGNv
bnRyaWJ1dG9yczoKKyAqICAgRGFyaW4gRmlzaGVyIChvcmlnaW5hbCBhdXRob3IpCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxl
IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwu
aHRtbAorICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhl
IE1QTCBvciB0aGUgR1BMIGFyZQorICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3Zl
LiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBm
aWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2Vz
ICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3Vy
CisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBk
ZWNpc2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkg
dGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90
IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisg
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3Ig
dGhlIEdQTC4KKyAqLworCisjaWZuZGVmIFVSTFBhcnNlcl9oCisjZGVmaW5lIFVSTFBhcnNlcl9o
CisKKyNpbmNsdWRlICJVUkxDb21wb25lbnQuaCIKKyNpbmNsdWRlICJVUkxTZWdtZW50cy5oIgor
CisjaWYgVVNFKFdURlVSTCkKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIGVudW0gU3Bl
Y2lhbFBvcnQgeworICAgICAgICBVbnNwZWNpZmllZFBvcnQgPSAtMSwKKyAgICAgICAgSW52YWxp
ZFBvcnQgPSAtMiwKKyAgICB9OworCisgICAgLy8gVGhpcyBoYW5kbGVzIGV2ZXJ5dGhpbmcgdGhh
dCBtYXkgYmUgYW4gYXV0aG9yaXR5IHRlcm1pbmF0b3IsIGluY2x1ZGluZworICAgIC8vIGJhY2tz
bGFzaC4gRm9yIHNwZWNpYWwgYmFja3NsYXNoIGhhbmRsaW5nIHNlZSBwYXJzZUFmdGVyU2NoZW1l
LgorICAgIHN0YXRpYyBib29sIGlzUG9zc2libGVBdXRob3JpdHlUZXJtaW5hdG9yKENoYXJhY3Rl
clR5cGUgY2gpCisgICAgeworICAgICAgICByZXR1cm4gaXNVUkxTbGFzaChjaCkgfHwgY2ggPT0g
Jz8nIHx8IGNoID09ICcjJyB8fCBjaCA9PSAnOyc7CisgICAgfQorCisgICAgLy8gR2l2ZW4gYW4g
YWxyZWFkeS1pZGVudGlmaWVkIGF1dGggc2VjdGlvbiwgYnJlYWtzIGl0IGludG8gaXRzIGNvbnN0
aXR1ZW50CisgICAgLy8gcGFydHMuIFRoZSBwb3J0IG51bWJlciB3aWxsIGJlIHBhcnNlZCBhbmQg
dGhlIHJlc3VsdGluZyBpbnRlZ2VyIHdpbGwgYmUKKyAgICAvLyBmaWxsZWQgaW50byB0aGUgZ2l2
ZW4gKnBvcnQgdmFyaWFibGUsIG9yIC0xIGlmIHRoZXJlIGlzIG5vIHBvcnQgbnVtYmVyCisgICAg
Ly8gb3IgaXQgaXMgaW52YWxpZC4KKyAgICBzdGF0aWMgdm9pZCBwYXJzZUF1dGhvcml0eShjb25z
dCBDaGFyYWN0ZXJUeXBlKiBzcGVjLCBjb25zdCBVUkxDb21wb25lbnQmIGF1dGgsIFVSTENvbXBv
bmVudCYgdXNlcm5hbWUsIFVSTENvbXBvbmVudCYgcGFzc3dvcmQsIFVSTENvbXBvbmVudCYgaG9z
dCwgVVJMQ29tcG9uZW50JiBwb3J0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBBU1NF
UlQoYXV0aC5pc1ZhbGlkKCkpOyAvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhbiBhdXRob3JpdHku
CisgICAgICAgIGlmICghYXV0aC5sZW5ndGgoKSkgeworICAgICAgICAgICAgdXNlcm5hbWUucmVz
ZXQoKTsKKyAgICAgICAgICAgIHBhc3N3b3JkLnJlc2V0KCk7CisgICAgICAgICAgICBob3N0LnJl
c2V0KCk7CisgICAgICAgICAgICBwb3J0LnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTZWFyY2ggYmFja3dhcmRzIGZvciBALCB3aGljaCBpcyB0
aGUgc2VwYXJhdG9yIGJldHdlZW4gdGhlIHVzZXIgaW5mbworICAgICAgICAvLyBhbmQgdGhlIHNl
cnZlciBpbmZvLiBSRkMgMzk4NiBmb3JiaWRzIEAgZnJvbSBvY2N1cmluZyBpbiBhdXRoLCBidXQK
KyAgICAgICAgLy8gc29tZW9uZSBtaWdodCBpbmNsdWRlIGl0IGluIGEgcGFzc3dvcmQgdW5lc2Nh
cGVkLgorICAgICAgICBpbnQgaSA9IGF1dGguYmVnaW4oKSArIGF1dGgubGVuZ3RoKCkgLSAxOwor
ICAgICAgICB3aGlsZSAoaSA+IGF1dGguYmVnaW4oKSAmJiBzcGVjW2ldICE9ICdAJykKKyAgICAg
ICAgICAgIC0taTsKKworICAgICAgICBpZiAoc3BlY1tpXSA9PSAnQCcpIHsKKyAgICAgICAgICAg
IC8vIEZvdW5kIHVzZXIgaW5mbzogPHVzZXItaW5mbz5APHNlcnZlci1pbmZvPgorICAgICAgICAg
ICAgcGFyc2VVc2VySW5mbyhzcGVjLCBVUkxDb21wb25lbnQoYXV0aC5iZWdpbigpLCBpIC0gYXV0
aC5iZWdpbigpKSwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKKyAgICAgICAgICAgIHBhcnNlU2VydmVy
SW5mbyhzcGVjLCBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShpICsgMSwgYXV0aC5iZWdpbigpICsg
YXV0aC5sZW5ndGgoKSksIGhvc3QsIHBvcnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gTm8gdXNlciBpbmZvLCBldmVyeXRoaW5nIGlzIHNlcnZlciBpbmZvLgorICAgICAgICAg
ICAgdXNlcm5hbWUucmVzZXQoKTsKKyAgICAgICAgICAgIHBhc3N3b3JkLnJlc2V0KCk7CisgICAg
ICAgICAgICBwYXJzZVNlcnZlckluZm8oc3BlYywgYXV0aCwgaG9zdCwgcG9ydCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBleHRyYWN0U2NoZW1lKGNvbnN0IENoYXJhY3Rl
clR5cGUqIHNwZWMsIGludCBzcGVjTGVuZ3RoLCBVUkxDb21wb25lbnQmIHNjaGVtZSkKKyAgICB7
CisgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3Rl
cnMuCisgICAgICAgIGludCBiZWdpbiA9IDA7CisgICAgICAgIHdoaWxlIChiZWdpbiA8IHNwZWNM
ZW5ndGggJiYgc2hvdWxkVHJpbUZyb21VUkwoc3BlY1tiZWdpbl0pKQorICAgICAgICAgICAgYmVn
aW4rKzsKKyAgICAgICAgaWYgKGJlZ2luID09IHNwZWNMZW5ndGgpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIElucHV0IGlzIGVtcHR5IG9yIGFsbCB3aGl0ZXNwYWNlLgorCisgICAgICAg
IC8vIEZpbmQgdGhlIGZpcnN0IGNvbG9uIGNoYXJhY3Rlci4KKyAgICAgICAgZm9yIChpbnQgaSA9
IGJlZ2luOyBpIDwgc3BlY0xlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoc3BlY1tpXSA9
PSAnOicpIHsKKyAgICAgICAgICAgICAgICBzY2hlbWUgPSBVUkxDb21wb25lbnQ6OmZyb21SYW5n
ZShiZWdpbiwgaSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBObyBjb2xvbiBmb3VuZDogbm8g
c2NoZW1lCisgICAgfQorCisgICAgLy8gRmlsbHMgaW4gYWxsIG1lbWJlcnMgb2YgdGhlIFVSTFNl
Z21lbnRzIHN0cnVjdHVyZSAoZXhjZXB0IGZvciB0aGUKKyAgICAvLyBzY2hlbWUpIGZvciBzdGFu
ZGFyZCBVUkxzLgorICAgIC8vCisgICAgLy8gfHNwZWN8IGlzIHRoZSBmdWxsIHNwZWMgYmVpbmcg
cGFyc2VkLCBvZiBsZW5ndGggfHNwZWNMZW5ndGh8LgorICAgIC8vIHxhZnRlclNjaGVtZXwgaXMg
dGhlIGNoYXJhY3RlciBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIHNjaGVtZSAoYWZ0ZXIKKyAg
ICAvLyB0aGUgY29sb24pIHdoZXJlIHdlJ2xsIGJlZ2luIHBhcnNpbmcuCisgICAgc3RhdGljIHZv
aWQgcGFyc2VBZnRlclNjaGVtZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzcGVjLCBpbnQgc3BlY0xl
bmd0aCwgaW50IGFmdGVyU2NoZW1lLCBVUkxTZWdtZW50cyYgcGFyc2VkKQorICAgIHsKKyAgICAg
ICAgaW50IG51bWJlck9mU2xhc2hlcyA9IGNvbnNlY3V0aXZlU2xhc2hlcyhzcGVjLCBhZnRlclNj
aGVtZSwgc3BlY0xlbmd0aCk7CisgICAgICAgIGludCBhZnRlclNsYXNoZXMgPSBhZnRlclNjaGVt
ZSArIG51bWJlck9mU2xhc2hlczsKKworICAgICAgICAvLyBGaXJzdCBzcGxpdCBpbnRvIHR3byBt
YWluIHBhcnRzLCB0aGUgYXV0aG9yaXR5ICh1c2VybmFtZSwgcGFzc3dvcmQsCisgICAgICAgIC8v
IGhvc3QsIGFuZCBwb3J0KSBhbmQgdGhlIGZ1bGwgcGF0aCAocGF0aCwgcXVlcnksIGFuZCByZWZl
cmVuY2UpLgorICAgICAgICBVUkxDb21wb25lbnQgYXV0aG9yaXR5OworICAgICAgICBVUkxDb21w
b25lbnQgZnVsbFBhdGg7CisKKyAgICAgICAgLy8gRm91bmQgIi8vPHNvbWUgZGF0YT4iLCBsb29r
cyBsaWtlIGFuIGF1dGhvcml0eSBzZWN0aW9uLiBUcmVhdAorICAgICAgICAvLyBldmVyeXRoaW5n
IGZyb20gdGhlcmUgdG8gdGhlIG5leHQgc2xhc2ggKG9yIGVuZCBvZiBzcGVjKSB0byBiZSB0aGUK
KyAgICAgICAgLy8gYXV0aG9yaXR5LiBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZSBudW1iZXIgb2Yg
c2xhc2hlcyBhbmQgdHJlYXQgaXQgYXMKKyAgICAgICAgLy8gdGhlIGF1dGhvcml0eS4KKyAgICAg
ICAgaW50IGF1dGhFbmQgPSBuZXh0QXV0aG9yaXR5VGVybWluYXRvcihzcGVjLCBhZnRlclNsYXNo
ZXMsIHNwZWNMZW5ndGgpOworICAgICAgICBhdXRob3JpdHkgPSBVUkxDb21wb25lbnQoYWZ0ZXJT
bGFzaGVzLCBhdXRoRW5kIC0gYWZ0ZXJTbGFzaGVzKTsKKworICAgICAgICBpZiAoYXV0aEVuZCA9
PSBzcGVjTGVuZ3RoKSAvLyBObyBiZWdpbm5pbmcgb2YgcGF0aCBmb3VuZC4KKyAgICAgICAgICAg
IGZ1bGxQYXRoID0gVVJMQ29tcG9uZW50KCk7CisgICAgICAgIGVsc2UgLy8gRXZlcnl0aGluZyBz
dGFydGluZyBmcm9tIHRoZSBzbGFzaCB0byB0aGUgZW5kIGlzIHRoZSBwYXRoLgorICAgICAgICAg
ICAgZnVsbFBhdGggPSBVUkxDb21wb25lbnQoYXV0aEVuZCwgc3BlY0xlbmd0aCAtIGF1dGhFbmQp
OworCisgICAgICAgIC8vIE5vdyBwYXJzZSB0aG9zZSB0d28gc3ViLXBhcnRzLgorICAgICAgICBw
YXJzZUF1dGhvcml0eShzcGVjLCBhdXRob3JpdHksIHBhcnNlZC51c2VybmFtZSwgcGFyc2VkLnBh
c3N3b3JkLCBwYXJzZWQuaG9zdCwgcGFyc2VkLnBvcnQpOworICAgICAgICBwYXJzZVBhdGgoc3Bl
YywgZnVsbFBhdGgsIHBhcnNlZC5wYXRoLCBwYXJzZWQucXVlcnksIHBhcnNlZC5mcmFnbWVudCk7
CisgICAgfQorCisgICAgLy8gVGhlIG1haW4gcGFyc2luZyBmdW5jdGlvbiBmb3Igc3RhbmRhcmQg
VVJMcy4gU3RhbmRhcmQgVVJMcyBoYXZlIGEgc2NoZW1lLAorICAgIC8vIGhvc3QsIHBhdGgsIGV0
Yy4KKyAgICBzdGF0aWMgdm9pZCBwYXJzZVN0YW5kYXJkVVJMKGNvbnN0IENoYXJhY3RlclR5cGUq
IHNwZWMsIGludCBzcGVjTGVuZ3RoLCBVUkxTZWdtZW50cyYgcGFyc2VkKQorICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IGFkZCBBU1NFUlQoc3BlY0xlbmd0aCA+PSAwKTsKKworICAgICAgICAvLyBT
dHJpcCBsZWFkaW5nICYgdHJhaWxpbmcgc3BhY2VzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCisg
ICAgICAgIGludCBiZWdpbiA9IDA7CisgICAgICAgIHRyaW1VUkwoc3BlYywgYmVnaW4sIHNwZWNM
ZW5ndGgpOworCisgICAgICAgIGludCBhZnRlclNjaGVtZTsKKyAgICAgICAgaWYgKGV4dHJhY3RT
Y2hlbWUoc3BlYywgc3BlY0xlbmd0aCwgcGFyc2VkLnNjaGVtZSkpCisgICAgICAgICAgICBhZnRl
clNjaGVtZSA9IHBhcnNlZC5zY2hlbWUuZW5kKCkgKyAxOyAvLyBTa2lwIHBhc3QgdGhlIGNvbG9u
LgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNheSB0aGVyZSdzIG5vIHNjaGVtZSB3
aGVuIHRoZXJlIGlzIGEgY29sb24uIFdlIGNvdWxkIGFsc28gc2F5CisgICAgICAgICAgICAvLyB0
aGF0IGV2ZXJ5dGhpbmcgaXMgdGhlIHNjaGVtZS4gQm90aCB3b3VsZCBwcm9kdWNlIGFuIGludmFs
aWQKKyAgICAgICAgICAgIC8vIFVSTCwgYnV0IHRoaXMgd2F5IHNlZW1zIGxlc3Mgd3JvbmcgaW4g
bW9yZSBjYXNlcy4KKyAgICAgICAgICAgIHBhcnNlZC5zY2hlbWUucmVzZXQoKTsKKyAgICAgICAg
ICAgIGFmdGVyU2NoZW1lID0gYmVnaW47CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VBZnRlclNj
aGVtZShzcGVjLCBzcGVjTGVuZ3RoLCBhZnRlclNjaGVtZSwgcGFyc2VkKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCBwYXJzZVBhdGgoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3BlYywgY29uc3Qg
VVJMQ29tcG9uZW50JiBwYXRoLCBVUkxDb21wb25lbnQmIGZpbGVwYXRoLCBVUkxDb21wb25lbnQm
IHF1ZXJ5LCBVUkxDb21wb25lbnQmIGZyYWdtZW50KQorICAgIHsKKyAgICAgICAgLy8gcGF0aCA9
IFsvXTxzZWdtZW50MT4vPHNlZ21lbnQyPi88Li4uPi88c2VnbWVudE4+OzxwYXJhbT4/PHF1ZXJ5
PiM8ZnJhZ21lbnQ+CisKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4gdGhlcmUgaXMgbm8g
cGF0aC4KKyAgICAgICAgaWYgKCFwYXRoLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZmlsZXBh
dGgucmVzZXQoKTsKKyAgICAgICAgICAgIHF1ZXJ5LnJlc2V0KCk7CisgICAgICAgICAgICBmcmFn
bWVudC5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8v
IEZJWE1FOiBhZGQgQVNTRVJUKHBhdGgubGVuZ3RoKCkgPiAwKTsgLy8gV2Ugc2hvdWxkIG5ldmVy
IGhhdmUgMCBsZW5ndGggcGF0aHMuCisKKyAgICAgICAgLy8gU2VhcmNoIGZvciBmaXJzdCBvY2N1
cnJlbmNlIG9mIGVpdGhlciA/IG9yICMuCisgICAgICAgIGludCBwYXRoRW5kID0gcGF0aC5iZWdp
bigpICsgcGF0aC5sZW5ndGgoKTsKKworICAgICAgICBpbnQgcXVlcnlTZXBhcmF0b3IgPSAtMTsg
Ly8gSW5kZXggb2YgdGhlICc/JworICAgICAgICBpbnQgcmVmU2VwYXJhdG9yID0gLTE7IC8vIElu
ZGV4IG9mIHRoZSAnIycKKyAgICAgICAgZm9yIChpbnQgaSA9IHBhdGguYmVnaW4oKTsgaSA8IHBh
dGhFbmQ7IGkrKykgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjW2ldKSB7CisgICAgICAgICAg
ICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBpZiAocXVlcnlTZXBhcmF0b3IgPCAwKQorICAg
ICAgICAgICAgICAgICAgICBxdWVyeVNlcGFyYXRvciA9IGk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICByZWZTZXBhcmF0b3Ig
PSBpOworICAgICAgICAgICAgICAgIGkgPSBwYXRoRW5kOyAvLyBCcmVhayBvdXQgb2YgdGhlIGxv
b3AuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
TWFya2VycyBwb2ludGluZyB0byB0aGUgY2hhcmFjdGVyIGFmdGVyIGVhY2ggb2YgdGhlc2UgY29y
cmVzcG9uZGluZworICAgICAgICAvLyBjb21wb25lbnRzLiBUaGUgY29kZSBiZWxvdyB3b3JrcyBm
cm9tIHRoZSBlbmQgYmFjayB0byB0aGUgYmVnaW5uaW5nLAorICAgICAgICAvLyBhbmQgd2lsbCB1
cGRhdGUgdGhlc2UgaW5kaWNlcyBhcyBpdCBmaW5kcyBjb21wb25lbnRzIHRoYXQgZXhpc3QuCisg
ICAgICAgIGludCBmaWxlRW5kLCBxdWVyeUVuZDsKKworICAgICAgICAvLyBGcmFnbWVudDogZnJv
bSB0aGUgIyB0byB0aGUgZW5kIG9mIHRoZSBwYXRoLgorICAgICAgICBpZiAocmVmU2VwYXJhdG9y
ID49IDApIHsKKyAgICAgICAgICAgIGZpbGVFbmQgPSByZWZTZXBhcmF0b3I7CisgICAgICAgICAg
ICBxdWVyeUVuZCA9IHJlZlNlcGFyYXRvcjsKKyAgICAgICAgICAgIGZyYWdtZW50ID0gVVJMQ29t
cG9uZW50Ojpmcm9tUmFuZ2UocmVmU2VwYXJhdG9yICsgMSwgcGF0aEVuZCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmaWxlRW5kID0gcGF0aEVuZDsKKyAgICAgICAgICAgIHF1ZXJ5
RW5kID0gcGF0aEVuZDsKKyAgICAgICAgICAgIGZyYWdtZW50LnJlc2V0KCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBRdWVyeSBmcmFnbWVudDogZXZlcnl0aGluZyBmcm9tIHRoZSA/IHRvIHRo
ZSBuZXh0IGJvdW5kYXJ5IChlaXRoZXIKKyAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgcGF0aCBv
ciB0aGUgZnJhZ21lbnQgZnJhZ21lbnQpLgorICAgICAgICBpZiAocXVlcnlTZXBhcmF0b3IgPj0g
MCkgeworICAgICAgICAgICAgZmlsZUVuZCA9IHF1ZXJ5U2VwYXJhdG9yOworICAgICAgICAgICAg
cXVlcnkgPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShxdWVyeVNlcGFyYXRvciArIDEsIHF1ZXJ5
RW5kKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBxdWVyeS5yZXNldCgpOworCisgICAg
ICAgIC8vIEZpbGUgcGF0aDogdHJlYXQgYW4gZW1wdHkgZmlsZSBwYXRoIGFzIG5vIGZpbGUgcGF0
aC4KKyAgICAgICAgaWYgKGZpbGVFbmQgIT0gcGF0aC5iZWdpbigpKQorICAgICAgICAgICAgZmls
ZXBhdGggPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShwYXRoLmJlZ2luKCksIGZpbGVFbmQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBmaWxlcGF0aC5yZXNldCgpOworICAgIH0KKworICAg
IC8vIEluaXRpYWxpemVzIGEgcGF0aCBVUkwgd2hpY2ggaXMgbWVyZWx5IGEgc2NoZW1lIGZvbGxv
d2VkIGJ5IGEgcGF0aC4KKyAgICAvLyBFeGFtcGxlcyBpbmNsdWRlICJhYm91dDpmb28iIGFuZCAi
amF2YXNjcmlwdDphbGVydCgnYmFyJyk7IgorICAgIHN0YXRpYyB2b2lkIHBhcnNlUGF0aFVSTChj
b25zdCBDaGFyYWN0ZXJUeXBlKiBzcGVjLCBpbnQgc3BlY0xlbmd0aCwgVVJMU2VnbWVudHMmIHBh
cnNlZCkKKyAgICB7CisgICAgICAgIC8vIEdldCB0aGUgbm9uLXBhdGggYW5kIG5vbi1zY2hlbWUg
cGFydHMgb2YgdGhlIFVSTCBvdXQgb2YgdGhlIHdheSwgd2UKKyAgICAgICAgLy8gbmV2ZXIgdXNl
IHRoZW0uCisgICAgICAgIHBhcnNlZC51c2VybmFtZS5yZXNldCgpOworICAgICAgICBwYXJzZWQu
cGFzc3dvcmQucmVzZXQoKTsKKyAgICAgICAgcGFyc2VkLmhvc3QucmVzZXQoKTsKKyAgICAgICAg
cGFyc2VkLnBvcnQucmVzZXQoKTsKKyAgICAgICAgcGFyc2VkLnF1ZXJ5LnJlc2V0KCk7CisgICAg
ICAgIHBhcnNlZC5mcmFnbWVudC5yZXNldCgpOworCisgICAgICAgIC8vIFN0cmlwIGxlYWRpbmcg
JiB0cmFpbGluZyBzcGFjZXMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gRklY
TUU6IFBlcmhhcHMgdGhpcyBpcyB1bm5lY2Vzc2FyeT8KKyAgICAgICAgaW50IGJlZ2luID0gMDsK
KyAgICAgICAgdHJpbVVSTChzcGVjLCBiZWdpbiwgc3BlY0xlbmd0aCk7CisKKyAgICAgICAgLy8g
SGFuZGxlIGVtcHR5IHNwZWNzIG9yIG9uZXMgdGhhdCBjb250YWluIG9ubHkgd2hpdGVzcGFjZSBv
ciBjb250cm9sCisgICAgICAgIC8vIGNoYXJzLgorICAgICAgICBpZiAoYmVnaW4gPT0gc3BlY0xl
bmd0aCkgeworICAgICAgICAgICAgcGFyc2VkLnNjaGVtZS5yZXNldCgpOworICAgICAgICAgICAg
cGFyc2VkLnBhdGgucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEV4dHJhY3QgdGhlIHNjaGVtZSwgd2l0aCB0aGUgcGF0aCBiZWluZyBldmVyeXRo
aW5nIGZvbGxvd2luZy4gV2UgYWxzbworICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUg
dGhlcmUgaXMgbm8gc2NoZW1lLgorICAgICAgICBpZiAoZXh0cmFjdFNjaGVtZSgmc3BlY1tiZWdp
bl0sIHNwZWNMZW5ndGggLSBiZWdpbiwgcGFyc2VkLnNjaGVtZSkpIHsKKyAgICAgICAgICAgIC8v
IE9mZnNldCB0aGUgcmVzdWx0cyBzaW5jZSB3ZSBnYXZlIGV4dHJhY3RTY2hlbWUgYSBzdWJzdHJp
bmcuCisgICAgICAgICAgICBwYXJzZWQuc2NoZW1lLnNldEJlZ2luKHBhcnNlZC5zY2hlbWUuYmVn
aW4oKSArIGJlZ2luKTsKKworICAgICAgICAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0
aGUgc3RhbmRhcmQgVVJMIHBhcnNlciwgd2UgdHJlYXQgbm8gcGF0aAorICAgICAgICAgICAgLy8g
YXMgLTEsIHJhdGhlciB0aGFuIGhhdmluZyBhIGxlbmd0aCBvZiAwICh3ZSBub3JtYWxseSB3b3Vs
ZG4ndAorICAgICAgICAgICAgLy8gY2FyZSBzbyBtdWNoIGZvciB0aGVzZSBub24tc3RhbmRhcmQg
VVJMcykuCisgICAgICAgICAgICBpZiAocGFyc2VkLnNjaGVtZS5lbmQoKSA9PSBzcGVjTGVuZ3Ro
IC0gMSkKKyAgICAgICAgICAgICAgICBwYXJzZWQucGF0aC5yZXNldCgpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlZC5wYXRoID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFu
Z2UocGFyc2VkLnNjaGVtZS5lbmQoKSArIDEsIHNwZWNMZW5ndGgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gTm8gc2NoZW1lIGZvdW5kLCBqdXN0IHBhdGguCisgICAgICAgICAg
ICBwYXJzZWQuc2NoZW1lLnJlc2V0KCk7CisgICAgICAgICAgICBwYXJzZWQucGF0aCA9IFVSTENv
bXBvbmVudDo6ZnJvbVJhbmdlKGJlZ2luLCBzcGVjTGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIHBhcnNlTWFpbHRvVVJMKGNvbnN0IENoYXJhY3RlclR5cGUqIHNw
ZWMsIGludCBzcGVjTGVuZ3RoLCBVUkxTZWdtZW50cyYgcGFyc2VkKQorICAgIHsKKyAgICAgICAg
Ly8gRklYTUU6IGFkZCBBU1NFUlQoc3BlY0xlbmd0aCA+PSAwKTsKKworICAgICAgICAvLyBHZXQg
dGhlIG5vbi1wYXRoIGFuZCBub24tc2NoZW1lIHBhcnRzIG9mIHRoZSBVUkwgb3V0IG9mIHRoZSB3
YXksIHdlCisgICAgICAgIC8vIG5ldmVyIHVzZSB0aGVtLgorICAgICAgICBwYXJzZWQudXNlcm5h
bWUucmVzZXQoKTsKKyAgICAgICAgcGFyc2VkLnBhc3N3b3JkLnJlc2V0KCk7CisgICAgICAgIHBh
cnNlZC5ob3N0LnJlc2V0KCk7CisgICAgICAgIHBhcnNlZC5wb3J0LnJlc2V0KCk7CisgICAgICAg
IHBhcnNlZC5mcmFnbWVudC5yZXNldCgpOworICAgICAgICBwYXJzZWQucXVlcnkucmVzZXQoKTsg
Ly8gTWF5IHVzZSB0aGlzOyByZXNldCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgLy8gU3Ry
aXAgbGVhZGluZyAmIHRyYWlsaW5nIHNwYWNlcyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAg
ICAgICBpbnQgYmVnaW4gPSAwOworICAgICAgICB0cmltVVJMKHNwZWMsIGJlZ2luLCBzcGVjTGVu
Z3RoKTsKKworICAgICAgICAvLyBIYW5kbGUgZW1wdHkgc3BlY3Mgb3Igb25lcyB0aGF0IGNvbnRh
aW4gb25seSB3aGl0ZXNwYWNlIG9yIGNvbnRyb2wKKyAgICAgICAgLy8gY2hhcnMuCisgICAgICAg
IGlmIChiZWdpbiA9PSBzcGVjTGVuZ3RoKSB7CisgICAgICAgICAgICBwYXJzZWQuc2NoZW1lLnJl
c2V0KCk7CisgICAgICAgICAgICBwYXJzZWQucGF0aC5yZXNldCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHBhdGhCZWdpbiA9IC0xOworICAgICAgICBp
bnQgcGF0aEVuZCA9IC0xOworCisgICAgICAgIC8vIEV4dHJhY3QgdGhlIHNjaGVtZSwgd2l0aCB0
aGUgcGF0aCBiZWluZyBldmVyeXRoaW5nIGZvbGxvd2luZy4gV2UgYWxzbworICAgICAgICAvLyBo
YW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8gc2NoZW1lLgorICAgICAgICBpZiAoZXh0
cmFjdFNjaGVtZSgmc3BlY1tiZWdpbl0sIHNwZWNMZW5ndGggLSBiZWdpbiwgcGFyc2VkLnNjaGVt
ZSkpIHsKKyAgICAgICAgICAgIC8vIE9mZnNldCB0aGUgcmVzdWx0cyBzaW5jZSB3ZSBnYXZlIGV4
dHJhY3RTY2hlbWUgYSBzdWJzdHJpbmcuCisgICAgICAgICAgICBwYXJzZWQuc2NoZW1lLnNldEJl
Z2luKHBhcnNlZC5zY2hlbWUuYmVnaW4oKSArIGJlZ2luKTsKKworICAgICAgICAgICAgaWYgKHBh
cnNlZC5zY2hlbWUuZW5kKCkgIT0gc3BlY0xlbmd0aCAtIDEpIHsKKyAgICAgICAgICAgICAgICBw
YXRoQmVnaW4gPSBwYXJzZWQuc2NoZW1lLmVuZCgpICsgMTsKKyAgICAgICAgICAgICAgICBwYXRo
RW5kID0gc3BlY0xlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIE5vIHNjaGVtZSBmb3VuZCwganVzdCBwYXRoLgorICAgICAgICAgICAgcGFyc2Vk
LnNjaGVtZS5yZXNldCgpOworICAgICAgICAgICAgcGF0aEJlZ2luID0gYmVnaW47CisgICAgICAg
ICAgICBwYXRoRW5kID0gc3BlY0xlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNwbGl0
IFtwYXRoQmVnaW4sIHBhdGhFbmQpIGludG8gYSBwYXRoICsgcXVlcnkuCisgICAgICAgIGZvciAo
aW50IGkgPSBwYXRoQmVnaW47IGkgPCBwYXRoRW5kOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChz
cGVjW2ldID09ICc/JykgeworICAgICAgICAgICAgICAgIHBhcnNlZC5xdWVyeSA9IFVSTENvbXBv
bmVudDo6ZnJvbVJhbmdlKGkgKyAxLCBwYXRoRW5kKTsKKyAgICAgICAgICAgICAgICBwYXRoRW5k
ID0gaTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN0YW5kYXJkIFVSTCBwYXJz
ZXIsIHRyZWF0IG5vIHBhdGggYXMKKyAgICAgICAgLy8gLTEsIHJhdGhlciB0aGFuIGhhdmluZyBh
IGxlbmd0aCBvZiAwCisgICAgICAgIGlmIChwYXRoQmVnaW4gPT0gcGF0aEVuZCkKKyAgICAgICAg
ICAgIHBhcnNlZC5wYXRoLnJlc2V0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNl
ZC5wYXRoID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFuZ2UocGF0aEJlZ2luLCBwYXRoRW5kKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgaW50IHBhcnNlUG9ydChjb25zdCBDaGFyYWN0ZXJUeXBlKiBzcGVj
LCBjb25zdCBVUkxDb21wb25lbnQmIGNvbXBvbmVudCkKKyAgICB7CisgICAgICAgIC8vIEVhc3kg
c3VjY2VzcyBjYXNlIHdoZW4gdGhlcmUgaXMgbm8gcG9ydC4KKyAgICAgICAgY29uc3QgaW50IG1h
eERpZ2l0cyA9IDU7CisgICAgICAgIGlmIChjb21wb25lbnQuaXNFbXB0eU9ySW52YWxpZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkUG9ydDsKKworICAgICAgICBVUkxDb21wb25l
bnQgbm9uWmVyb0RpZ2l0cyhjb21wb25lbnQuZW5kKCksIDApOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoc3Bl
Y1tjb21wb25lbnQuYmVnaW4oKSArIGldICE9ICcwJykgeworICAgICAgICAgICAgICAgIG5vblpl
cm9EaWdpdHMgPSBVUkxDb21wb25lbnQ6OmZyb21SYW5nZShjb21wb25lbnQuYmVnaW4oKSArIGks
IGNvbXBvbmVudC5lbmQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFub25aZXJvRGlnaXRzLmxlbmd0aCgpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7IC8vIEFsbCBkaWdpdHMgd2VyZSAwLgorCisgICAgICAgIGlmIChub25a
ZXJvRGlnaXRzLmxlbmd0aCgpID4gbWF4RGlnaXRzKQorICAgICAgICAgICAgcmV0dXJuIEludmFs
aWRQb3J0OworCisgICAgICAgIGludCBwb3J0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBub25aZXJvRGlnaXRzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIENoYXJhY3Rl
clR5cGUgY2ggPSBzcGVjW25vblplcm9EaWdpdHMuYmVnaW4oKSArIGldOworICAgICAgICAgICAg
aWYgKCFpc1BvcnREaWdpdChjaCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQb3J0
OworICAgICAgICAgICAgcG9ydCAqPSAxMDsKKyAgICAgICAgICAgIHBvcnQgKz0gc3RhdGljX2Nh
c3Q8Y2hhcj4oY2gpIC0gJzAnOworICAgICAgICB9CisgICAgICAgIGlmIChwb3J0ID4gNjU1MzUp
CisgICAgICAgICAgICByZXR1cm4gSW52YWxpZFBvcnQ7CisgICAgICAgIHJldHVybiBwb3J0Owor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGV4dHJhY3RGaWxlTmFtZShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzcGVjLCBjb25zdCBVUkxDb21wb25lbnQmIHBhdGgsIFVSTENvbXBvbmVudCYgZmlsZU5h
bWUpCisgICAgeworICAgICAgICAvLyBIYW5kbGUgZW1wdHkgcGF0aHM6IHRoZXkgaGF2ZSBubyBm
aWxlIG5hbWVzLgorICAgICAgICBpZiAocGF0aC5pc0VtcHR5T3JJbnZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIGZpbGVOYW1lLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvLyBTZWFyY2ggYmFja3dhcmRzIGZvciBhIHBhcmFtZXRlciwgd2hpY2ggaXMg
YSBub3JtYWxseSB1bnVzZWQgZmllbGQKKyAgICAgICAgLy8gaW4gYSBVUkwgZGVsaW1pdGVkIGJ5
IGEgc2VtaWNvbG9uLiBXZSBwYXJzZSB0aGUgcGFyYW1ldGVyIGFzIHBhcnQgb2YKKyAgICAgICAg
Ly8gdGhlIHBhdGgsIGJ1dCBoZXJlLCB3ZSBkb24ndCB3YW50IHRvIGNvdW50IGl0LiBUaGUgbGFz
dCBzZW1pY29sb24gaXMKKyAgICAgICAgLy8gdGhlIHBhcmFtZXRlci4KKyAgICAgICAgaW50IGZp
bGVFbmQgPSBwYXRoLmVuZCgpOworICAgICAgICBmb3IgKGludCBpID0gcGF0aC5lbmQoKSAtIDE7
IGkgPiBwYXRoLmJlZ2luKCk7IC0taSkgeworICAgICAgICAgICAgaWYgKHNwZWNbaV0gPT0gJzsn
KSB7CisgICAgICAgICAgICAgICAgZmlsZUVuZCA9IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgc2VhcmNoIGJhY2t3
YXJkcyBmcm9tIHRoZSBmaWxlbmFtZSBlbmQgdG8gdGhlIHByZXZpb3VzIHNsYXNoCisgICAgICAg
IC8vIHRvIGZpbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZW5hbWUuCisgICAgICAgIGZvciAo
aW50IGkgPSBmaWxlRW5kIC0gMTsgaSA+PSBwYXRoLmJlZ2luKCk7IC0taSkgeworICAgICAgICAg
ICAgaWYgKGlzVVJMU2xhc2goc3BlY1tpXSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaWxlIG5h
bWUgaXMgZXZlcnl0aGluZyBmb2xsb3dpbmcgdGhpcyBjaGFyYWN0ZXIgdG8gdGhlIGVuZAorICAg
ICAgICAgICAgICAgIGZpbGVOYW1lID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFuZ2UoaSArIDEsIGZp
bGVFbmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIE5vIHNsYXNoIGZvdW5kLCB0aGlzIG1lYW5zIHRoZSBpbnB1dCB3YXMg
ZGVnZW5lcmF0ZSAoZ2VuZXJhbGx5IHBhdGhzCisgICAgICAgIC8vIHdpbGwgc3RhcnQgd2l0aCBh
IHNsYXNoKS4gTGV0J3MgY2FsbCBldmVyeXRoaW5nIHRoZSBmaWxlIG5hbWUuCisgICAgICAgIGZp
bGVOYW1lID0gVVJMQ29tcG9uZW50Ojpmcm9tUmFuZ2UocGF0aC5iZWdpbigpLCBmaWxlRW5kKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBleHRyYWN0UXVlcnlLZXlWYWx1ZShjb25zdCBDaGFy
YWN0ZXJUeXBlKiBzcGVjLCBVUkxDb21wb25lbnQmIHF1ZXJ5LCBVUkxDb21wb25lbnQmIGtleSwg
VVJMQ29tcG9uZW50JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChxdWVyeS5pc0VtcHR5T3JJ
bnZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW50IHN0YXJ0
ID0gcXVlcnkuYmVnaW4oKTsKKyAgICAgICAgaW50IGN1cnJlbnQgPSBzdGFydDsKKyAgICAgICAg
aW50IGVuZCA9IHF1ZXJ5LmVuZCgpOworCisgICAgICAgIC8vIFdlIGFzc3VtZSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBpbnB1dCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSAia2V5IgorICAgICAgICAv
LyBhbmQgd2Ugc2tpcCB0byB0aGUgZW5kIG9mIGl0LgorICAgICAgICBrZXkuc2V0QmVnaW4oY3Vy
cmVudCk7CisgICAgICAgIHdoaWxlIChjdXJyZW50IDwgZW5kICYmIHNwZWNbY3VycmVudF0gIT0g
JyYnICYmIHNwZWNbY3VycmVudF0gIT0gJz0nKQorICAgICAgICAgICAgKytjdXJyZW50OworICAg
ICAgICBrZXkuc2V0TGVuZ3RoKGN1cnJlbnQgLSBrZXkuYmVnaW4oKSk7CisKKyAgICAgICAgLy8g
U2tpcCB0aGUgc2VwYXJhdG9yIGFmdGVyIHRoZSBrZXkgKGlmIGFueSkuCisgICAgICAgIGlmIChj
dXJyZW50IDwgZW5kICYmIHNwZWNbY3VycmVudF0gPT0gJz0nKQorICAgICAgICAgICAgKytjdXJy
ZW50OworCisgICAgICAgIC8vIEZpbmQgdGhlIHZhbHVlIHBhcnQuCisgICAgICAgIHZhbHVlLnNl
dEJlZ2luKGN1cnJlbnQpOworICAgICAgICB3aGlsZSAoY3VycmVudCA8IGVuZCAmJiBzcGVjW2N1
cnJlbnRdICE9ICcmJykKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAgdmFsdWUuc2V0
TGVuZ3RoKGN1cnJlbnQgLSB2YWx1ZS5iZWdpbigpKTsKKworICAgICAgICAvLyBGaW5hbGx5IHNr
aXAgdGhlIG5leHQgc2VwYXJhdG9yIGlmIGFueQorICAgICAgICBpZiAoY3VycmVudCA8IGVuZCAm
JiBzcGVjW2N1cnJlbnRdID09ICcmJykKKyAgICAgICAgICAgICsrY3VycmVudDsKKworICAgICAg
ICAvLyBTYXZlIHRoZSBuZXcgcXVlcnkKKyAgICAgICAgcXVlcnkgPSBVUkxDb21wb25lbnQ6OmZy
b21SYW5nZShjdXJyZW50LCBlbmQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKy8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwcm90ZWN0ZWQgb3IgcHJpdmF0ZS4KK3B1YmxpYzoKKyAg
ICAvLyBXZSB0cmVhdCBzbGFzaGVzIGFuZCBiYWNrc2xhc2hlcyB0aGUgc2FtZSBmb3IgSUUgY29t
cGF0aWJpbGl0eS4KKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNVUkxTbGFzaChDaGFyYWN0ZXJU
eXBlIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoID09ICcvJyB8fCBjaCA9PSAnXFwnOwor
ICAgIH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdHJpbSB0aGlzIGNoYXJh
Y3RlciBmcm9tIHRoZSBVUkwgYmVjYXVzZSBpdCBpcworICAgIC8vIGEgc3BhY2Ugb3IgYSBjb250
cm9sIGNoYXJhY3Rlci4KKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwo
Q2hhcmFjdGVyVHlwZSBjaCkKKyAgICB7CisgICAgICAgIHJldHVybiBjaCA8PSAnICc7CisgICAg
fQorCisgICAgLy8gR2l2ZW4gYW4gYWxyZWFkeS1pbml0aWFsaXplZCBiZWdpbiBpbmRleCBhbmQg
ZW5kIGluZGV4ICh0aGUgaW5kZXggYWZ0ZXIKKyAgICAvLyB0aGUgbGFzdCBDaGFyYWN0ZXJUeXBl
IGluIHNwZWMpLCB0aGlzIHNocmlua3MgdGhlIHJhbmdlIHRvIGVsaW1pbmF0ZQorICAgIC8vICJz
aG91bGQtYmUtdHJpbW1lZCIgY2hhcmFjdGVycy4KKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJp
bVVSTChjb25zdCBDaGFyYWN0ZXJUeXBlKiBzcGVjLCBpbnQmIGJlZ2luLCBpbnQmIGVuZCkKKyAg
ICB7CisgICAgICAgIC8vIFN0cmlwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgICAgICB3aGlsZSAoYmVnaW4gPCBlbmQgJiYgc2hvdWxkVHJpbUZyb21VUkwo
c3BlY1tiZWdpbl0pKQorICAgICAgICAgICAgKytiZWdpbjsKKworICAgICAgICAvLyBTdHJpcCB0
cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuIFdlIG5lZWQgdGhlID5p
CisgICAgICAgIC8vIHRlc3QgZm9yIHdoZW4gdGhlIGlucHV0IHN0cmluZyBpcyBhbGwgYmxhbmtz
OyB3ZSBkb24ndCB3YW50IHRvIGJhY2sKKyAgICAgICAgLy8gcGFzdCB0aGUgaW5wdXQuCisgICAg
ICAgIHdoaWxlIChlbmQgPiBiZWdpbiAmJiBzaG91bGRUcmltRnJvbVVSTChzcGVjW2VuZCAtIDFd
KSkKKyAgICAgICAgICAgIC0tZW5kOworICAgIH0KKworICAgIC8vIENvdW50cyB0aGUgbnVtYmVy
IG9mIGNvbnNlY3V0aXZlIHNsYXNoZXMgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIG9mZnNldAorICAg
IC8vIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgdGhlIGdpdmVuIGxlbmd0aC4KKyAgICBzdGF0aWMg
aW5saW5lIGludCBjb25zZWN1dGl2ZVNsYXNoZXMoY29uc3QgQ2hhcmFjdGVyVHlwZSAqc3RyaW5n
LCBpbnQgYmVnaW5PZmZzZXQsIGludCBzdHJpbmdMZW5ndGgpCisgICAgeworICAgICAgICBpbnQg
Y291bnQgPSAwOworICAgICAgICB3aGlsZSAoYmVnaW5PZmZzZXQgKyBjb3VudCA8IHN0cmluZ0xl
bmd0aCAmJiBpc1VSTFNsYXNoKHN0cmluZ1tiZWdpbk9mZnNldCArIGNvdW50XSkpCisgICAgICAg
ICAgICArK2NvdW50OworICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorCitwcml2YXRlOgor
ICAgIC8vIFVSTFBhcnNlciBjYW5ub3QgYmUgY29uc3RydWN0ZWQuCisgICAgVVJMUGFyc2VyKCk7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBpcyBhIHZhbGlk
IGRpZ2l0IHRvIHVzZSBpbiBhIHBvcnQuCisgICAgc3RhdGljIGlubGluZSBib29sIGlzUG9ydERp
Z2l0KENoYXJhY3RlclR5cGUgY2gpCisgICAgeworICAgICAgICByZXR1cm4gY2ggPj0gJzAnICYm
IGNoIDw9ICc5JzsKKyAgICB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIG5l
eHQgYXV0aG9yaXR5IHRlcm1pbmF0b3IgaW4gdGhlIGlucHV0IHN0YXJ0aW5nCisgICAgLy8gZnJv
bSBzdGFydE9mZnNldC4gSWYgbm8gdGVybWluYXRvciBpcyBmb3VuZCwgdGhlIHJldHVybiB2YWx1
ZSB3aWxsIGJlIGVxdWFsCisgICAgLy8gdG8gc3BlY0xlbmd0aC4KKyAgICBzdGF0aWMgaW50IG5l
eHRBdXRob3JpdHlUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqIHNwZWMsIGludCBzdGFy
dE9mZnNldCwgaW50IHNwZWNMZW5ndGgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gc3Rh
cnRPZmZzZXQ7IGkgPCBzcGVjTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpc1Bvc3Np
YmxlQXV0aG9yaXR5VGVybWluYXRvcihzcGVjW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
aTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3BlY0xlbmd0aDsgLy8gTm90IGZvdW5kLgor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHBhcnNlVXNlckluZm8oY29uc3QgQ2hhcmFjdGVyVHlw
ZSogc3BlYywgY29uc3QgVVJMQ29tcG9uZW50JiB1c2VyLCBVUkxDb21wb25lbnQmIHVzZXJuYW1l
LCBVUkxDb21wb25lbnQmIHBhc3N3b3JkKQorICAgIHsKKyAgICAgICAgLy8gRmluZCB0aGUgZmly
c3QgY29sb24gaW4gdGhlIHVzZXIgc2VjdGlvbiwgd2hpY2ggc2VwYXJhdGVzIHRoZQorICAgICAg
ICAvLyB1c2VybmFtZSBhbmQgcGFzc3dvcmQuCisgICAgICAgIGludCBjb2xvbk9mZnNldCA9IDA7
CisgICAgICAgIHdoaWxlIChjb2xvbk9mZnNldCA8IHVzZXIubGVuZ3RoKCkgJiYgc3BlY1t1c2Vy
LmJlZ2luKCkgKyBjb2xvbk9mZnNldF0gIT0gJzonKQorICAgICAgICAgICAgKytjb2xvbk9mZnNl
dDsKKworICAgICAgICBpZiAoY29sb25PZmZzZXQgPCB1c2VyLmxlbmd0aCgpKSB7CisgICAgICAg
ICAgICAvLyBGb3VuZCBzZXBhcmF0b3I6IDx1c2VybmFtZT46PHBhc3N3b3JkPgorICAgICAgICAg
ICAgdXNlcm5hbWUgPSBVUkxDb21wb25lbnQodXNlci5iZWdpbigpLCBjb2xvbk9mZnNldCk7Cisg
ICAgICAgICAgICBwYXNzd29yZCA9IFVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKHVzZXIuYmVnaW4o
KSArIGNvbG9uT2Zmc2V0ICsgMSwgdXNlci5iZWdpbigpICsgdXNlci5sZW5ndGgoKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBObyBzZXBhcmF0b3IsIHRyZWF0IGV2ZXJ5dGhp
bmcgYXMgdGhlIHVzZXJuYW1lCisgICAgICAgICAgICB1c2VybmFtZSA9IHVzZXI7CisgICAgICAg
ICAgICBwYXNzd29yZCA9IFVSTENvbXBvbmVudCgpOworICAgICAgICB9CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgcGFyc2VTZXJ2ZXJJbmZvKGNvbnN0IENoYXJhY3RlclR5cGUqIHNwZWMsIGNv
bnN0IFVSTENvbXBvbmVudCYgc2VydmVySW5mbywgVVJMQ29tcG9uZW50JiBob3N0LCBVUkxDb21w
b25lbnQmIHBvcnQpCisgICAgeworICAgICAgICBpZiAoIXNlcnZlckluZm8ubGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgIC8vIE5vIHNlcnZlciBpbmZvLCBob3N0IG5hbWUgaXMgZW1wdHkuCisgICAg
ICAgICAgICBob3N0LnJlc2V0KCk7CisgICAgICAgICAgICBwb3J0LnJlc2V0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgaG9zdCBzdGFydHMg
d2l0aCBhIGxlZnQtYnJhY2tldCwgYXNzdW1lIHRoZSBlbnRpcmUgaG9zdCBpcyBhbgorICAgICAg
ICAvLyBJUHY2IGxpdGVyYWwuIE90aGVyd2lzZSwgYXNzdW1lIG5vbmUgb2YgdGhlIGhvc3QgaXMg
YW4gSVB2NiBsaXRlcmFsLgorICAgICAgICAvLyBUaGlzIGFzc3VtcHRpb24gd2lsbCBiZSBvdmVy
cmlkZGVuIGlmIHdlIGZpbmQgYSByaWdodC1icmFja2V0LgorICAgICAgICAvLworICAgICAgICAv
LyBPdXIgSVB2NiBhZGRyZXNzIGNhbm9uaWNhbGl6YXRpb24gY29kZSByZXF1aXJlcyBib3RoIGJy
YWNrZXRzIHRvCisgICAgICAgIC8vIGV4aXN0LCBidXQgdGhlIGFiaWxpdHkgdG8gbG9jYXRlIGFu
IGluY29tcGxldGUgYWRkcmVzcyBjYW4gc3RpbGwgYmUKKyAgICAgICAgLy8gdXNlZnVsLgorICAg
ICAgICBpbnQgaXB2NlRlcm1pbmF0b3IgPSBzcGVjW3NlcnZlckluZm8uYmVnaW4oKV0gPT0gJ1sn
ID8gc2VydmVySW5mby5lbmQoKSA6IC0xOworICAgICAgICBpbnQgY29sb24gPSAtMTsKKworICAg
ICAgICAvLyBGaW5kIHRoZSBsYXN0IHJpZ2h0LWJyYWNrZXQsIGFuZCB0aGUgbGFzdCBjb2xvbi4K
KyAgICAgICAgZm9yIChpbnQgaSA9IHNlcnZlckluZm8uYmVnaW4oKTsgaSA8IHNlcnZlckluZm8u
ZW5kKCk7IGkrKykgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjW2ldKSB7CisgICAgICAgICAg
ICBjYXNlICddJzoKKyAgICAgICAgICAgICAgICBpcHY2VGVybWluYXRvciA9IGk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBj
b2xvbiA9IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGNvbG9uID4gaXB2NlRlcm1pbmF0b3IpIHsKKyAgICAgICAgICAgIC8vIEZvdW5kIGEg
cG9ydCBudW1iZXI6IDxob3N0bmFtZT46PHBvcnQ+CisgICAgICAgICAgICBob3N0ID0gVVJMQ29t
cG9uZW50Ojpmcm9tUmFuZ2Uoc2VydmVySW5mby5iZWdpbigpLCBjb2xvbik7CisgICAgICAgICAg
ICBpZiAoIWhvc3QubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgaG9zdC5yZXNldCgpOworICAg
ICAgICAgICAgcG9ydCA9IFVSTENvbXBvbmVudDo6ZnJvbVJhbmdlKGNvbG9uICsgMSwgc2VydmVy
SW5mby5lbmQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBObyBwb3J0OiA8
aG9zdG5hbWU+CisgICAgICAgICAgICBob3N0ID0gc2VydmVySW5mbzsKKyAgICAgICAgICAgIHBv
cnQucmVzZXQoKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gVVNFKFdURlVSTCkKKworI2VuZGlmIC8vIFVSTFBhcnNlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUXVlcnlDYW5vbmljYWxp
emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMUXVlcnlDYW5vbmlj
YWxpemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YzQ5N2ZkMjRmZjQ0ZGQ0ZTNjNDBmMjM3NjBjOGU0MzJi
ODZkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3Ny
Yy9VUkxRdWVyeUNhbm9uaWNhbGl6ZXIuaApAQCAtMCwwICsxLDEwOSBAQAorLy8gQ29weXJpZ2h0
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2lmbmRlZiBVUkxRdWVyeUNhbm9uaWNh
bGl6ZXJfaAorI2RlZmluZSBVUkxRdWVyeUNhbm9uaWNhbGl6ZXJfaAorCisjaWYgVVNFKFdURlVS
TCkKKworI2luY2x1ZGUgIlJhd1VSTEJ1ZmZlci5oIgorI2luY2x1ZGUgIlVSTEJ1ZmZlci5oIgor
I2luY2x1ZGUgIlVSTENoYXJhY3RlclR5cGVzLmgiCisjaW5jbHVkZSAiVVJMQ29tcG9uZW50Lmgi
CisjaW5jbHVkZSAiVVJMRXNjYXBlLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJbkNoYXIsIHR5cGVuYW1lIE91dENoYXIsIHZvaWQgY29udmVydENoYXJzZXQoY29u
c3QgSW5DaGFyKiwgaW50IGxlbmd0aCwgVVJMQnVmZmVyPGNoYXI+Jik+CitjbGFzcyBVUkxRdWVy
eUNhbm9uaWNhbGl6ZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNhbm9uaWNhbGl6ZShj
b25zdCBJbkNoYXIqIHNwZWMsIGNvbnN0IFVSTENvbXBvbmVudCYgcXVlcnksIFVSTEJ1ZmZlcjxP
dXRDaGFyPiYgYnVmZmVyLCBVUkxDb21wb25lbnQmIHJlc3VsdFF1ZXJ5KQorICAgIHsKKyAgICAg
ICAgaWYgKHF1ZXJ5Lmxlbmd0aCgpIDwgMCkgeworICAgICAgICAgICAgcmVzdWx0UXVlcnkgPSBV
UkxDb21wb25lbnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGJ1ZmZlci0+YXBwZW5kKCc/Jyk7CisgICAgICAgIHJlc3VsdFF1ZXJ5LnNldEJlZ2luKGJ1ZmZl
ci0+bGVuZ3RoKCkpOworICAgICAgICBjb252ZXJ0VG9RdWVyeUVuY29kaW5nKHNwZWMsIHF1ZXJ5
LCBidWZmZXIpOworICAgICAgICByZXN1bHRRdWVyeS5zZXRMZW5ndGgoYnVmZmVyLT5sZW5ndGgo
KSAtIHJlc3VsdFF1ZXJ5LmJlZ2luKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Ym9vbCBpc0FsbEFTQ0lJKGNvbnN0IEluQ2hhciogc3BlYywgY29uc3QgVVJMQ29tcG9uZW50JiBx
dWVyeSkKKyAgICB7CisgICAgICAgIGludCBlbmQgPSBxdWVyeS5lbmQoKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IHF1ZXJ5LmJlZ2luKCk7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzcGVjW2ldKSA+PSAweDgwKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyNpZm5kZWYgTkRFQlVHCisgICAgc3RhdGljIGJvb2wgaXNSYXc4Qml0KGNvbnN0IEluQ2hhciog
c291cmNlLCBpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZTsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoc291cmNlW2ldICYgMHhGRiAhPSBz
b3VyY2VbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgc3RhdGljIHZvaWQgYXBwZW5k
UmF3OEJpdFF1ZXJ5U3RyaW5nKGNvbnN0IEluQ2hhciogc291cmNlLCBpbnQgbGVuZ3RoLCBVUkxC
dWZmZXI8T3V0Q2hhcj4qIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JhdzhCaXQo
c291cmNlLCBsZW5ndGgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgaWYgKCFVUkxDaGFyYWN0ZXJUeXBlczo6aXNRdWVyeUNoYXIoc291
cmNlW2ldKSkKKyAgICAgICAgICAgICAgICBhcHBlbmRVUkxFc2NhcGVkQ2hhcmFjdGVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHNvdXJjZVtpXSksIGJ1ZmZlcik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4oc291
cmNlW2ldKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VG9R
dWVyeUVuY29kaW5nKGNvbnN0IEluQ2hhciogc3BlYywgY29uc3QgVVJMQ29tcG9uZW50JiBxdWVy
eSwgVVJMQnVmZmVyPE91dENoYXI+JiBidWZmZXIpCisgICAgeworICAgICAgICBpZiAoaXNBbGxB
U0NJSShzcGVjLCBxdWVyeSkpIHsKKyAgICAgICAgICAgIGFwcGVuZFJhdzhCaXRRdWVyeVN0cmlu
Zygmc3BlY1txdWVyeS5iZWdpbigpXSwgcXVlcnkubGVuZ3RoKCksIGJ1ZmZlcik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSYXdVUkxCdWZmZXI8Y2hhciwgMTAy
ND4gY29udmVydGVkUXVlcnk7CisgICAgICAgIGNvbnZlcnRDaGFyc2V0KHNwZWMsIHF1ZXJ5LCBj
b252ZXJ0ZWRRdWVyeSk7CisgICAgICAgIGFwcGVuZFJhdzhCaXRRdWVyeVN0cmluZyhjb252ZXJ0
ZWRRdWVyeS5kYXRhKCksIGNvbnZlcnRlZFF1ZXJ5Lmxlbmd0aCgpLCBidWZmZXIpOworICAgIH0K
K307CisKK30KKworI2VuZGlmIC8vIFVTRShXVEZVUkwpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyYjBkNDViMzk5ZWQxYjMwYTQxZjA1MWNkOTdkMjc0MTliYWY1YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAKQEAg
LTAsMCArMSwxMTQgQEAKKy8qIEJhc2VkIG9uIG5zVVJMUGFyc2Vycy5jYyBmcm9tIE1vemlsbGEK
KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIENvcHlyaWdodCAo
QykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBPdGhl
ciBjb250cmlidXRvcnM6CisgKiAgIERhcmluIEZpc2hlciAob3JpZ2luYWwgYXV0aG9yKQorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIGVpdGhlciB0aGUgTW96aWxs
YSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKKyAqIGh0dHA6Ly93d3cubW96
aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQv
Z3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9m
IHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBh
Ym92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCisgKiB2ZXJzaW9uIG9mIHRo
aXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCisgKiBsaWNl
bnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2Ug
eW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlv
dXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxh
Y2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCisgKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVk
IGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgorICogSWYgeW91IGRv
IG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91
cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBM
IG9yIHRoZSBHUEwuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVSTFNl
Z21lbnRzLmgiCisKKyNpZiBVU0UoV1RGVVJMKQorCituYW1lc3BhY2UgV1RGIHsKKworaW50IFVS
TFNlZ21lbnRzOjpsZW5ndGgoKSBjb25zdAoreworICAgIGlmIChmcmFnbWVudC5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiBmcmFnbWVudC5lbmQoKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc0Jl
Zm9yZShGcmFnbWVudCwgZmFsc2UpOworfQorCitpbnQgVVJMU2VnbWVudHM6OmNoYXJhY3RlcnNC
ZWZvcmUoQ29tcG9uZW50VHlwZSB0eXBlLCBib29sIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbnN0Cit7
CisgICAgaWYgKHR5cGUgPT0gU2NoZW1lKQorICAgICAgICByZXR1cm4gc2NoZW1lLmJlZ2luKCk7
CisKKyAgICBpbnQgY3VycmVudCA9IDA7CisgICAgaWYgKHNjaGVtZS5pc1ZhbGlkKCkpCisgICAg
ICAgIGN1cnJlbnQgPSBzY2hlbWUuZW5kKCkgKyAxOyAvLyBBZHZhbmNlIG92ZXIgdGhlICc6JyBh
dCB0aGUgZW5kIG9mIHRoZSBzY2hlbWUuCisKKyAgICBpZiAodXNlcm5hbWUuaXNWYWxpZCgpKSB7
CisgICAgICAgIGlmICh0eXBlIDw9IFVzZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHVzZXJu
YW1lLmJlZ2luKCk7CisgICAgICAgIGN1cnJlbnQgPSB1c2VybmFtZS5lbmQoKSArIDE7IC8vIEFk
dmFuY2Ugb3ZlciB0aGUgJ0AnIG9yICc6JyBhdCB0aGUgZW5kLgorICAgIH0KKworICAgIGlmIChw
YXNzd29yZC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0gUGFzc3dvcmQpCisgICAg
ICAgICAgICByZXR1cm4gcGFzc3dvcmQuYmVnaW4oKTsKKyAgICAgICAgY3VycmVudCA9IHBhc3N3
b3JkLmVuZCgpICsgMTsgLy8gQWR2YW5jZSBvdmVyIHRoZSAnQCcgYXQgdGhlIGVuZC4KKyAgICB9
CisKKyAgICBpZiAoaG9zdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0gSG9zdCkK
KyAgICAgICAgICAgIHJldHVybiBob3N0LmJlZ2luKCk7CisgICAgICAgIGN1cnJlbnQgPSBob3N0
LmVuZCgpOworICAgIH0KKworICAgIGlmIChwb3J0LmlzVmFsaWQoKSkgeworICAgICAgICBpZiAo
dHlwZSA8IFBvcnQgfHwgKHR5cGUgPT0gUG9ydCAmJiBpbmNsdWRlRGVsaW1pdGVyKSkKKyAgICAg
ICAgICAgIHJldHVybiBwb3J0LmJlZ2luKCkgLSAxOyAvLyBCYWNrIG92ZXIgZGVsaW1pdGVyLgor
ICAgICAgICBpZiAodHlwZSA9PSBQb3J0KQorICAgICAgICAgICAgcmV0dXJuIHBvcnQuYmVnaW4o
KTsgLy8gRG9uJ3Qgd2FudCBkZWxpbWl0ZXIgY291bnRlZC4KKyAgICAgICAgY3VycmVudCA9IHBv
cnQuZW5kKCk7CisgICAgfQorCisgICAgaWYgKHBhdGguaXNWYWxpZCgpKSB7CisgICAgICAgIGlm
ICh0eXBlIDw9IFBhdGgpCisgICAgICAgICAgICByZXR1cm4gcGF0aC5iZWdpbigpOworICAgICAg
ICBjdXJyZW50ID0gcGF0aC5lbmQoKTsKKyAgICB9CisKKyAgICBpZiAocXVlcnkuaXNWYWxpZCgp
KSB7CisgICAgICAgIGlmICh0eXBlIDwgUXVlcnkgfHwgKHR5cGUgPT0gUXVlcnkgJiYgaW5jbHVk
ZURlbGltaXRlcikpCisgICAgICAgICAgICByZXR1cm4gcXVlcnkuYmVnaW4oKSAtIDE7IC8vIEJh
Y2sgb3ZlciBkZWxpbWl0ZXIuCisgICAgICAgIGlmICh0eXBlID09IFF1ZXJ5KQorICAgICAgICAg
ICAgcmV0dXJuIHF1ZXJ5LmJlZ2luKCk7IC8vIERvbid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQu
CisgICAgICAgIGN1cnJlbnQgPSBxdWVyeS5lbmQoKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21l
bnQuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBlID09IEZyYWdtZW50ICYmICFpbmNsdWRl
RGVsaW1pdGVyKQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LmJlZ2luKCk7IC8vIEJhY2sg
b3ZlciBkZWxpbWl0ZXIuCisKKyAgICAgICAgLy8gV2hlbiB0aGVyZSBpcyBhIGZyYWdtZW50IGFu
ZCB3ZSBnZXQgaGVyZSwgdGhlIGNvbXBvbmVudCB3ZSB3YW50ZWQgd2FzIGJlZm9yZQorICAgICAg
ICAvLyB0aGlzIGFuZCBub3QgZm91bmQsIHNvIHdlIGFsd2F5cyBrbm93IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGZyYWdtZW50IGlzIHJpZ2h0LgorICAgICAgICByZXR1cm4gZnJhZ21lbnQuYmVnaW4o
KSAtIDE7IC8vIERvbid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQuCisgICAgfQorCisgICAgcmV0
dXJuIGN1cnJlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVNFKFdU
RlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxT
ZWdtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjRkMDYxOWI4NjliM2Q5YTY2ZjNjOWI4ZDQyYzllNzQyZGU2ZjAwOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxT
ZWdtZW50cy5oCkBAIC0wLDAgKzEsMTA5IEBACisvLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmbmRlZiBVUkxTZWdtZW50c19oCisjZGVmaW5lIFVSTFNlZ21lbnRz
X2gKKworI2luY2x1ZGUgIlVSTENvbXBvbmVudC5oIgorCisjaWYgVVNFKFdURlVSTCkKKworbmFt
ZXNwYWNlIFdURiB7CisKKy8vIEEgc3RydWN0dXJlIHRoYXQgaG9sZHMgdGhlIGlkZW50aWZpZWQg
cGFydHMgb2YgYW4gaW5wdXQgVVJMLiBUaGlzIHN0cnVjdHVyZQorLy8gZG9lcyBOT1Qgc3RvcmUg
dGhlIFVSTCBpdHNlbGYuIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvIHN0b3JlIHRoZSBVUkwgdGV4
dAorLy8gYW5kIGl0cyBjb3JyZXNwb25kaW5nIFBhcnNlZCBzdHJ1Y3R1cmUgc2VwYXJhdGVseS4K
K2NsYXNzIFVSTFNlZ21lbnRzIHsKK3B1YmxpYzoKKyAgICAvLyBJZGVudGlmaWVzIGRpZmZlcmVu
dCBjb21wb25lbnRzLgorICAgIGVudW0gQ29tcG9uZW50VHlwZSB7CisgICAgICAgIFNjaGVtZSwK
KyAgICAgICAgVXNlcm5hbWUsCisgICAgICAgIFBhc3N3b3JkLAorICAgICAgICBIb3N0LAorICAg
ICAgICBQb3J0LAorICAgICAgICBQYXRoLAorICAgICAgICBRdWVyeSwKKyAgICAgICAgRnJhZ21l
bnQsCisgICAgfTsKKworICAgIFVSTFNlZ21lbnRzKCkgeyB9CisKKyAgICAvLyBSZXR1cm5zIHRo
ZSBsZW5ndGggb2YgdGhlIFVSTCAodGhlIGVuZCBvZiB0aGUgbGFzdCBjb21wb25lbnQpLgorICAg
IC8vCisgICAgLy8gTm90ZSB0aGF0IGZvciBzb21lIGludmFsaWQsIG5vbi1jYW5vbmljYWwgVVJM
cywgdGhpcyBtYXkgbm90IGJlIHRoZSBsZW5ndGgKKyAgICAvLyBvZiB0aGUgc3RyaW5nLiBGb3Ig
ZXhhbXBsZSAiaHR0cDovLyI6IHRoZSBwYXJzZWQgc3RydWN0dXJlIHdpbGwgb25seQorICAgIC8v
IGNvbnRhaW4gYW4gZW50cnkgZm9yIHRoZSBmb3VyLWNoYXJhY3RlciBzY2hlbWUsIGFuZCBpdCBk
b2Vzbid0IGtub3cgYWJvdXQKKyAgICAvLyB0aGUgIjovLyIuIEZvciBhbGwgb3RoZXIgbGFzdC1j
b21wb25lbnRzLCBpdCB3aWxsIHJldHVybiB0aGUgcmVhbCBsZW5ndGguCisgICAgaW50IGxlbmd0
aCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYmVm
b3JlIHRoZSBnaXZlbiBjb21wb25lbnQgaWYgaXQgZXhpc3RzLAorICAgIC8vIG9yIHdoZXJlIHRo
ZSBjb21wb25lbnQgd291bGQgYmUgaWYgaXQgZGlkIGV4aXN0LiBUaGlzIHdpbGwgcmV0dXJuIHRo
ZQorICAgIC8vIHN0cmluZyBsZW5ndGggaWYgdGhlIGNvbXBvbmVudCB3b3VsZCBiZSBhcHBlbmRl
ZCB0byB0aGUgZW5kLgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgY2FuIGdldCBhIGxp
dHRsZSBmdW5ueSBmb3IgdGhlIHBvcnQsIHF1ZXJ5LCBhbmQgZnJhZ21lbnQKKyAgICAvLyBjb21w
b25lbnRzIHdoaWNoIGhhdmUgYSBkZWxpbWl0ZXIgdGhhdCBpcyBub3QgY291bnRlZCBhcyBwYXJ0
IG9mIHRoZQorICAgIC8vIGNvbXBvbmVudC4gVGhlIHxpbmNsdWRlRGVsaW1pdGVyfCBmbGFnIGNv
bnRyb2xzIGlmIHlvdSB3YW50IHRoaXMgY291bnRlZAorICAgIC8vIGFzIHBhcnQgb2YgdGhlIGNv
bXBvbmVudCBvciBub3Qgd2hlbiB0aGUgY29tcG9uZW50IGV4aXN0cy4KKyAgICAvLworICAgIC8v
IFRoaXMgZXhhbXBsZSBzaG93cyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZmxhZ3Mg
Zm9yIHR3byBvZiB0aGVzZQorICAgIC8vIGRlbGltaXRlZCBjb21wb25lbnRzIHRoYXQgaXMgcHJl
c2VudCAodGhlIHBvcnQgYW5kIHF1ZXJ5KSBhbmQgb25lIHRoYXQKKyAgICAvLyBpc24ndCAodGhl
IHJlZmVyZW5jZSkuIFRoZSBjb21wb25lbnRzIHRoYXQgdGhpcyBmbGFnIGFmZmVjdHMgYXJlIG1h
cmtlZAorICAgIC8vIHdpdGggYSAqLgorICAgIC8vICAgICAgICAgICAgICAgICAwICAgICAgICAg
MSAgICAgICAgIDIKKyAgICAvLyAgICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkw
CisgICAgLy8gRXhhbXBsZSBpbnB1dDogaHR0cDovL2Zvbzo4MC8/cXVlcnkKKyAgICAvLyAgICAg
ICAgICAgICAgaW5jbHVkZV9kZWxpbT10cnVlLCAgLi4uPWZhbHNlICAoIjwtIiBpbmRpY2F0ZXMg
ZGlmZmVyZW50KQorICAgIC8vICAgICAgU2NoZW1lOiAwICAgICAgICAgICAgICAgICAgICAwCisg
ICAgLy8gICAgVXNlcm5hbWU6IDUgICAgICAgICAgICAgICAgICAgIDUKKyAgICAvLyAgICBQYXNz
d29yZDogNSAgICAgICAgICAgICAgICAgICAgNQorICAgIC8vICAgICAgICBIb3N0OiA3ICAgICAg
ICAgICAgICAgICAgICA3CisgICAgLy8gICAgICAgKlBvcnQ6IDEwICAgICAgICAgICAgICAgICAg
IDExIDwtCisgICAgLy8gICAgICAgIFBhdGg6IDEzICAgICAgICAgICAgICAgICAgIDEzCisgICAg
Ly8gICAgICAqUXVlcnk6IDE0ICAgICAgICAgICAgICAgICAgIDE1IDwtCisgICAgLy8gICAgICAg
ICpGcmFnbWVudDogMjAgICAgICAgICAgICAgICAgICAgMjAKKyAgICAvLworICAgIGludCBjaGFy
YWN0ZXJzQmVmb3JlKENvbXBvbmVudFR5cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uc3Q7
CisKKyAgICAvLyBFYWNoIGNvbXBvbmVudCBleGNsdWRlcyB0aGUgcmVsYXRlZCBkZWxpbWl0ZXJz
IGFuZCBoYXMgYSBsZW5ndGggb2YgLTEKKyAgICAvLyBpZiB0aGF0IGNvbXBvbmVudCBpcyBhYnNl
bnQgYnV0IDAgaWYgdGhlIGNvbXBvbmVudCBleGlzdHMgYnV0IGlzIGVtcHR5LgorICAgIFVSTENv
bXBvbmVudCBzY2hlbWU7CisgICAgVVJMQ29tcG9uZW50IHVzZXJuYW1lOworICAgIFVSTENvbXBv
bmVudCBwYXNzd29yZDsKKyAgICBVUkxDb21wb25lbnQgaG9zdDsKKyAgICBVUkxDb21wb25lbnQg
cG9ydDsKKyAgICBVUkxDb21wb25lbnQgcGF0aDsKKyAgICBVUkxDb21wb25lbnQgcXVlcnk7Cisg
ICAgVVJMQ29tcG9uZW50IGZyYWdtZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNl
bmRpZiAvLyBVU0UoV1RGVVJMKQorCisjZW5kaWYgLy8gVVJMU2VnbWVudHNfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiYjYxYTk5NGY4YWE2
M2Q3MTkwM2JhZWM5YzE4N2JmZWE1ZTM1YTcuLmI0YjQ1NTE4NmVlNDMxMTkyNDBhNWRlYjdkYzc5
YzE3NzRhNTgzNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJl
bmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGJhY2sgV1RGVVJMIHRvIFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyOTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmbGFn
IHRvIGJ1aWxkLXdlYmtpdCB0byBlYXNpbHkgYnVpbGQgV2ViS2l0IHdpdGggV1RGVVJMLgorCisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTItMDEtMjcgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoZSBjcHAgcGFyc2VyIG9mIHBy
ZXBhcmUtQ2hhbmdlTG9nIHRyZWF0cyBpZiguLi4pIHt9IGFzIGEgbWV0aG9kCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CmluZGV4IDI3YTA4NGVlMmE1N2VjYTgyOWFiZThjYTg1NjlkNTBjMjg1YTA4YTkuLjVjYmIxYmYz
MTkxYzM3ZWZjYzJhMzE4YTUxYzA0NzE1ODNlODlhOWYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC0xMzUs
NiArMTM1LDcgQEAgbXkgKAogICAgICR3ZWJUaW1pbmdTdXBwb3J0LAogICAgICR3b3JrZXJzU3Vw
cG9ydCwKICAgICAkeHNsdFN1cHBvcnQsCisgICAgJHd0ZlVSTCwKICk7CiAKIG15IEBmZWF0dXJl
cyA9ICgKQEAgLTM0Miw2ICszNDMsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24g
PT4gIndvcmtlcnMiLCBkZXNjID0+ICJUb2dnbGUgV2ViIFdvcmtlcnMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9XT1JLRVJTIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgp
IHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHdvcmtlcnNTdXBwb3J0
IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAid3RmdXJsIiwgZGVzYyA9PiAiVG9vZ2xlIHRoZSB1c2Ug
b2YgV1RGVVJMIGZvciBVUkwgcGFyc2luZyIsCisgICAgICBkZWZpbmUgPT4gIldURl9VU0VfV1RG
VVJMIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHd0ZlVSTCB9LAorCiAgICAgeyBvcHRpb24g
PT4gInhzbHQiLCBkZXNjID0+ICJUb2dnbGUgWFNMVCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX1hTTFQiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkeHNsdFN1cHBvcnQgfSwK
ICk7CkBAIC01MTMsNyArNTE3LDcgQEAgaWYgKGlzR3RrKCkpIHsKICAgICB9CiAKICAgICBmb3Jl
YWNoIChAZmVhdHVyZXMpIHsKLSAgICAgICAgaWYgKCRfLT57b3B0aW9ufSBuZSAiY292ZXJhZ2Ui
KSB7CisgICAgICAgIGlmICgkXy0+e29wdGlvbn0gbmUgImNvdmVyYWdlIiAmJiAkXy0+e29wdGlv
bn0gbmUgInd0ZnVybCIpIHsKICAgICAgICAgICAgIG15ICRvcHRpb24gPSBvcHRpb24oJF8tPntk
ZWZpbmV9LCAkeyRfLT57dmFsdWV9fSwgJF8tPntkZWZhdWx0fSk7CiAgICAgICAgICAgICBwdXNo
IEBvcHRpb25zLCAkb3B0aW9uIHVubGVzcyAkb3B0aW9uIGVxICIiOwogICAgICAgICB9CkBAIC02
ODQsNiArNjg4LDcgQEAgZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogICAgIH0gZWxzaWYgKGlz
QXBwbGVNYWNXZWJLaXQoKSkgewogICAgICAgICBteSBAbG9jYWxfb3B0aW9ucyA9IEBvcHRpb25z
OwogICAgICAgICBwdXNoIEBsb2NhbF9vcHRpb25zLCBYY29kZUNvdmVyYWdlU3VwcG9ydE9wdGlv
bnMoKSBpZiAkY292ZXJhZ2VTdXBwb3J0ICYmICRwcm9qZWN0IG5lICJBTkdMRSI7CisgICAgICAg
IHB1c2ggQGxvY2FsX29wdGlvbnMsICJPVEhFUl9DRkxBR1M9IFwkKE9USEVSX0NGTEFHUykgLURX
VEZfVVNFX1dURlVSTD0xIiBpZiAkd3RmVVJMOwogICAgICAgICBteSAkdXNlR1lQUHJvamVjdCA9
ICR1c2VHWVAgJiYgKCRwcm9qZWN0ID1+ICJXZWJDb3JlfEphdmFTY3JpcHRDb3JlIik7CiAgICAg
ICAgIG15ICRwcm9qZWN0UGF0aCA9ICR1c2VHWVBQcm9qZWN0ID8gImd5cC8kcHJvamVjdCIgOiAk
cHJvamVjdDsKICAgICAgICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCRwcm9qZWN0UGF0
aCwgJGNsZWFuLCBAbG9jYWxfb3B0aW9ucywgQEFSR1YpOwo=
</data>
<flag name="review"
          id="125708"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>