<?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>171076</bug_id>
          
          <creation_ts>2017-04-20 14:23:54 -0700</creation_ts>
          <short_desc>Split cryptographic digest computation and parsing out of CSP code so it can be reused</short_desc>
          <delta_ts>2017-04-21 15:14:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148363</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1299296</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-20 14:23:54 -0700</bug_when>
    <thetext>Split cryptographic digest computation and parsing out of CSP code so it can be reused</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299312</commentid>
    <comment_count>1</comment_count>
      <attachid>307640</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-20 14:48:23 -0700</bug_when>
    <thetext>Created attachment 307640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299325</commentid>
    <comment_count>2</comment_count>
      <attachid>307643</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-20 15:07:58 -0700</bug_when>
    <thetext>Created attachment 307643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299336</commentid>
    <comment_count>3</comment_count>
      <attachid>307647</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-20 15:35:12 -0700</bug_when>
    <thetext>Created attachment 307647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299838</commentid>
    <comment_count>4</comment_count>
      <attachid>307647</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-21 13:42:43 -0700</bug_when>
    <thetext>Comment on attachment 307647
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=307647&amp;action=review

r=me

&gt; Source/WTF/wtf/text/Base64.h:154
&gt; +WTF_EXPORT_PRIVATE bool base64Decode(const StringView&amp;, SignedOrUnsignedCharVectorAdapter, unsigned options = Base64Default);

We usually take StringView in parameter, rather than const StringView&amp; I believe.

&gt; Source/WTF/wtf/text/Base64.h:192
&gt; +WTF_EXPORT_PRIVATE bool base64URLDecode(const StringView&amp;, SignedOrUnsignedCharVectorAdapter);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299926</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-04-21 15:14:10 -0700</bug_when>
    <thetext>Committed revision 215646.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307640</attachid>
            <date>2017-04-20 14:48:23 -0700</date>
            <delta_ts>2017-04-20 15:07:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171076-20170420144823.patch</filename>
            <type>text/plain</type>
            <size>32857</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA0LTIwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgY3J5cHRvZ3JhcGhpYyBkaWdlc3QgY29tcHV0YXRp
b24gYW5kIHBhcnNpbmcgb3V0IG9mIENTUCBjb2RlIHNvIGl0IGNhbiBiZSByZXVzZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvQmFz
ZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RGVjb2RlKToKKyAgICAgICAgKFdURjo6YmFz
ZTY0VVJMRGVjb2RlKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBmb3IgYmFzZTY0RGVjb2RlIGFu
ZCBiYXNlNjRVUkxEZWNvZGUgdGhhdCB0YWtlIGEgU3RyaW5nVmlldywgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMKKyAgICAgICAgb2YgU3RyaW5ncy4KKworICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5o
OgorICAgICAgICAoV1RGOjppc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKToKKyAgICAgICAg
TW92ZSBoZWxwZXIgcHJlZGljYXRlIHVzZWQgZm9yIHBhcnNpbmcgZWl0aGVyIHR5cGUgb2YgQmFz
ZTY0IGVuY29kZWQgc3RyaW5nIGZyb20gV2ViQ29yZS4KKwogMjAxNy0wNC0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgbm90Rm91bmQgaW50byBpdHMgb3du
IGZpbGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQCBib29sIGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTaWduCiAgICAgcmV0
dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIG91dCwg
b3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3Ry
aW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2ln
bmVkIG9wdGlvbnMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgb3B0aW9ucywgYmFzZTY0RGVj
TWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2KCks
IGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOworfQorCiBib29sIGJhc2U2NERl
Y29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFk
YXB0ZXIgb3V0LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIG91dC5jbGVhcigpOwpAQCAtMjk4
LDYgKzMwNiwxNCBAQCBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTCiAg
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgs
IG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBvdXQpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFz
ZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwor
fQorCiBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRP
clVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewogICAgIG91dC5jbGVhcigpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0Jhc2U2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIEJhc2U2NF9oCi0jZGVmaW5lIEJhc2U2NF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC0xNTIsNiArMTUxLDcgQEAgU3RyaW5nIGJhc2U2NEVuY29kZShDb25zdFNpZ25l
ZE9yVW5zaWduZQogU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RG9Ob3RJbnNlcnRMRnMpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0
b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nVmlldyYsIFNpZ25lZE9yVW5z
aWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQp
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9
IEJhc2U2NERlZmF1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1
bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CiAKQEAgLTE4OSw2ICsxODksNyBAQCBT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlKENvbnN0U2lnbmVkT3JVbnNpCiBTdHJpbmcgYmFzZTY0VVJM
RW5jb2RlKGNvbnN0IENTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRl
cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5n
VmlldyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlcik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgU2lnbmVkT3JV
bnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGJhc2U2
NFVSTERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVj
dG9yQWRhcHRlcik7CiAKQEAgLTIxMiw2ICsyMTMsMTEgQEAgaW5saW5lIFN0cmluZyBiYXNlNjRV
UkxFbmNvZGUoY29uc3QgQ1N0cgogICAgIHJldHVybiBiYXNlNjRVUkxFbmNvZGUoaW4uZGF0YSgp
LCBpbi5sZW5ndGgoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKENoYXJhY3RlclR5
cGUgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8
fCBjID09ICcvJyB8fCBjID09ICctJyB8fCBjID09ICdfJzsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6QmFzZTY0RW5jb2RlUG9saWN5OwpAQCAtMjIyLDUgKzIyOCw0IEBA
IHVzaW5nIFdURjo6QmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMKIHVzaW5nIFdURjo6YmFz
ZTY0RW5jb2RlOwogdXNpbmcgV1RGOjpiYXNlNjREZWNvZGU7CiB1c2luZyBXVEY6OmJhc2U2NFVS
TERlY29kZTsKLQotI2VuZGlmIC8vIEJhc2U2NF9oCit1c2luZyBXVEY6OmlzQmFzZTY0T3JCYXNl
NjRVUkxDaGFyYWN0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAx
Ny0wNC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFNwbGl0IGNy
eXB0b2dyYXBoaWMgZGlnZXN0IGNvbXB1dGF0aW9uIGFuZCBwYXJzaW5nIG91dCBvZiBDU1AgY29k
ZSBzbyBpdCBjYW4gYmUgcmV1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGYWN0b3Igb3V0IGNyeXB0b2dyYXBoaWMgZGlnZXN0IHBhcnNpbmcgZnJv
bSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb2RlCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJl
IHJldXNlZCBmb3IgdGhlIFN1YnJlc291cmNlIEludGVncml0eSBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNraXBFeGFjdGx5
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICBBZGQgcGFyc2luZyBoZWxwZXIgdG8gbWF0Y2gg
LyBza2lwIG92ZXIgYSBjb25zdGFudCBzdHJpbmcsIHVzaW5nIElnbm9yaW5nQVNDSUlDYXNlIHNl
bWFudGljcy4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2lu
Z1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KToKKyAgICAg
ICAgTW92ZSBwYXJzaW5nIG9mIGNyeXB0b2dyYXBoaWMtZGlnZXN0IHN0cmluZ3MgZnJvbSBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorICAgICAgICBhbmQgb3B0aW1pemUgaXQg
YSBsaXR0bGUgYnkgYXZvaWRpbmcgU3RyaW5nIGFsbG9jYXRpb25zIGFuZCBnZW5lcmFsaXppbmcg
aXQgc28gdGhhdCBpdAorICAgICAgICBjYW4gcGFyc2UgZWl0aGVyIFVDaGFycyBvciBMQ2hhcnMu
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD46Okhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFz
aDxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+OjpIYXNoOjplcXVhbCk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+
Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIEFkZCBhIHN0cnVjdCAocmF0aGVyIHRoYW4gdXNp
bmcgYSBzdGQ6OnBhaXIpIHRvIHJlcHJlc2VudCB0aGUgZGlnZXN0ICsgYWxnb3JpdGhtLiBBbmQg
YWRkCisgICAgICAgIEhhc2hUcmFpdHMgc28gaXQgY2FuIGJlIHVzZWQgYXMgSGFzaE1hcC4KKyAg
ICAgICAgCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJ
blBvbGljaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKTog
RGVsZXRlZC4KKyAgICAgICAgTW92ZSBhbGdvcml0aG0gY29udmVyc2lvbiB0byBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuY3BwLiBNYWtlIHVzZSBvZiBuZXcgCisgICAgICAgIGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JCeXRlcyBmdW5jdGlvbiB0byBkbyBoYXNoaW5nLgorCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaC5oOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3Q+OjpIYXNoOjpoYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlnZXN0Pjo6SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgSGFzaFRyYWl0
cyBmb3IgdGhlIGRpZ2VzdCwgdGhpcyBpcyBub3cgaGFuZGxlZCBieSBSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyByZWxhdGl2ZWx5IHN0cmFpZ2h0
LWZvcndhcmQsIHJlZGVmaW5lIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0KKyAg
ICAgICAgYW5kIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaW4gdGVybXMgb2YgUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LCBzbyB0aGF0IGxlc3MgY29kZQorICAgICAgICBoYXMgdG8gYmUg
Y2hhbmdlZCBhbGwgYXQgb25jZS4gSW4gYSBsYXRlciBwYXNzLCBpZiB3YW50ZWQsIHdlIGNhbiBy
ZW1vdmUgdGhlc2UgdXNpbmcgCisgICAgICAgIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNOb25jZUNoYXJhY3Rlcik6CisgICAgICAgIFVzZSByZW5hbWVkIGlzQmFzZTY0T3JC
YXNlNjRVUkxDaGFyYWN0ZXIgcHJlZGljYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZUhhc2hTb3VyY2UpOgorICAgICAgICBSZXdv
cmsgdXNpbmcgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHBhcnNpbmcuIFF1b3RhdGlvbiBh
bmQgbWF4aW11bSBkaWdlc3QKKyAgICAgICAgbGVuZ3RoIGhhdmUgYmVlbiBrZXB0IGhlcmUsIGFz
IHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIG90aGVyIHVzZXMgb2YgCisgICAgICAgIHRoZSBk
aWdlc3QsIHNwZWNpZmljYWxseSBTdWJyZXNvdXJjZSBJbnRlZ3JpdHkuCisKIDIwMTctMDQtMjAg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSB0b2xl
cmFuY2VCZWZvcmUgcGFyYW1ldGVyIGluIHRoZSBBVlBsYXllckl0ZW0gbWV0aG9kIHNlZWtUb1Rp
bWUgc2hvdWxkIG5vdCBiZSBuZWdhdGl2ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTk2NCw2ICsxOTY0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRl
ci9Qb2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA4Niw2
ICszMDg2LDggQEAKIAkJN0MxRTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MxRTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9
OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNC
MTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3
QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThC
MDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkZBNjExMUVB
OTVBMzkwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyRkE2MEYxRUE5NUEzMjAw
QTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgKi87IH07CisJCTdDMkZB
NjEyMUVBOTVBM0MwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkZBNjEwMUVBOTVB
MzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCAqLzsgfTsKIAkJN0Mz
MzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDExREY4
RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA3MURGOUY5NTEw
MEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwNTFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3Np
dGlvbk9wdGlvbnMuY3BwICovOyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQ
b3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzMwQTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICov
OyB9OwpAQCAtMTEwODUsNiArMTEwODcsOCBAQAogCQk3QzFFOTcyNjFBOUY5ODM0MDA3QkYwRkIg
LyogQXV0b0ZpbGxCdXR0b25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNDMTdDN0Y5OEIwMDM4
RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDMkZBNjBGMUVBOTVBMzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0My
RkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDExREY4RkFDNjAwRDMz
OTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDMxREY5RTk1QjAwRDMzOTVDIC8qIFBvc2l0aW9uT3B0
aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MzMzBBMDUxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzg3LDYgKzIzNzkxLDggQEAK
IAkJCQkxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCAqLywK
IAkJCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8sCiAJ
CQkJMUFDQURENzgxODgwRDkxQzAwRDhCNzFEIC8qIFByb2dyZXNzVHJhY2tlckNsaWVudC5oICov
LAorCQkJCTdDMkZBNjBGMUVBOTVBMzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuY3BwICovLAorCQkJCTdDMkZBNjEwMUVBOTVBMzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaCAqLywKIAkJCQk5M0UyMjdERTBBRjU4OUFEMDBENDgzMjQgLyog
UmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI3MEFEQkE1REUwMEE0NTU0RCAvKiBS
ZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUQwQTNBNzMwMTQwNUEzOTgwMEZCOEVEMyAvKiBSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCAqLywKQEAgLTI3MzI0LDYgKzI3MzMwLDcgQEAKIAkJCQlBOEVB
N0NBRjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg3MURFMjcwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURFMkEwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxJRnJhbWVFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzJGQTYxMjFFQTk1QTNDMDBBMDMxMDggLyogUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0QyRDBBMTkz
ODU1MDBBOEVGNUYgLyogSFRNTEltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThF
QTdEMkIwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgxMzY5Q0MwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzMyOTksNiArMzMzMDYsNyBAQAogCQkJCUIyQTFGMkIwMENFRjBBQkYw
MDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdDMkZBNjExMUVBOTVBMzkwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzOUMzNzMxRERCQjhDMTAw
RkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBNTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5n
VXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFy
c2luZ1V0aWxpdGllcy5oCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KQEAg
LTgwLDQgKzgyLDE2IEBAIHZvaWQgcmV2ZXJzZVNraXBXaGlsZShjb25zdCBDaGFyVHlwZSomIHAK
ICAgICAgICAgLS1wb3NpdGlvbjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgdW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aD4KK2Jvb2wgc2tpcEV4YWN0bHlJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgcG9zaXRpb24sIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xvd2VyY2FzZUxl
dHRlcnNMZW5ndGhdKQoreworICAgIGlmIChwb3NpdGlvbiArIGxvd2VyY2FzZUxldHRlcnNMZW5n
dGggPiBlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gV1RG
OjplcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb3NpdGlvbiwgbG93ZXJjYXNlTGV0dGVy
c0xlbmd0aCAtIDEsIGxvd2VyY2FzZUxldHRlcnMpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IHBvc2l0aW9uICs9IChsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKKyNpbmNsdWRlICJQYXJzaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VIYXNoQWxnb3JpdGhtQWR2
YW5jaW5nUG9zaXRpb24oY29uc3QgQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFy
YWN0ZXJUeXBlKiBlbmQsIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtJiBh
bGdvcml0aG0pCit7CisgICAgLy8gRklYTUU6IFRoaXMgd291bGQgYmUgbXVjaCBjbGVhbmVyIHdp
dGggYSBsb29rdXAgdGFibGUgb2YgcGFpcnMgb2YgbGFiZWwgLyBhbGdvcml0aG0gZW51bSB2YWx1
ZXMsIGJ1dCBJIGNhbid0CisgICAgLy8gZmlndXJlIG91dCBob3cgdG8ga2VlcCB0aGUgbGFiZWxz
IGNvbXBpbGV0aW1lIHN0cmluZ3MgZm9yIHNraXBFeGFjdGx5SWdub3JpbmdBU0NJSUNhc2UuCisK
KyAgICBpZiAoc2tpcEV4YWN0bHlJZ25vcmluZ0FTQ0lJQ2FzZShwb3NpdGlvbiwgZW5kLCAic2hh
MjU2IikpIHsKKyAgICAgICAgYWxnb3JpdGhtID0gUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
OjpBbGdvcml0aG06OlNIQTI1NjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlm
IChza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBlbmQsICJzaGEzODQiKSkg
eworICAgICAgICBhbGdvcml0aG0gPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29y
aXRobTo6U0hBMzg0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHNraXBF
eGFjdGx5SWdub3JpbmdBU0NJSUNhc2UocG9zaXRpb24sIGVuZCwgInNoYTUxMiIpKSB7CisgICAg
ICAgIGFsZ29yaXRobSA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEE1MTI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKGNv
bnN0IENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQor
eworICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
CisgICAgaWYgKCFwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlvbihwb3NpdGlvbiwg
ZW5kLCBhbGdvcml0aG0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYg
KCFza2lwRXhhY3RseTxDaGFyYWN0ZXJUeXBlPihwb3NpdGlvbiwgZW5kLCAnLScpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW5I
YXNoVmFsdWUgPSBwb3NpdGlvbjsKKyAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNCYXNl
NjRPckJhc2U2NFVSTENoYXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7CisgICAgc2tpcEV4YWN0bHk8
Q2hhcmFjdGVyVHlwZT4ocG9zaXRpb24sIGVuZCwgJz0nKTsKKyAgICBza2lwRXhhY3RseTxDaGFy
YWN0ZXJUeXBlPihwb3NpdGlvbiwgZW5kLCAnPScpOworCisgICAgaWYgKHBvc2l0aW9uID09IGJl
Z2luSGFzaFZhbHVlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRpZ2VzdDsKKyAgICBTdHJpbmdWaWV3IGhhc2hWYWx1ZShiZWdpbkhhc2hWYWx1
ZSwgcG9zaXRpb24gLSBiZWdpbkhhc2hWYWx1ZSk7CisgICAgaWYgKCFiYXNlNjREZWNvZGUoaGFz
aFZhbHVlLCBkaWdlc3QsIEJhc2U2NFZhbGlkYXRlUGFkZGluZykpIHsKKyAgICAgICAgaWYgKCFi
YXNlNjRVUkxEZWNvZGUoaGFzaFZhbHVlLCBkaWdlc3QpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsgYWxnb3JpdGhtLCBXVEZNb3ZlKGRpZ2VzdCkgfTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25z
dCBVQ2hhciomIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kKQoreworICAgIHJldHVybiBwYXJzZUNy
eXB0b2dyYXBoaWNEaWdlc3RJbXBsKGJlZ2luLCBlbmQpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0
IExDaGFyKiYgYmVnaW4sIGNvbnN0IExDaGFyKiBlbmQpCit7CisgICAgcmV0dXJuIHBhcnNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYmVnaW4sIGVuZCk7Cit9CisKK3N0YXRpYyBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzd2l0Y2ggKGFsZ29y
aXRobSkgeworICAgIGNhc2UgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG06
OlNIQTI1NjoKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTY7CisgICAgY2FzZSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6
U0hBMzg0OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzM4NDsKKyAgICBjYXNlIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEE1MTI6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKK30KKworUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQoreworICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKKyAgICBjcnlwdG9EaWdl
c3QtPmFkZEJ5dGVzKGJ5dGVzLCBsZW5ndGgpOworICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5
cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKKworc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCB7CisgICAgZW51bSBjbGFzcyBBbGdvcml0aG0geworICAgICAgICBTSEEyNTYgPSAxIDw8
IDAsCisgICAgICAgIFNIQTM4NCA9IDEgPDwgMSwKKyAgICAgICAgU0hBNTEyID0gMSA8PCAyLAor
ICAgIH07CisKKyAgICAvLyBOdW1iZXIgb2YgYnl0ZXMgdG8gaG9sZCBTSEEtNTEyIGRpZ2VzdAor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1EaWdlc3RMZW5ndGggPSA2NDsKKwor
ICAgIEFsZ29yaXRobSBhbGdvcml0aG07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlOworCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYWxnb3JpdGhtID09IG90aGVyLmFsZ29y
aXRobSAmJiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9Cit9OworCitzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGln
ZXN0KGNvbnN0IFVDaGFyKiYgYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQpOworc3RkOjpvcHRpb25h
bDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChj
b25zdCBMQ2hhciomIGJlZ2luLCBjb25zdCBMQ2hhciogZW5kKTsKKworUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OworCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHsKKyAgICBzdHJ1Y3QgSGFz
aCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdCYgZGlnZXN0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gcGFpckludEhhc2goaW50SGFzaChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlnZXN0LmFsZ29y
aXRobSkpLCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKGRpZ2VzdC52YWx1ZS5kYXRhKCksIGRp
Z2VzdC52YWx1ZS5zaXplKCkpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgYikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdD4geworICAgIHVzaW5nIEFsZ29yaXRobSA9IFdlYkNvcmU6OlJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOworICAgIHVzaW5nIEFsZ29yaXRobVVuZGVybHlpbmdU
eXBlID0gdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8QWxnb3JpdGhtPjo6dHlwZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gZW1wdHlBbGdvcml0aG1WYWx1ZSA9IHN0YXRpY19jYXN0
PEFsZ29yaXRobT4oc3RkOjpudW1lcmljX2xpbWl0czxBbGdvcml0aG1VbmRlcmx5aW5nVHlwZT46
Om1heCgpKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVsZXRlZEFsZ29yaXRobVZhbHVl
ID0gc3RhdGljX2Nhc3Q8QWxnb3JpdGhtPihzdGQ6Om51bWVyaWNfbGltaXRzPEFsZ29yaXRobVVu
ZGVybHlpbmdUeXBlPjo6bWF4KCkgLSAxKTsKKworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSBmYWxzZTsKKworICAgIHN0YXRpYyBXZWJDb3JlOjpSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4geyBlbXB0
eUFsZ29yaXRobVZhbHVlLCB7IH0gfTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBzbG90
KQorICAgIHsKKyAgICAgICAgc2xvdC5hbGdvcml0aG0gPSBkZWxldGVkQWxnb3JpdGhtVmFsdWU7
CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBzbG90KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNsb3QuYWxnb3JpdGhtID09IGRlbGV0ZWRBbGdvcml0aG1WYWx1ZTsKKyAgICB9Cit9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSwyMCArMzExLDYg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQQogICAgIHJldHVybiBp
c0FsbG93ZWQ7CiB9CiAKLXN0YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxn
b3JpdGhtKQotewotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKLSAgICBjYXNlIENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwotICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwotfQot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CiBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhh
c2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcyhQcmVkaWNhdGUmJiBwcmVkaWNhdGUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG0+IGFsZ29yaXRobXMpIGNvbnN0CiB7CkBAIC0zNDMsOSArMzI5LDcgQEAgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFuZAogICAgIGJvb2wgZm91bmRIYXNoSW5F
bmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAgICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQ
b2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7
Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0
b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKLSAgICAgICAgY3J5cHRvRGlnZXN0
LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgp
KTsKLSAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0aG0s
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OworICAgICAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3lIYXNoIGhhc2ggPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoYWxnb3JpdGhtLCBj
b250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAg
aWYgKCFmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9z
aXRpb25BbGxvdyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBz
dGQ6OmZvcndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKICAgICAgICAgICAgIGZv
dW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IHRydWU7CiAgICAgICAgIGlmICghZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpSZXBvcnRPbmx5LCBzdGQ6OmZvcndh
cmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAyMTU1NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgpAQCAtNTYsOCArNTcsNiBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIGNsYXNzIFVSTDsKIAotZW51bSBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOwotCiB0eXBlZGVmIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4+IENTUERpcmVj
dGl2ZUxpc3RWZWN0b3I7CiB0eXBlZGVmIGludCBTYW5kYm94RmxhZ3M7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgJ
KHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeUhhc2guaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNDIgKzI1LDExIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEtlZXAgdGhp
cyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgY29uc3RhbnQgbWF4aW11bUNvbnRlbnRTZWN1cml0eVBv
bGljeURpZ2VzdExlbmd0aCBiZWxvdy4KLWVudW0gY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaEFsZ29yaXRobSB7Ci0gICAgU0hBXzI1NiA9IDEgPDwgMCwKLSAgICBTSEFfMzg0ID0gMSA8
PCAxLAotICAgIFNIQV81MTIgPSAxIDw8IDIsCi19OwotCi1jb25zdCBzaXplX3QgbWF4aW11bUNv
bnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdExlbmd0aCA9IDY0OyAvLyBieXRlcyB0byBob2xkIFNI
QS01MTIgZGlnZXN0Ci0KLXR5cGVkZWYgVmVjdG9yPHVpbnQ4X3Q+IENvbnRlbnRTZWN1cml0eVBv
bGljeURpZ2VzdDsKLXR5cGVkZWYgc3RkOjpwYWlyPENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG0sIENvbnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdD4gQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaDsKK3VzaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gPSBSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTsKK3VzaW5nIENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2ggPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IHsgdHlw
ZWRlZiBJbnRIYXNoPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+
IEhhc2g7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IDogU3Ryb25nRW51bUhhc2hUcmFpdHM8V2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4geyB9OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0PiB7
Ci0gICAgc3RydWN0IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3QmIGRpZ2VzdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNpemUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0
JiBhLCBjb25zdCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3QmIGIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAg
IH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3Bw
CShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDE3ICs0MjUs
MTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYQogICAgIHJldHVy
biBvazsKIH0KIAotc3RhdGljIGJvb2wgaXNCYXNlNjRDaGFyYWN0ZXIoVUNoYXIgYykKLXsKLSAg
ICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8fCBjID09ICcvJyB8
fCBjID09ICctJyB8fCBjID09ICdfJzsKLX0KLQogLy8gTWF0Y2ggQmxpbmsncyBiZWhhdmlvciBv
ZiBhbGxvd2luZyBhbiBlcXVhbCBzaWduIHRvIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgdmFsdWUg
b2YgdGhlIG5vbmNlCiAvLyBldmVuIHRob3VnaCB0aGlzIGRvZXMgbm90IG1hdGNoIHRoZSBiZWhh
dmlvciBvZiBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzIHNwZWMuLAogLy8gPGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtY3NwLz4gKDI5IEZlYnJ1YXJ5IDIwMTYpLgogc3Rh
dGljIGJvb2wgaXNOb25jZUNoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiBpc0Jhc2U2
NENoYXJhY3RlcihjKSB8fCBjID09ICc9JzsKKyAgICByZXR1cm4gaXNCYXNlNjRPckJhc2U2NFVS
TENoYXJhY3RlcihjKSB8fCBjID09ICc9JzsKIH0KIAogLy8gbm9uY2Utc291cmNlICAgID0gIidu
b25jZS0iIG5vbmNlLXZhbHVlICInIgpAQCAtNDU0LDI5ICs0NDksNiBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKGNvbnN0IFVDaGFyKiYg
cG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0
aG0mIGFsZ29yaXRobSkKLXsKLSAgICBzdGF0aWMgc3RydWN0IHsKLSAgICAgICAgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBsYWJlbDsKLSAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFs
Z29yaXRobSBhbGdvcml0aG07Ci0gICAgfSBsYWJlbFRvSGFzaEFsZ29yaXRobVRhYmxlW10gewot
ICAgICAgICB7IEFTQ0lJTGl0ZXJhbCgic2hhMjU2IiksIENvbnRlbnRTZWN1cml0eVBvbGljeUhh
c2hBbGdvcml0aG06OlNIQV8yNTYgfSwKLSAgICAgICAgeyBBU0NJSUxpdGVyYWwoInNoYTM4NCIp
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0IH0sCi0gICAgICAg
IHsgQVNDSUlMaXRlcmFsKCJzaGE1MTIiKSwgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29y
aXRobTo6U0hBXzUxMiB9LAotICAgIH07Ci0KLSAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcocG9z
aXRpb24sIGxlbmd0aCk7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGxhYmVsVG9IYXNoQWxnb3Jp
dGhtVGFibGUpIHsKLSAgICAgICAgU3RyaW5nJiBsYWJlbCA9IGVudHJ5LmxhYmVsLmdldCgpOwot
ICAgICAgICBpZiAoIXN0cmluZ1ZpZXcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGxhYmVs
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBwb3NpdGlvbiArPSBsYWJlbC5sZW5n
dGgoKTsKLSAgICAgICAgYWxnb3JpdGhtID0gZW50cnkuYWxnb3JpdGhtOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAvLyBoYXNoLXNvdXJjZSAg
ICA9ICInIiBoYXNoLWFsZ29yaXRobSAiLSIgYmFzZTY0LXZhbHVlICInIgogLy8gaGFzaC1hbGdv
cml0aG0gPSAic2hhMjU2IiAvICJzaGEzODQiIC8gInNoYTUxMiIKIC8vIGJhc2U2NC12YWx1ZSAg
PSAxKiggQUxQSEEgLyBESUdJVCAvICIrIiAvICIvIiAvICItIiAvICJfIiApKjIoICI9IiApCkBA
IC00ODksMzEgKzQ2MSwxOCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6
OnBhCiAgICAgaWYgKCFza2lwRXhhY3RseTxVQ2hhcj4ocG9zaXRpb24sIGVuZCwgJ1wnJykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdv
cml0aG0gYWxnb3JpdGhtOwotICAgIGlmICghcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9z
aXRpb24ocG9zaXRpb24sIGVuZCAtIHBvc2l0aW9uLCBhbGdvcml0aG0pKQorICAgIGF1dG8gZGln
ZXN0ID0gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KHBvc2l0aW9uLCBlbmQpOworICAgIGlmICgh
ZGlnZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXNraXBFeGFjdGx5PFVD
aGFyPihwb3NpdGlvbiwgZW5kLCAnLScpKQorICAgIGlmIChwb3NpdGlvbiA+PSBlbmQgfHwgKnBv
c2l0aW9uICE9ICdcJycpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFVDaGFy
KiBiZWdpbkhhc2hWYWx1ZSA9IHBvc2l0aW9uOwotICAgIHNraXBXaGlsZTxVQ2hhciwgaXNCYXNl
NjRDaGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQpOwotICAgIHNraXBFeGFjdGx5PFVDaGFyPihwb3Np
dGlvbiwgZW5kLCAnPScpOwotICAgIHNraXBFeGFjdGx5PFVDaGFyPihwb3NpdGlvbiwgZW5kLCAn
PScpOwotICAgIGlmIChwb3NpdGlvbiA+PSBlbmQgfHwgcG9zaXRpb24gPT0gYmVnaW5IYXNoVmFs
dWUgfHwgKnBvc2l0aW9uICE9ICdcJycpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0
b3I8dWludDhfdD4gZGlnZXN0OwotICAgIFN0cmluZ1ZpZXcgaGFzaFZhbHVlKGJlZ2luSGFzaFZh
bHVlLCBwb3NpdGlvbiAtIGJlZ2luSGFzaFZhbHVlKTsgLy8gYmFzZTY0dXJsIG9yIGJhc2U2NCBl
bmNvZGVkCi0gICAgLy8gRklYTUU6IE5vcm1hbGl6ZSBCYXNlNjRVUkwgdG8gQmFzZTY0IGluc3Rl
YWQgb2YgZGVjb2RpbmcgdHdpY2UuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTE4Nj4uCi0gICAgaWYgKCFiYXNlNjREZWNvZGUoaGFzaFZhbHVlLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSwgZGlnZXN0LCBCYXNlNjRWYWxpZGF0ZVBhZGRpbmcpKSB7Ci0g
ICAgICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKGhhc2hWYWx1ZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCksIGRpZ2VzdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlm
IChkaWdlc3Quc2l6ZSgpID4gbWF4aW11bUNvbnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdExlbmd0
aCkKKyAgICBpZiAoZGlnZXN0LT52YWx1ZS5zaXplKCkgPiBDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoOjptYXhpbXVtRGlnZXN0TGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X2hhc2hlcy5hZGQoc3RkOjptYWtlX3BhaXIoYWxnb3JpdGhtLCBkaWdlc3QpKTsKLSAgICBtX2hh
c2hBbGdvcml0aG1zVXNlZCB8PSBhbGdvcml0aG07CisgICAgbV9oYXNoQWxnb3JpdGhtc1VzZWQg
fD0gZGlnZXN0LT5hbGdvcml0aG07CisgICAgbV9oYXNoZXMuYWRkKFdURk1vdmUoKmRpZ2VzdCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307643</attachid>
            <date>2017-04-20 15:07:58 -0700</date>
            <delta_ts>2017-04-20 15:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171076-20170420150757.patch</filename>
            <type>text/plain</type>
            <size>32898</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA0LTIwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgY3J5cHRvZ3JhcGhpYyBkaWdlc3QgY29tcHV0YXRp
b24gYW5kIHBhcnNpbmcgb3V0IG9mIENTUCBjb2RlIHNvIGl0IGNhbiBiZSByZXVzZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvQmFz
ZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RGVjb2RlKToKKyAgICAgICAgKFdURjo6YmFz
ZTY0VVJMRGVjb2RlKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBmb3IgYmFzZTY0RGVjb2RlIGFu
ZCBiYXNlNjRVUkxEZWNvZGUgdGhhdCB0YWtlIGEgU3RyaW5nVmlldywgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMKKyAgICAgICAgb2YgU3RyaW5ncy4KKworICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5o
OgorICAgICAgICAoV1RGOjppc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKToKKyAgICAgICAg
TW92ZSBoZWxwZXIgcHJlZGljYXRlIHVzZWQgZm9yIHBhcnNpbmcgZWl0aGVyIHR5cGUgb2YgQmFz
ZTY0IGVuY29kZWQgc3RyaW5nIGZyb20gV2ViQ29yZS4KKwogMjAxNy0wNC0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgbm90Rm91bmQgaW50byBpdHMgb3du
IGZpbGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQCBib29sIGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTaWduCiAgICAgcmV0
dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIG91dCwg
b3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3Ry
aW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2ln
bmVkIG9wdGlvbnMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgb3B0aW9ucywgYmFzZTY0RGVj
TWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2KCks
IGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOworfQorCiBib29sIGJhc2U2NERl
Y29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFk
YXB0ZXIgb3V0LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIG91dC5jbGVhcigpOwpAQCAtMjk4
LDYgKzMwNiwxNCBAQCBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTCiAg
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgs
IG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBvdXQpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFz
ZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwor
fQorCiBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRP
clVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewogICAgIG91dC5jbGVhcigpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0Jhc2U2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIEJhc2U2NF9oCi0jZGVmaW5lIEJhc2U2NF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC0xNTIsNiArMTUxLDcgQEAgU3RyaW5nIGJhc2U2NEVuY29kZShDb25zdFNpZ25l
ZE9yVW5zaWduZQogU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RG9Ob3RJbnNlcnRMRnMpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0
b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nVmlldyYsIFNpZ25lZE9yVW5z
aWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQp
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9
IEJhc2U2NERlZmF1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1
bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CiAKQEAgLTE4OSw2ICsxODksNyBAQCBT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlKENvbnN0U2lnbmVkT3JVbnNpCiBTdHJpbmcgYmFzZTY0VVJM
RW5jb2RlKGNvbnN0IENTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRl
cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5n
VmlldyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlcik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgU2lnbmVkT3JV
bnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGJhc2U2
NFVSTERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVj
dG9yQWRhcHRlcik7CiAKQEAgLTIxMiw2ICsyMTMsMTEgQEAgaW5saW5lIFN0cmluZyBiYXNlNjRV
UkxFbmNvZGUoY29uc3QgQ1N0cgogICAgIHJldHVybiBiYXNlNjRVUkxFbmNvZGUoaW4uZGF0YSgp
LCBpbi5sZW5ndGgoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKENoYXJhY3RlclR5
cGUgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8
fCBjID09ICcvJyB8fCBjID09ICctJyB8fCBjID09ICdfJzsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6QmFzZTY0RW5jb2RlUG9saWN5OwpAQCAtMjIyLDUgKzIyOCw0IEBA
IHVzaW5nIFdURjo6QmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMKIHVzaW5nIFdURjo6YmFz
ZTY0RW5jb2RlOwogdXNpbmcgV1RGOjpiYXNlNjREZWNvZGU7CiB1c2luZyBXVEY6OmJhc2U2NFVS
TERlY29kZTsKLQotI2VuZGlmIC8vIEJhc2U2NF9oCit1c2luZyBXVEY6OmlzQmFzZTY0T3JCYXNl
NjRVUkxDaGFyYWN0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAx
Ny0wNC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFNwbGl0IGNy
eXB0b2dyYXBoaWMgZGlnZXN0IGNvbXB1dGF0aW9uIGFuZCBwYXJzaW5nIG91dCBvZiBDU1AgY29k
ZSBzbyBpdCBjYW4gYmUgcmV1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGYWN0b3Igb3V0IGNyeXB0b2dyYXBoaWMgZGlnZXN0IHBhcnNpbmcgZnJv
bSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb2RlCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJl
IHJldXNlZCBmb3IgdGhlIFN1YnJlc291cmNlIEludGVncml0eSBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNraXBFeGFjdGx5
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICBBZGQgcGFyc2luZyBoZWxwZXIgdG8gbWF0Y2gg
LyBza2lwIG92ZXIgYSBjb25zdGFudCBzdHJpbmcsIHVzaW5nIElnbm9yaW5nQVNDSUlDYXNlIHNl
bWFudGljcy4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2lu
Z1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KToKKyAgICAg
ICAgTW92ZSBwYXJzaW5nIG9mIGNyeXB0b2dyYXBoaWMtZGlnZXN0IHN0cmluZ3MgZnJvbSBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorICAgICAgICBhbmQgb3B0aW1pemUgaXQg
YSBsaXR0bGUgYnkgYXZvaWRpbmcgU3RyaW5nIGFsbG9jYXRpb25zIGFuZCBnZW5lcmFsaXppbmcg
aXQgc28gdGhhdCBpdAorICAgICAgICBjYW4gcGFyc2UgZWl0aGVyIFVDaGFycyBvciBMQ2hhcnMu
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD46Okhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFz
aDxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+OjpIYXNoOjplcXVhbCk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+
Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIEFkZCBhIHN0cnVjdCAocmF0aGVyIHRoYW4gdXNp
bmcgYSBzdGQ6OnBhaXIpIHRvIHJlcHJlc2VudCB0aGUgZGlnZXN0ICsgYWxnb3JpdGhtLiBBbmQg
YWRkCisgICAgICAgIEhhc2hUcmFpdHMgc28gaXQgY2FuIGJlIHVzZWQgYXMgSGFzaE1hcC4KKyAg
ICAgICAgCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJ
blBvbGljaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKTog
RGVsZXRlZC4KKyAgICAgICAgTW92ZSBhbGdvcml0aG0gY29udmVyc2lvbiB0byBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuY3BwLiBNYWtlIHVzZSBvZiBuZXcgCisgICAgICAgIGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JCeXRlcyBmdW5jdGlvbiB0byBkbyBoYXNoaW5nLgorCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaC5oOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3Q+OjpIYXNoOjpoYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlnZXN0Pjo6SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgSGFzaFRyYWl0
cyBmb3IgdGhlIGRpZ2VzdCwgdGhpcyBpcyBub3cgaGFuZGxlZCBieSBSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyByZWxhdGl2ZWx5IHN0cmFpZ2h0
LWZvcndhcmQsIHJlZGVmaW5lIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0KKyAg
ICAgICAgYW5kIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaW4gdGVybXMgb2YgUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LCBzbyB0aGF0IGxlc3MgY29kZQorICAgICAgICBoYXMgdG8gYmUg
Y2hhbmdlZCBhbGwgYXQgb25jZS4gSW4gYSBsYXRlciBwYXNzLCBpZiB3YW50ZWQsIHdlIGNhbiBy
ZW1vdmUgdGhlc2UgdXNpbmcgCisgICAgICAgIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNOb25jZUNoYXJhY3Rlcik6CisgICAgICAgIFVzZSByZW5hbWVkIGlzQmFzZTY0T3JC
YXNlNjRVUkxDaGFyYWN0ZXIgcHJlZGljYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZUhhc2hTb3VyY2UpOgorICAgICAgICBSZXdv
cmsgdXNpbmcgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHBhcnNpbmcuIFF1b3RhdGlvbiBh
bmQgbWF4aW11bSBkaWdlc3QKKyAgICAgICAgbGVuZ3RoIGhhdmUgYmVlbiBrZXB0IGhlcmUsIGFz
IHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIG90aGVyIHVzZXMgb2YgCisgICAgICAgIHRoZSBk
aWdlc3QsIHNwZWNpZmljYWxseSBTdWJyZXNvdXJjZSBJbnRlZ3JpdHkuCisKIDIwMTctMDQtMjAg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSB0b2xl
cmFuY2VCZWZvcmUgcGFyYW1ldGVyIGluIHRoZSBBVlBsYXllckl0ZW0gbWV0aG9kIHNlZWtUb1Rp
bWUgc2hvdWxkIG5vdCBiZSBuZWdhdGl2ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTk2NCw2ICsxOTY0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRl
ci9Qb2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA4Niw2
ICszMDg2LDggQEAKIAkJN0MxRTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MxRTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9
OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNC
MTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3
QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThC
MDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkZBNjExMUVB
OTVBMzkwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyRkE2MEYxRUE5NUEzMjAw
QTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgKi87IH07CisJCTdDMkZB
NjEyMUVBOTVBM0MwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkZBNjEwMUVBOTVB
MzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzMzMEEwMjFERjhGQUM2MDBE
MzM5NUMgLyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyog
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzMzBBMDcxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9z
aXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAg
Ki87IH07CiAJCTdDMzMwQTA4MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDYx
REY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi87IH07CkBAIC0xMTA4NSw2
ICsxMTA4Nyw4IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQwMDdCRjBGQiAvKiBBdXRvRmlsbEJ1dHRv
bkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b0ZpbGxCdXR0
b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNCMTdDN0Y5
OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xv
YmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUds
b2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyRkE2MEYx
RUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzJGQTYxMDFFQTk1QTMyMDBB
MDMxMDggLyogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3ND
b250ZXh0M0RBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzMzMEEwMzFERjlFOTVCMDBEMzM5NUMgLyogUG9zaXRpb25PcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQ
b3NpdGlvbk9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzMEEw
NTFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjM3ODcsNiArMjM3OTEsOCBAQAogCQkJCTFBMkE2ODIxMEI1
QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuY3BwICovLAogCQkJCTFBMkE2ODIyMEI1
QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLywKIAkJCQkxQUNBREQ3ODE4ODBE
OTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggKi8sCisJCQkJN0MyRkE2MEYx
RUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgKi8sCisJ
CQkJN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oICovLAogCQkJCTkzRTIyN0RFMEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5j
cHAgKi8sCiAJCQkJNjU2RDM3MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291cmNlTG9hZGVyLmgg
Ki8sCiAJCQkJRDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9u
cy5oICovLApAQCAtMjczMjQsNiArMjczMzAsNyBAQAogCQkJCUE4RUE3Q0FGMEExOTJCOUMwMEE4
RUY1RiAvKiBIVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREUyNzBBMTUy
QUM4MDBCMTJBNjggLyogSFRNTEh0bWxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcx
REUyQTBBMTUyQUM4MDBCMTJBNjggLyogSFRNTElGcmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdDMkZBNjEyMUVBOTVBM0MwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3RDJEMEExOTM4NTUwMEE4RUY1RiAvKiBI
VE1MSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0QyQjBBMTkzODU1MDBB
OEVGNUYgLyogSFRNTEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDQzA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzI5OSw2ICszMzMwNiw3IEBACiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01p
c3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMz
QzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0MyRkE2MTExRUE5NUEzOTAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM5QzM3MzFEREJCOEMxMDBGRUZCMjkgLyogU1ZHTnVt
YmVyTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1NjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0QzY3
ODRDMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJ
KHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdV
dGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgpAQCAtODAsNCArODIsMTYgQEAg
dm9pZCByZXZlcnNlU2tpcFdoaWxlKGNvbnN0IENoYXJUeXBlKiYgcAogICAgICAgICAtLXBvc2l0
aW9uOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1bnNpZ25lZCBsb3dl
cmNhc2VMZXR0ZXJzTGVuZ3RoPgorYm9vbCBza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBj
b25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbG93ZXJjYXNlTGV0dGVyc0xlbmd0aF0pCit7
CisgICAgaWYgKHBvc2l0aW9uICsgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aCA+IGVuZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBXVEY6OmVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoIC0gMSwgbG93
ZXJjYXNlTGV0dGVycyk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcG9zaXRpb24gKz0gKGxv
d2VyY2FzZUxldHRlcnNMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCIKKworI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1
ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CitzdGF0aWMgYm9vbCBwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlvbihj
b25zdCBDaGFyYWN0ZXJUeXBlKiYgcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwg
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0mIGFsZ29yaXRobSkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyB3b3VsZCBiZSBtdWNoIGNsZWFuZXIgd2l0aCBhIGxvb2t1cCB0YWJs
ZSBvZiBwYWlycyBvZiBsYWJlbCAvIGFsZ29yaXRobSBlbnVtIHZhbHVlcywgYnV0IEkgY2FuJ3QK
KyAgICAvLyBmaWd1cmUgb3V0IGhvdyB0byBrZWVwIHRoZSBsYWJlbHMgY29tcGlsZXRpbWUgc3Ry
aW5ncyBmb3Igc2tpcEV4YWN0bHlJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAgIGlmIChza2lwRXhh
Y3RseUlnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBlbmQsICJzaGEyNTYiKSkgeworICAgICAg
ICBhbGdvcml0aG0gPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6U0hB
MjU2OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHNraXBFeGFjdGx5SWdu
b3JpbmdBU0NJSUNhc2UocG9zaXRpb24sIGVuZCwgInNoYTM4NCIpKSB7CisgICAgICAgIGFsZ29y
aXRobSA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEEzODQ7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoc2tpcEV4YWN0bHlJZ25vcmluZ0FT
Q0lJQ2FzZShwb3NpdGlvbiwgZW5kLCAic2hhNTEyIikpIHsKKyAgICAgICAgYWxnb3JpdGhtID0g
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG06OlNIQTUxMjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCit7CisgICAgaWYgKHBvc2l0
aW9uID09IGVuZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICBpZiAoIXBhcnNl
SGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKHBvc2l0aW9uLCBlbmQsIGFsZ29yaXRobSkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIXNraXBFeGFjdGx5PENo
YXJhY3RlclR5cGU+KHBvc2l0aW9uLCBlbmQsICctJykpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbkhhc2hWYWx1ZSA9IHBvc2l0
aW9uOworICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hh
cmFjdGVyPihwb3NpdGlvbiwgZW5kKTsKKyAgICBza2lwRXhhY3RseTxDaGFyYWN0ZXJUeXBlPihw
b3NpdGlvbiwgZW5kLCAnPScpOworICAgIHNraXBFeGFjdGx5PENoYXJhY3RlclR5cGU+KHBvc2l0
aW9uLCBlbmQsICc9Jyk7CisKKyAgICBpZiAocG9zaXRpb24gPT0gYmVnaW5IYXNoVmFsdWUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhfdD4gZGlnZXN0
OworICAgIFN0cmluZ1ZpZXcgaGFzaFZhbHVlKGJlZ2luSGFzaFZhbHVlLCBwb3NpdGlvbiAtIGJl
Z2luSGFzaFZhbHVlKTsKKyAgICBpZiAoIWJhc2U2NERlY29kZShoYXNoVmFsdWUsIGRpZ2VzdCwg
QmFzZTY0VmFsaWRhdGVQYWRkaW5nKSkgeworICAgICAgICBpZiAoIWJhc2U2NFVSTERlY29kZSho
YXNoVmFsdWUsIGRpZ2VzdCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgeyBhbGdvcml0aG0s
IFdURk1vdmUoZGlnZXN0KSB9OworfQorCitzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IFVDaGFyKiYgYmVnaW4s
IGNvbnN0IFVDaGFyKiBlbmQpCit7CisgICAgcmV0dXJuIHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dEltcGwoYmVnaW4sIGVuZCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgTENoYXIqJiBiZWdpbiwg
Y29uc3QgTENoYXIqIGVuZCkKK3sKKyAgICByZXR1cm4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0
SW1wbChiZWdpbiwgZW5kKTsKK30KKworc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpB
bGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2Fz
ZSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6U0hBMjU2OgorICAgICAg
ICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICBjYXNl
IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEEzODQ6CisgICAgICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgIGNhc2Ug
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG06OlNIQTUxMjoKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOworfQorCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobSwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
YXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoYnl0
ZXMsIGxlbmd0aCk7CisgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1
dGVIYXNoKCkgfTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZFJl
c291cmNlOworCitzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHsKKyAgICBlbnVt
IGNsYXNzIEFsZ29yaXRobSB7CisgICAgICAgIFNIQTI1NiA9IDEgPDwgMCwKKyAgICAgICAgU0hB
Mzg0ID0gMSA8PCAxLAorICAgICAgICBTSEE1MTIgPSAxIDw8IDIsCisgICAgfTsKKworICAgIC8v
IE51bWJlciBvZiBieXRlcyB0byBob2xkIFNIQS01MTIgZGlnZXN0CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4aW11bURpZ2VzdExlbmd0aCA9IDY0OworCisgICAgQWxnb3JpdGhtIGFs
Z29yaXRobTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBhbGdvcml0aG0gPT0gb3RoZXIuYWxnb3JpdGhtICYmIHZhbHVlID09
IG90aGVyLnZhbHVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK3N0ZDo6b3B0aW9uYWw8UmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgVUNoYXIq
JiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCk7CitzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IExDaGFyKiYgYmVn
aW4sIGNvbnN0IExDaGFyKiBlbmQpOworCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5
cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxn
b3JpdGhtLCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisKK30KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4geworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0JiBkaWdlc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBwYWlySW50SGFzaChp
bnRIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaWdlc3QuYWxnb3JpdGhtKSksIFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2goZGlnZXN0LnZhbHVlLmRhdGEoKSwgZGlnZXN0LnZhbHVlLnNpemUo
KSkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgYSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9
PSBiOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiB7CisgICAg
dXNpbmcgQWxnb3JpdGhtID0gV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpB
bGdvcml0aG07CisgICAgdXNpbmcgQWxnb3JpdGhtVW5kZXJseWluZ1R5cGUgPSB0eXBlbmFtZSBz
dGQ6OnVuZGVybHlpbmdfdHlwZTxBbGdvcml0aG0+Ojp0eXBlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBlbXB0eUFsZ29yaXRobVZhbHVlID0gc3RhdGljX2Nhc3Q8QWxnb3JpdGhtPihzdGQ6
Om51bWVyaWNfbGltaXRzPEFsZ29yaXRobVVuZGVybHlpbmdUeXBlPjo6bWF4KCkpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBkZWxldGVkQWxnb3JpdGhtVmFsdWUgPSBzdGF0aWNfY2FzdDxB
bGdvcml0aG0+KHN0ZDo6bnVtZXJpY19saW1pdHM8QWxnb3JpdGhtVW5kZXJseWluZ1R5cGU+Ojpt
YXgoKSAtIDEpOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZh
bHNlOworCisgICAgc3RhdGljIFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBl
bXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IGVtcHR5QWxnb3JpdGhtVmFsdWUs
IHsgfSB9OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIHNsb3QpCisgICAgeworICAgICAg
ICBzbG90LmFsZ29yaXRobSA9IGRlbGV0ZWRBbGdvcml0aG1WYWx1ZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QmIHNsb3QpCisgICAgeworICAgICAgICByZXR1cm4gc2xvdC5hbGdvcml0aG0g
PT0gZGVsZXRlZEFsZ29yaXRobVZhbHVlOworICAgIH0KK307CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNp
b24gMjE1NTc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDIwICszMTEsNiBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAot
c3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0
aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAg
c3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjU2OwotICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29y
aXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ7Ci0gICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGht
OjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzUxMjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7Ci19Ci0KIHRlbXBsYXRlPHR5cGVu
YW1lIFByZWRpY2F0ZT4KIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGFzaEluRW5mb3JjZWRBbmRS
ZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNv
bnRlbnRJblBvbGljaWVzKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gYWxnb3Jp
dGhtcykgY29uc3QKIHsKQEAgLTM0Myw5ICszMjksNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okhhc2hJbkVuZm9yY2VkQW5kCiAgICAgYm9vbCBmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMg
PSBmYWxzZTsKICAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzID0gZmFsc2U7
CiAgICAgZm9yIChhdXRvIGFsZ29yaXRobSA6IGFsZ29yaXRobXMpIHsKLSAgICAgICAgYXV0byBj
cnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxn
b3JpdGhtKGFsZ29yaXRobSkpOwotICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGNvbnRl
bnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29yaXRobSwgY3J5cHRvRGlnZXN0LT5j
b21wdXRlSGFzaCgpIH07CisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9
IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhhbGdvcml0aG0sIGNvbnRlbnRDU3RyaW5nLmRh
dGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBpZiAoIWZvdW5kSGFzaElu
RW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRl
bnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVk
aWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQogICAgICAgICAgICAgZm91bmRIYXNoSW5FbmZvcmNl
ZFBvbGljaWVzID0gdHJ1ZTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xp
Y2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRTZWN1cml0eVBv
bGljeTo6RGlzcG9zaXRpb246OlJlcG9ydE9ubHksIHN0ZDo6Zm9yd2FyZDxQcmVkaWNhdGU+KHBy
ZWRpY2F0ZSksIGhhc2gpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5IYXNoLmgiCkBAIC01Niw4ICs1Nyw2IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
VGV4dEVuY29kaW5nOwogY2xhc3MgVVJMOwogCi1lbnVtIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2hBbGdvcml0aG07Ci0KIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0aXZlTGlzdFZlY3RvcjsK
IHR5cGVkZWYgaW50IFNhbmRib3hGbGFnczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaAkocmV2aXNpb24gMjE1NTc5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw0MiArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gS2VlcCB0aGlzIHN5bmNocm9uaXplZCB3
aXRoIHRoZSBjb25zdGFudCBtYXhpbXVtQ29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0TGVuZ3Ro
IGJlbG93LgotZW51bSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIHsK
LSAgICBTSEFfMjU2ID0gMSA8PCAwLAotICAgIFNIQV8zODQgPSAxIDw8IDEsCi0gICAgU0hBXzUx
MiA9IDEgPDwgMiwKLX07Ci0KLWNvbnN0IHNpemVfdCBtYXhpbXVtQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlnZXN0TGVuZ3RoID0gNjQ7IC8vIGJ5dGVzIHRvIGhvbGQgU0hBLTUxMiBkaWdlc3QKLQot
dHlwZWRlZiBWZWN0b3I8dWludDhfdD4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0OwotdHlw
ZWRlZiBzdGQ6OnBhaXI8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlnZXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOwordXNpbmcg
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSA9IFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtOwordXNpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCA9IFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4geyB0eXBlZGVmIEludEhhc2g8V2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gSGFzaDsgfTsKLXRlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5SGFz
aEFsZ29yaXRobT4gOiBTdHJvbmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lIYXNoQWxnb3JpdGhtPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3Q+IHsKLSAgICBzdHJ1Y3QgSGFz
aCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpZ2VzdCYgZGlnZXN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhkaWdlc3QuZGF0YSgp
LCBkaWdlc3Quc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3QmIGEsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdCYgYikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci0gICAgfTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAJKHJldmlzaW9uIDIxNTU3
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsMTcgKzQyNSwxMiBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhCiAgICAgcmV0dXJuIG9rOwogfQogCi1zdGF0
aWMgYm9vbCBpc0Jhc2U2NENoYXJhY3RlcihVQ2hhciBjKQotewotICAgIHJldHVybiBpc0FTQ0lJ
QWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJysnIHx8IGMgPT0gJy8nIHx8IGMgPT0gJy0nIHx8IGMg
PT0gJ18nOwotfQotCiAvLyBNYXRjaCBCbGluaydzIGJlaGF2aW9yIG9mIGFsbG93aW5nIGFuIGVx
dWFsIHNpZ24gdG8gYXBwZWFyIGFueXdoZXJlIGluIHRoZSB2YWx1ZSBvZiB0aGUgbm9uY2UKIC8v
IGV2ZW4gdGhvdWdoIHRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5IExldmVsIDMgc3BlYy4sCiAvLyA8aHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmFwcHNlYy1jc3AvPiAoMjkgRmVicnVhcnkgMjAxNikuCiBzdGF0aWMgYm9vbCBpc05vbmNl
Q2hhcmFjdGVyKFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJuIGlzQmFzZTY0Q2hhcmFjdGVyKGMpIHx8
IGMgPT0gJz0nOworICAgIHJldHVybiBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKGMpIHx8
IGMgPT0gJz0nOwogfQogCiAvLyBub25jZS1zb3VyY2UgICAgPSAiJ25vbmNlLSIgbm9uY2UtdmFs
dWUgIiciCkBAIC00NTQsMjkgKzQ0OSw2IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdDo6cGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcGFyc2VIYXNo
QWxnb3JpdGhtQWR2YW5jaW5nUG9zaXRpb24oY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgc2l6ZV90
IGxlbmd0aCwgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSYgYWxnb3JpdGhtKQot
ewotICAgIHN0YXRpYyBzdHJ1Y3QgewotICAgICAgICBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGxh
YmVsOwotICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRo
bTsKLSAgICB9IGxhYmVsVG9IYXNoQWxnb3JpdGhtVGFibGVbXSB7Ci0gICAgICAgIHsgQVNDSUlM
aXRlcmFsKCJzaGEyNTYiKSwgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hB
XzI1NiB9LAotICAgICAgICB7IEFTQ0lJTGl0ZXJhbCgic2hhMzg0IiksIENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQgfSwKLSAgICAgICAgeyBBU0NJSUxpdGVyYWwo
InNoYTUxMiIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyIH0s
Ci0gICAgfTsKLQotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyhwb3NpdGlvbiwgbGVuZ3RoKTsK
LSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGFiZWxUb0hhc2hBbGdvcml0aG1UYWJsZSkgewotICAg
ICAgICBTdHJpbmcmIGxhYmVsID0gZW50cnkubGFiZWwuZ2V0KCk7Ci0gICAgICAgIGlmICghc3Ry
aW5nVmlldy5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobGFiZWwpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIHBvc2l0aW9uICs9IGxhYmVsLmxlbmd0aCgpOwotICAgICAgICBh
bGdvcml0aG0gPSBlbnRyeS5hbGdvcml0aG07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vIGhhc2gtc291cmNlICAgID0gIiciIGhhc2gtYWxn
b3JpdGhtICItIiBiYXNlNjQtdmFsdWUgIiciCiAvLyBoYXNoLWFsZ29yaXRobSA9ICJzaGEyNTYi
IC8gInNoYTM4NCIgLyAic2hhNTEyIgogLy8gYmFzZTY0LXZhbHVlICA9IDEqKCBBTFBIQSAvIERJ
R0lUIC8gIisiIC8gIi8iIC8gIi0iIC8gIl8iICkqMiggIj0iICkKQEAgLTQ4OSwzMSArNDYxLDE4
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICBpZiAoIXNr
aXBFeGFjdGx5PFVDaGFyPihwb3NpdGlvbiwgZW5kLCAnXCcnKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG07
Ci0gICAgaWYgKCFwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlvbihwb3NpdGlvbiwg
ZW5kIC0gcG9zaXRpb24sIGFsZ29yaXRobSkpCisgICAgYXV0byBkaWdlc3QgPSBwYXJzZUNyeXB0
b2dyYXBoaWNEaWdlc3QocG9zaXRpb24sIGVuZCk7CisgICAgaWYgKCFkaWdlc3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmICghc2tpcEV4YWN0bHk8VUNoYXI+KHBvc2l0aW9uLCBl
bmQsICctJykpCisgICAgaWYgKHBvc2l0aW9uID49IGVuZCB8fCAqcG9zaXRpb24gIT0gJ1wnJykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVUNoYXIqIGJlZ2luSGFzaFZhbHVl
ID0gcG9zaXRpb247Ci0gICAgc2tpcFdoaWxlPFVDaGFyLCBpc0Jhc2U2NENoYXJhY3Rlcj4ocG9z
aXRpb24sIGVuZCk7Ci0gICAgc2tpcEV4YWN0bHk8VUNoYXI+KHBvc2l0aW9uLCBlbmQsICc9Jyk7
Ci0gICAgc2tpcEV4YWN0bHk8VUNoYXI+KHBvc2l0aW9uLCBlbmQsICc9Jyk7Ci0gICAgaWYgKHBv
c2l0aW9uID49IGVuZCB8fCBwb3NpdGlvbiA9PSBiZWdpbkhhc2hWYWx1ZSB8fCAqcG9zaXRpb24g
IT0gJ1wnJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3Rvcjx1aW50OF90PiBkaWdl
c3Q7Ci0gICAgU3RyaW5nVmlldyBoYXNoVmFsdWUoYmVnaW5IYXNoVmFsdWUsIHBvc2l0aW9uIC0g
YmVnaW5IYXNoVmFsdWUpOyAvLyBiYXNlNjR1cmwgb3IgYmFzZTY0IGVuY29kZWQKLSAgICAvLyBG
SVhNRTogTm9ybWFsaXplIEJhc2U2NFVSTCB0byBCYXNlNjQgaW5zdGVhZCBvZiBkZWNvZGluZyB0
d2ljZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg2
Pi4KLSAgICBpZiAoIWJhc2U2NERlY29kZShoYXNoVmFsdWUudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpLCBkaWdlc3QsIEJhc2U2NFZhbGlkYXRlUGFkZGluZykpIHsKLSAgICAgICAgaWYgKCFiYXNl
NjRVUkxEZWNvZGUoaGFzaFZhbHVlLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgZGlnZXN0KSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGRpZ2VzdC5zaXplKCkg
PiBtYXhpbXVtQ29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0TGVuZ3RoKQorICAgIGlmIChkaWdl
c3QtPnZhbHVlLnNpemUoKSA+IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2g6Om1heGltdW1EaWdl
c3RMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faGFzaGVzLmFkZChzdGQ6
Om1ha2VfcGFpcihhbGdvcml0aG0sIGRpZ2VzdCkpOwotICAgIG1faGFzaEFsZ29yaXRobXNVc2Vk
IHw9IGFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBkaWdlc3QtPmFsZ29y
aXRobTsKKyAgICBtX2hhc2hlcy5hZGQoV1RGTW92ZSgqZGlnZXN0KSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307647</attachid>
            <date>2017-04-20 15:35:12 -0700</date>
            <delta_ts>2017-04-21 13:42:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171076-20170420153511.patch</filename>
            <type>text/plain</type>
            <size>34392</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA0LTIwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgY3J5cHRvZ3JhcGhpYyBkaWdlc3QgY29tcHV0YXRp
b24gYW5kIHBhcnNpbmcgb3V0IG9mIENTUCBjb2RlIHNvIGl0IGNhbiBiZSByZXVzZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvQmFz
ZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RGVjb2RlKToKKyAgICAgICAgKFdURjo6YmFz
ZTY0VVJMRGVjb2RlKToKKyAgICAgICAgQWRkIG92ZXJsb2FkcyBmb3IgYmFzZTY0RGVjb2RlIGFu
ZCBiYXNlNjRVUkxEZWNvZGUgdGhhdCB0YWtlIGEgU3RyaW5nVmlldywgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMKKyAgICAgICAgb2YgU3RyaW5ncy4KKworICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5o
OgorICAgICAgICAoV1RGOjppc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKToKKyAgICAgICAg
TW92ZSBoZWxwZXIgcHJlZGljYXRlIHVzZWQgZm9yIHBhcnNpbmcgZWl0aGVyIHR5cGUgb2YgQmFz
ZTY0IGVuY29kZWQgc3RyaW5nIGZyb20gV2ViQ29yZS4KKwogMjAxNy0wNC0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgbm90Rm91bmQgaW50byBpdHMgb3du
IGZpbGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNv
dXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCwxNCBAQCBib29sIGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTaWduCiAgICAgcmV0
dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIG91dCwg
b3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3Ry
aW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2ln
bmVkIG9wdGlvbnMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgb3B0aW9ucywgYmFzZTY0RGVj
TWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2KCks
IGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOworfQorCiBib29sIGJhc2U2NERl
Y29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFk
YXB0ZXIgb3V0LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIG91dC5jbGVhcigpOwpAQCAtMjk4
LDYgKzMwNiwxNCBAQCBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTCiAg
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgs
IG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKIH0KIAorYm9vbCBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nVmlldyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBvdXQpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CisgICAg
aWYgKCFsZW5ndGggfHwgaW4uaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFz
ZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFj
dGVyczE2KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwor
fQorCiBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRP
clVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewogICAgIG91dC5jbGVhcigpOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi90ZXh0L0Jhc2U2NC5oCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0Jhc2U2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIEJhc2U2NF9oCi0jZGVmaW5lIEJhc2U2NF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC0xNTIsNiArMTUxLDcgQEAgU3RyaW5nIGJhc2U2NEVuY29kZShDb25zdFNpZ25l
ZE9yVW5zaWduZQogU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RG9Ob3RJbnNlcnRMRnMpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0
b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nVmlldyYsIFNpZ25lZE9yVW5z
aWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQp
OwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9
IEJhc2U2NERlZmF1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1
bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CiAKQEAgLTE4OSw2ICsxODksNyBAQCBT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlKENvbnN0U2lnbmVkT3JVbnNpCiBTdHJpbmcgYmFzZTY0VVJM
RW5jb2RlKGNvbnN0IENTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRl
cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5n
VmlldyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlcik7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgU2lnbmVkT3JV
bnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGJhc2U2
NFVSTERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVj
dG9yQWRhcHRlcik7CiAKQEAgLTIxMiw2ICsyMTMsMTEgQEAgaW5saW5lIFN0cmluZyBiYXNlNjRV
UkxFbmNvZGUoY29uc3QgQ1N0cgogICAgIHJldHVybiBiYXNlNjRVUkxFbmNvZGUoaW4uZGF0YSgp
LCBpbi5sZW5ndGgoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKENoYXJhY3RlclR5
cGUgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8
fCBjID09ICcvJyB8fCBjID09ICctJyB8fCBjID09ICdfJzsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6QmFzZTY0RW5jb2RlUG9saWN5OwpAQCAtMjIyLDUgKzIyOCw0IEBA
IHVzaW5nIFdURjo6QmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMKIHVzaW5nIFdURjo6YmFz
ZTY0RW5jb2RlOwogdXNpbmcgV1RGOjpiYXNlNjREZWNvZGU7CiB1c2luZyBXVEY6OmJhc2U2NFVS
TERlY29kZTsKLQotI2VuZGlmIC8vIEJhc2U2NF9oCit1c2luZyBXVEY6OmlzQmFzZTY0T3JCYXNl
NjRVUkxDaGFyYWN0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU1NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAx
Ny0wNC0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFNwbGl0IGNy
eXB0b2dyYXBoaWMgZGlnZXN0IGNvbXB1dGF0aW9uIGFuZCBwYXJzaW5nIG91dCBvZiBDU1AgY29k
ZSBzbyBpdCBjYW4gYmUgcmV1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGYWN0b3Igb3V0IGNyeXB0b2dyYXBoaWMgZGlnZXN0IHBhcnNpbmcgZnJv
bSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb2RlCisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJl
IHJldXNlZCBmb3IgdGhlIFN1YnJlc291cmNlIEludGVncml0eSBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGh0bWwv
cGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnNraXBFeGFjdGx5
SWdub3JpbmdBU0NJSUNhc2UpOgorICAgICAgICBBZGQgcGFyc2luZyBoZWxwZXIgdG8gbWF0Y2gg
LyBza2lwIG92ZXIgYSBjb25zdGFudCBzdHJpbmcsIHVzaW5nIElnbm9yaW5nQVNDSUlDYXNlIHNl
bWFudGljcy4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2lu
Z1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KToKKyAgICAg
ICAgTW92ZSBwYXJzaW5nIG9mIGNyeXB0b2dyYXBoaWMtZGlnZXN0IHN0cmluZ3MgZnJvbSBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorICAgICAgICBhbmQgb3B0aW1pemUgaXQg
YSBsaXR0bGUgYnkgYXZvaWRpbmcgU3RyaW5nIGFsbG9jYXRpb25zIGFuZCBnZW5lcmFsaXppbmcg
aXQgc28gdGhhdCBpdAorICAgICAgICBjYW4gcGFyc2UgZWl0aGVyIFVDaGFycyBvciBMQ2hhcnMu
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OlJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD46Okhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFz
aDxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+OjpIYXNoOjplcXVhbCk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+
Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIEFkZCBhIHN0cnVjdCAocmF0aGVyIHRoYW4gdXNp
bmcgYSBzdGQ6OnBhaXIpIHRvIHJlcHJlc2VudCB0aGUgZGlnZXN0ICsgYWxnb3JpdGhtLiBBbmQg
YWRkCisgICAgICAgIEhhc2hUcmFpdHMgc28gaXQgY2FuIGJlIHVzZWQgYXMgSGFzaE1hcC4KKyAg
ICAgICAgCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJ
blBvbGljaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKTog
RGVsZXRlZC4KKyAgICAgICAgTW92ZSBhbGdvcml0aG0gY29udmVyc2lvbiB0byBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuY3BwLiBNYWtlIHVzZSBvZiBuZXcgCisgICAgICAgIGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JCeXRlcyBmdW5jdGlvbiB0byBkbyBoYXNoaW5nLgorCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaC5oOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3Q+OjpIYXNoOjpoYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlnZXN0Pjo6SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgSGFzaFRyYWl0
cyBmb3IgdGhlIGRpZ2VzdCwgdGhpcyBpcyBub3cgaGFuZGxlZCBieSBSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuIAorICAgICAgICBUbyBrZWVwIHRoaW5ncyByZWxhdGl2ZWx5IHN0cmFpZ2h0
LWZvcndhcmQsIHJlZGVmaW5lIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0KKyAg
ICAgICAgYW5kIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaW4gdGVybXMgb2YgUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LCBzbyB0aGF0IGxlc3MgY29kZQorICAgICAgICBoYXMgdG8gYmUg
Y2hhbmdlZCBhbGwgYXQgb25jZS4gSW4gYSBsYXRlciBwYXNzLCBpZiB3YW50ZWQsIHdlIGNhbiBy
ZW1vdmUgdGhlc2UgdXNpbmcgCisgICAgICAgIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNOb25jZUNoYXJhY3Rlcik6CisgICAgICAgIFVzZSByZW5hbWVkIGlzQmFzZTY0T3JC
YXNlNjRVUkxDaGFyYWN0ZXIgcHJlZGljYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZUhhc2hTb3VyY2UpOgorICAgICAgICBSZXdv
cmsgdXNpbmcgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHBhcnNpbmcuIFF1b3RhdGlvbiBh
bmQgbWF4aW11bSBkaWdlc3QKKyAgICAgICAgbGVuZ3RoIGhhdmUgYmVlbiBrZXB0IGhlcmUsIGFz
IHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIG90aGVyIHVzZXMgb2YgCisgICAgICAgIHRoZSBk
aWdlc3QsIHNwZWNpZmljYWxseSBTdWJyZXNvdXJjZSBJbnRlZ3JpdHkuCisKIDIwMTctMDQtMjAg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSB0b2xl
cmFuY2VCZWZvcmUgcGFyYW1ldGVyIGluIHRoZSBBVlBsYXllckl0ZW0gbWV0aG9kIHNlZWtUb1Rp
bWUgc2hvdWxkIG5vdCBiZSBuZWdhdGl2ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyMTU1NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTk2NCw2ICsxOTY0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRl
ci9Qb2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA4Niw2
ICszMDg2LDggQEAKIAkJN0MxRTk3MjgxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MxRTk3MjYxQTlGOTgzNDAwN0JGMEZCIC8qIEF1dG9GaWxsQnV0dG9uRWxlbWVudC5oICovOyB9
OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDNC
MTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9OwogCQk3
QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdGOThC
MDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJCTdDMkZBNjExMUVB
OTVBMzkwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyRkE2MEYxRUE5NUEzMjAw
QTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgKi87IH07CisJCTdDMkZB
NjEyMUVBOTVBM0MwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkZBNjEwMUVBOTVB
MzIwMEEwMzEwOCAvKiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzMzMEEwMjFERjhGQUM2MDBE
MzM5NUMgLyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyog
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzMzBBMDcxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9z
aXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAg
Ki87IH07CiAJCTdDMzMwQTA4MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDYx
REY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi87IH07CkBAIC02MzI3LDcg
KzYzMjksNyBAQAogCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSAqLzsgfTsKIAkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
N0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTdCMkRCMjE1ODZB
QkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovOyB9OwotCQlDRTdF
MTc4MzFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3RTE3ODIxQzgzQTQ5
MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCAqLzsgfTsKKwkJQ0U3RTE3
ODMxQzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFN0UxNzgyMUM4M0E0OTEw
MEFEMDZBRiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDMzM3QUQxQTQ2MDcxRjAwOUI4NTIz
IC8qIFNlcnZlcnNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFQzMzN0FDMUE0NjA3MUYwMDlCODUyMyAvKiBTZXJ2ZXJzU1BJLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0VDMzM3QUYxQTQ2MDg2
RDAwOUI4NTIzIC8qIEdyYXBoaWNzU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQzMzN0FFMUE0NjA4NkQwMDlCODUyMyAvKiBHcmFw
aGljc1NlcnZpY2VzU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0
aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
Q0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAgKi87IH07
CkBAIC0xMTA4NSw2ICsxMTA4Nyw4IEBACiAJCTdDMUU5NzI2MUE5Rjk4MzQwMDdCRjBGQiAvKiBB
dXRvRmlsbEJ1dHRvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0b0ZpbGxCdXR0b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1
IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MyRkE2MEYxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzJGQTYx
MDFFQTk1QTMyMDBBMDMxMDggLyogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMg
LyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzMzMEEwMzFERjlFOTVCMDBEMzM5NUMgLyogUG9zaXRpb25PcHRpb25z
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBQb3NpdGlvbk9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzMzMEEwNTFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM3ODcsNiArMjM3OTEsOCBAQAogCQkJ
CTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuY3BwICovLAogCQkJ
CTFBMkE2ODIyMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLywKIAkJCQkx
QUNBREQ3ODE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggKi8sCisJ
CQkJN0MyRkE2MEYxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5jcHAgKi8sCisJCQkJN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5oICovLAogCQkJCTkzRTIyN0RFMEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNv
dXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291
cmNlTG9hZGVyLmggKi8sCiAJCQkJRDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNl
TG9hZGVyT3B0aW9ucy5oICovLApAQCAtMjczMjQsNiArMjczMzAsNyBAQAogCQkJCUE4RUE3Q0FG
MEExOTJCOUMwMEE4RUY1RiAvKiBIVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODcxREUyNzBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEh0bWxFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODcxREUyQTBBMTUyQUM4MDBCMTJBNjggLyogSFRNTElGcmFtZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTdDMkZBNjEyMUVBOTVBM0MwMEEwMzEwOCAvKiBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3RDJEMEExOTM4NTUw
MEE4RUY1RiAvKiBIVE1MSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0Qy
QjBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMzI5OSw2ICszMzMwNiw3IEBACiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQy
RjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0MyRkE2MTExRUE5NUEzOTAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM5QzM3MzFEREJCOEMxMDBGRUZC
MjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1
NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0QzY3ODRDMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5n
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1BhcnNpbmdVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgpAQCAtODAs
NCArODIsMTYgQEAgdm9pZCByZXZlcnNlU2tpcFdoaWxlKGNvbnN0IENoYXJUeXBlKiYgcAogICAg
ICAgICAtLXBvc2l0aW9uOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1
bnNpZ25lZCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoPgorYm9vbCBza2lwRXhhY3RseUlnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVy
VHlwZSogZW5kLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbG93ZXJjYXNlTGV0dGVy
c0xlbmd0aF0pCit7CisgICAgaWYgKHBvc2l0aW9uICsgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aCA+
IGVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCByZXN1bHQgPSBXVEY6OmVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBsb3dlcmNhc2VMZXR0ZXJzTGVu
Z3RoIC0gMSwgbG93ZXJjYXNlTGV0dGVycyk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcG9z
aXRpb24gKz0gKGxvd2VyY2FzZUxldHRlcnNMZW5ndGggLSAxKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCIK
KworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgorI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgYm9vbCBwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNp
bmdQb3NpdGlvbihjb25zdCBDaGFyYWN0ZXJUeXBlKiYgcG9zaXRpb24sIGNvbnN0IENoYXJhY3Rl
clR5cGUqIGVuZCwgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0mIGFsZ29y
aXRobSkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyB3b3VsZCBiZSBtdWNoIGNsZWFuZXIgd2l0aCBh
IGxvb2t1cCB0YWJsZSBvZiBwYWlycyBvZiBsYWJlbCAvIGFsZ29yaXRobSBlbnVtIHZhbHVlcywg
YnV0IEkgY2FuJ3QKKyAgICAvLyBmaWd1cmUgb3V0IGhvdyB0byBrZWVwIHRoZSBsYWJlbHMgY29t
cGlsZXRpbWUgc3RyaW5ncyBmb3Igc2tpcEV4YWN0bHlJZ25vcmluZ0FTQ0lJQ2FzZS4KKworICAg
IGlmIChza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBlbmQsICJzaGEyNTYi
KSkgeworICAgICAgICBhbGdvcml0aG0gPSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
Z29yaXRobTo6U0hBMjU2OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHNr
aXBFeGFjdGx5SWdub3JpbmdBU0NJSUNhc2UocG9zaXRpb24sIGVuZCwgInNoYTM4NCIpKSB7Cisg
ICAgICAgIGFsZ29yaXRobSA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEEzODQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoc2tpcEV4YWN0
bHlJZ25vcmluZ0FTQ0lJQ2FzZShwb3NpdGlvbiwgZW5kLCAic2hhNTEyIikpIHsKKyAgICAgICAg
YWxnb3JpdGhtID0gUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG06OlNIQTUx
MjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCit7Cisg
ICAgaWYgKHBvc2l0aW9uID09IGVuZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAg
ICBpZiAoIXBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKHBvc2l0aW9uLCBlbmQs
IGFsZ29yaXRobSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIXNr
aXBFeGFjdGx5PENoYXJhY3RlclR5cGU+KHBvc2l0aW9uLCBlbmQsICctJykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbkhhc2hW
YWx1ZSA9IHBvc2l0aW9uOworICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc0Jhc2U2NE9y
QmFzZTY0VVJMQ2hhcmFjdGVyPihwb3NpdGlvbiwgZW5kKTsKKyAgICBza2lwRXhhY3RseTxDaGFy
YWN0ZXJUeXBlPihwb3NpdGlvbiwgZW5kLCAnPScpOworICAgIHNraXBFeGFjdGx5PENoYXJhY3Rl
clR5cGU+KHBvc2l0aW9uLCBlbmQsICc9Jyk7CisKKyAgICBpZiAocG9zaXRpb24gPT0gYmVnaW5I
YXNoVmFsdWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gZGlnZXN0OworICAgIFN0cmluZ1ZpZXcgaGFzaFZhbHVlKGJlZ2luSGFzaFZhbHVlLCBw
b3NpdGlvbiAtIGJlZ2luSGFzaFZhbHVlKTsKKyAgICBpZiAoIWJhc2U2NERlY29kZShoYXNoVmFs
dWUsIGRpZ2VzdCwgQmFzZTY0VmFsaWRhdGVQYWRkaW5nKSkgeworICAgICAgICBpZiAoIWJhc2U2
NFVSTERlY29kZShoYXNoVmFsdWUsIGRpZ2VzdCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qg
eyBhbGdvcml0aG0sIFdURk1vdmUoZGlnZXN0KSB9OworfQorCitzdGQ6Om9wdGlvbmFsPFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IFVD
aGFyKiYgYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQpCit7CisgICAgcmV0dXJuIHBhcnNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdEltcGwoYmVnaW4sIGVuZCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgTENo
YXIqJiBiZWdpbiwgY29uc3QgTENoYXIqIGVuZCkKK3sKKyAgICByZXR1cm4gcGFyc2VDcnlwdG9n
cmFwaGljRGlnZXN0SW1wbChiZWdpbiwgZW5kKTsKK30KKworc3RhdGljIFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CisgICAgY2FzZSBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6U0hB
MjU2OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjsKKyAgICBjYXNlIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEEz
ODQ6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
OworICAgIGNhc2UgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG06OlNIQTUx
MjoKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7
CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworfQorCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgIGNyeXB0b0RpZ2VzdC0+
YWRkQnl0ZXMoYnl0ZXMsIGxlbmd0aCk7CisgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9E
aWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENhY2hlZFJlc291cmNlOworCitzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
IHsKKyAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CisgICAgICAgIFNIQTI1NiA9IDEgPDwgMCwK
KyAgICAgICAgU0hBMzg0ID0gMSA8PCAxLAorICAgICAgICBTSEE1MTIgPSAxIDw8IDIsCisgICAg
fTsKKworICAgIC8vIE51bWJlciBvZiBieXRlcyB0byBob2xkIFNIQS01MTIgZGlnZXN0CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bURpZ2VzdExlbmd0aCA9IDY0OworCisgICAg
QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBhbGdvcml0aG0gPT0gb3RoZXIuYWxnb3JpdGht
ICYmIHZhbHVlID09IG90aGVyLnZhbHVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK3N0ZDo6b3B0aW9u
YWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3Qo
Y29uc3QgVUNoYXIqJiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCk7CitzdGQ6Om9wdGlvbmFsPFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0
IExDaGFyKiYgYmVnaW4sIGNvbnN0IExDaGFyKiBlbmQpOworCitSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisK
K30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdl
YkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4geworICAgIHN0cnVjdCBIYXNoIHsK
KyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0JiBkaWdlc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBw
YWlySW50SGFzaChpbnRIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaWdlc3QuYWxnb3JpdGht
KSksIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2goZGlnZXN0LnZhbHVlLmRhdGEoKSwgZGlnZXN0
LnZhbHVlLnNpemUoKSkpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYgYSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0JiBiKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3Q+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0PiB7CisgICAgdXNpbmcgQWxnb3JpdGhtID0gV2ViQ29yZTo6UmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0OjpBbGdvcml0aG07CisgICAgdXNpbmcgQWxnb3JpdGhtVW5kZXJseWluZ1R5cGUg
PSB0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxBbGdvcml0aG0+Ojp0eXBlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBlbXB0eUFsZ29yaXRobVZhbHVlID0gc3RhdGljX2Nhc3Q8QWxn
b3JpdGhtPihzdGQ6Om51bWVyaWNfbGltaXRzPEFsZ29yaXRobVVuZGVybHlpbmdUeXBlPjo6bWF4
KCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWxldGVkQWxnb3JpdGhtVmFsdWUgPSBz
dGF0aWNfY2FzdDxBbGdvcml0aG0+KHN0ZDo6bnVtZXJpY19saW1pdHM8QWxnb3JpdGhtVW5kZXJs
eWluZ1R5cGU+OjptYXgoKSAtIDEpOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1
ZUlzWmVybyA9IGZhbHNlOworCisgICAgc3RhdGljIFdlYkNvcmU6OlJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IGVtcHR5QWxn
b3JpdGhtVmFsdWUsIHsgfSB9OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERl
bGV0ZWRWYWx1ZShXZWJDb3JlOjpSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIHNsb3QpCisg
ICAgeworICAgICAgICBzbG90LmFsZ29yaXRobSA9IGRlbGV0ZWRBbGdvcml0aG1WYWx1ZTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIHNsb3QpCisgICAgeworICAgICAgICByZXR1cm4gc2xv
dC5hbGdvcml0aG0gPT0gZGVsZXRlZEFsZ29yaXRobVZhbHVlOworICAgIH0KK307CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAkocmV2aXNpb24gMjE1NTc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDIwICszMTEsNiBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBCiAgICAgcmV0dXJuIGlzQWxs
b3dlZDsKIH0KIAotc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9E
aWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0
aG0pCi17Ci0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwotICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7Ci0gICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7Ci19Ci0KIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGFzaElu
RW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29y
aXRobT4gYWxnb3JpdGhtcykgY29uc3QKIHsKQEAgLTM0Myw5ICszMjksNyBAQCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kCiAgICAgYm9vbCBmb3VuZEhhc2hJbkVuZm9y
Y2VkUG9saWNpZXMgPSBmYWxzZTsKICAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25seVBvbGlj
aWVzID0gZmFsc2U7CiAgICAgZm9yIChhdXRvIGFsZ29yaXRobSA6IGFsZ29yaXRobXMpIHsKLSAg
ICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwotICAgICAgICBjcnlwdG9EaWdlc3QtPmFk
ZEJ5dGVzKGNvbnRlbnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwot
ICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29yaXRobSwgY3J5
cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2ggaGFzaCA9IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhhbGdvcml0aG0sIGNvbnRl
bnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBpZiAo
IWZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlv
bkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6
Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQogICAgICAgICAgICAgZm91bmRI
YXNoSW5FbmZvcmNlZFBvbGljaWVzID0gdHJ1ZTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJblJl
cG9ydE9ubHlQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRl
bnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OlJlcG9ydE9ubHksIHN0ZDo6Zm9yd2FyZDxQ
cmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDIxNTU3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW5IYXNoLmgiCkBAIC01Niw4ICs1Nyw2IEBAIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwogY2xhc3MgVVJMOwogCi1lbnVtIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG07Ci0KIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0aXZl
TGlzdFZlY3RvcjsKIHR5cGVkZWYgaW50IFNhbmRib3hGbGFnczsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaAkocmV2
aXNpb24gMjE1NTc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw0MiArMjUsMTEgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gS2VlcCB0aGlzIHN5
bmNocm9uaXplZCB3aXRoIHRoZSBjb25zdGFudCBtYXhpbXVtQ29udGVudFNlY3VyaXR5UG9saWN5
RGlnZXN0TGVuZ3RoIGJlbG93LgotZW51bSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNo
QWxnb3JpdGhtIHsKLSAgICBTSEFfMjU2ID0gMSA8PCAwLAotICAgIFNIQV8zODQgPSAxIDw8IDEs
Ci0gICAgU0hBXzUxMiA9IDEgPDwgMiwKLX07Ci0KLWNvbnN0IHNpemVfdCBtYXhpbXVtQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlnZXN0TGVuZ3RoID0gNjQ7IC8vIGJ5dGVzIHRvIGhvbGQgU0hBLTUx
MiBkaWdlc3QKLQotdHlwZWRlZiBWZWN0b3I8dWludDhfdD4gQ29udGVudFNlY3VyaXR5UG9saWN5
RGlnZXN0OwotdHlwZWRlZiBzdGQ6OnBhaXI8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29y
aXRobSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoOwordXNpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSA9IFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOwordXNpbmcgQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaCA9IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4geyB0eXBlZGVm
IEludEhhc2g8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gSGFz
aDsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaEFsZ29yaXRobT4gOiBTdHJvbmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3Q+IHsKLSAg
ICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdCYgZGlnZXN0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhk
aWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKTsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaWdlc3QmIGEs
IGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpZ2VzdCYgYikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICAgICAgfQotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci0gICAgfTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAJKHJl
dmlzaW9uIDIxNTU3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsMTcgKzQyNSwxMiBA
QCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhCiAgICAgcmV0dXJuIG9r
OwogfQogCi1zdGF0aWMgYm9vbCBpc0Jhc2U2NENoYXJhY3RlcihVQ2hhciBjKQotewotICAgIHJl
dHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJysnIHx8IGMgPT0gJy8nIHx8IGMg
PT0gJy0nIHx8IGMgPT0gJ18nOwotfQotCiAvLyBNYXRjaCBCbGluaydzIGJlaGF2aW9yIG9mIGFs
bG93aW5nIGFuIGVxdWFsIHNpZ24gdG8gYXBwZWFyIGFueXdoZXJlIGluIHRoZSB2YWx1ZSBvZiB0
aGUgbm9uY2UKIC8vIGV2ZW4gdGhvdWdoIHRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIGJlaGF2aW9y
IG9mIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IExldmVsIDMgc3BlYy4sCiAvLyA8aHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jc3AvPiAoMjkgRmVicnVhcnkgMjAxNikuCiBzdGF0aWMg
Ym9vbCBpc05vbmNlQ2hhcmFjdGVyKFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJuIGlzQmFzZTY0Q2hh
cmFjdGVyKGMpIHx8IGMgPT0gJz0nOworICAgIHJldHVybiBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hh
cmFjdGVyKGMpIHx8IGMgPT0gJz0nOwogfQogCiAvLyBub25jZS1zb3VyY2UgICAgPSAiJ25vbmNl
LSIgbm9uY2UtdmFsdWUgIiciCkBAIC00NTQsMjkgKzQ0OSw2IEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdDo6cGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9zaXRpb24oY29uc3QgVUNoYXIqJiBwb3Np
dGlvbiwgc2l6ZV90IGxlbmd0aCwgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSYg
YWxnb3JpdGhtKQotewotICAgIHN0YXRpYyBzdHJ1Y3QgewotICAgICAgICBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGxhYmVsOwotICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3Jp
dGhtIGFsZ29yaXRobTsKLSAgICB9IGxhYmVsVG9IYXNoQWxnb3JpdGhtVGFibGVbXSB7Ci0gICAg
ICAgIHsgQVNDSUlMaXRlcmFsKCJzaGEyNTYiKSwgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFs
Z29yaXRobTo6U0hBXzI1NiB9LAotICAgICAgICB7IEFTQ0lJTGl0ZXJhbCgic2hhMzg0IiksIENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQgfSwKLSAgICAgICAgeyBB
U0NJSUxpdGVyYWwoInNoYTUxMiIpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGht
OjpTSEFfNTEyIH0sCi0gICAgfTsKLQotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyhwb3NpdGlv
biwgbGVuZ3RoKTsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbGFiZWxUb0hhc2hBbGdvcml0aG1U
YWJsZSkgewotICAgICAgICBTdHJpbmcmIGxhYmVsID0gZW50cnkubGFiZWwuZ2V0KCk7Ci0gICAg
ICAgIGlmICghc3RyaW5nVmlldy5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobGFiZWwpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHBvc2l0aW9uICs9IGxhYmVsLmxlbmd0aCgp
OwotICAgICAgICBhbGdvcml0aG0gPSBlbnRyeS5hbGdvcml0aG07Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vIGhhc2gtc291cmNlICAgID0g
IiciIGhhc2gtYWxnb3JpdGhtICItIiBiYXNlNjQtdmFsdWUgIiciCiAvLyBoYXNoLWFsZ29yaXRo
bSA9ICJzaGEyNTYiIC8gInNoYTM4NCIgLyAic2hhNTEyIgogLy8gYmFzZTY0LXZhbHVlICA9IDEq
KCBBTFBIQSAvIERJR0lUIC8gIisiIC8gIi8iIC8gIi0iIC8gIl8iICkqMiggIj0iICkKQEAgLTQ4
OSwzMSArNDYxLDE4IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGEK
ICAgICBpZiAoIXNraXBFeGFjdGx5PFVDaGFyPihwb3NpdGlvbiwgZW5kLCAnXCcnKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRo
bSBhbGdvcml0aG07Ci0gICAgaWYgKCFwYXJzZUhhc2hBbGdvcml0aG1BZHZhbmNpbmdQb3NpdGlv
bihwb3NpdGlvbiwgZW5kIC0gcG9zaXRpb24sIGFsZ29yaXRobSkpCisgICAgYXV0byBkaWdlc3Qg
PSBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QocG9zaXRpb24sIGVuZCk7CisgICAgaWYgKCFkaWdl
c3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghc2tpcEV4YWN0bHk8VUNoYXI+
KHBvc2l0aW9uLCBlbmQsICctJykpCisgICAgaWYgKHBvc2l0aW9uID49IGVuZCB8fCAqcG9zaXRp
b24gIT0gJ1wnJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVUNoYXIqIGJl
Z2luSGFzaFZhbHVlID0gcG9zaXRpb247Ci0gICAgc2tpcFdoaWxlPFVDaGFyLCBpc0Jhc2U2NENo
YXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7Ci0gICAgc2tpcEV4YWN0bHk8VUNoYXI+KHBvc2l0aW9u
LCBlbmQsICc9Jyk7Ci0gICAgc2tpcEV4YWN0bHk8VUNoYXI+KHBvc2l0aW9uLCBlbmQsICc9Jyk7
Ci0gICAgaWYgKHBvc2l0aW9uID49IGVuZCB8fCBwb3NpdGlvbiA9PSBiZWdpbkhhc2hWYWx1ZSB8
fCAqcG9zaXRpb24gIT0gJ1wnJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3Rvcjx1
aW50OF90PiBkaWdlc3Q7Ci0gICAgU3RyaW5nVmlldyBoYXNoVmFsdWUoYmVnaW5IYXNoVmFsdWUs
IHBvc2l0aW9uIC0gYmVnaW5IYXNoVmFsdWUpOyAvLyBiYXNlNjR1cmwgb3IgYmFzZTY0IGVuY29k
ZWQKLSAgICAvLyBGSVhNRTogTm9ybWFsaXplIEJhc2U2NFVSTCB0byBCYXNlNjQgaW5zdGVhZCBv
ZiBkZWNvZGluZyB0d2ljZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1MTg2Pi4KLSAgICBpZiAoIWJhc2U2NERlY29kZShoYXNoVmFsdWUudG9TdHJpbmdX
aXRob3V0Q29weWluZygpLCBkaWdlc3QsIEJhc2U2NFZhbGlkYXRlUGFkZGluZykpIHsKLSAgICAg
ICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoaGFzaFZhbHVlLnRvU3RyaW5nV2l0aG91dENvcHlpbmco
KSwgZGlnZXN0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGRp
Z2VzdC5zaXplKCkgPiBtYXhpbXVtQ29udGVudFNlY3VyaXR5UG9saWN5RGlnZXN0TGVuZ3RoKQor
ICAgIGlmIChkaWdlc3QtPnZhbHVlLnNpemUoKSA+IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2g6
Om1heGltdW1EaWdlc3RMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faGFz
aGVzLmFkZChzdGQ6Om1ha2VfcGFpcihhbGdvcml0aG0sIGRpZ2VzdCkpOwotICAgIG1faGFzaEFs
Z29yaXRobXNVc2VkIHw9IGFsZ29yaXRobTsKKyAgICBtX2hhc2hBbGdvcml0aG1zVXNlZCB8PSBk
aWdlc3QtPmFsZ29yaXRobTsKKyAgICBtX2hhc2hlcy5hZGQoV1RGTW92ZSgqZGlnZXN0KSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>
<flag name="review"
          id="328902"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>