<?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>224705</bug_id>
          
          <creation_ts>2021-04-16 17:16:54 -0700</creation_ts>
          <short_desc>Consider removing Expected::operator bool</short_desc>
          <delta_ts>2021-04-19 09:28:51 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751327</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-16 17:16:54 -0700</bug_when>
    <thetext>Consider removing Expected::operator bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751328</commentid>
    <comment_count>1</comment_count>
      <attachid>426294</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-16 17:19:23 -0700</bug_when>
    <thetext>Created attachment 426294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751505</commentid>
    <comment_count>2</comment_count>
      <attachid>426294</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 17:30:19 -0700</bug_when>
    <thetext>Comment on attachment 426294
Patch

Would you consider using &quot;explicit operator bool&quot; instead of removing it entirely? If not, what is making you want to remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751506</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 17:31:06 -0700</bug_when>
    <thetext>Seems like we might want to align with std::expected if we hope to move to it some day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751800</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-19 08:54:52 -0700</bug_when>
    <thetext>There was a discussion in the standardization process about whether it should be included at all.  This was to show them what removing it would do to our code.  I don&apos;t think we should remove it, but this was a useful exercise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751818</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-19 09:28:51 -0700</bug_when>
    <thetext>Thanks for explaining!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426294</attachid>
            <date>2021-04-16 17:19:23 -0700</date>
            <delta_ts>2021-04-16 17:19:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224705-20210416171922.patch</filename>
            <type>text/plain</type>
            <size>168887</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTI2ZGQwYWYyZTAxNTE5ZDc1MDY5MDYyYWNkMzQ4NTdmMTBkMmY0Li42NGJlZjQyMjU2NDM2OTBl
YzU5YTMxMzg5NTRiY2YzZjdmZWNlNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjEtMDQtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBDb25zaWRlciByZW1vdmluZyBFeHBlY3RlZDo6b3BlcmF0
b3IgYm9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgIChKU0M6OkpTQVBJR2xvYmFsT2Jq
ZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZSk6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgtW0pTVmFsdWUgdmFsdWVGb3JQcm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNW
YWx1ZSBzZXRWYWx1ZTpmb3JQcm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZWxldGVQ
cm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBoYXNQcm9wZXJ0eTpdKToKKyAgICAgICAg
KiBBUEkvdGVzdHMvdGVzdGFwaS5jcHA6CisgICAgICAgIChUZXN0QVBJOjpjYWxsRnVuY3Rpb24p
OgorICAgICAgICAoVGVzdEFQSTo6ZnVuY3Rpb25SZXR1cm5zVHJ1ZSk6CisgICAgICAgIChUZXN0
QVBJOjpzY3JpcHRSZXN1bHRJcyk6CisgICAgICAgIChUZXN0QVBJOjpjaGVja0pTQW5kQVBJTWF0
Y2gpOgorICAgICAgICAoVGVzdEFQSTo6c3ltYm9sc0hhc1Byb3BlcnR5Rm9yS2V5KToKKyAgICAg
ICAgKFRlc3RBUEk6OnN5bWJvbHNEZWxldGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChUZXN0
QVBJOjpjbGFzc0RlZmluaXRpb25XaXRoSlNTdWJjbGFzcyk6CisgICAgICAgIChUZXN0QVBJOjpw
cm94eVJldHVybmVkV2l0aEpTU3ViY2xhc3NpbmcpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0
YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzIGNvbnN0
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QgY29uc3Qp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcEpTT05TdHJpbmcgY29u
c3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlIGNvbnN0
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZSBjb25z
dCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZCBj
b25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0
R3JvdXApOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Y3JlYXRlQ29tbWFu
ZExpbmVBUElPYmplY3QgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VD
YWxsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmND
YWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVVbnRp
bE5leHRSdW5Mb29wKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6c3RhcnRU
cmFja2luZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6c3RvcFRy
YWNraW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNr
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAoY1N0cmluZ0Zyb21WaWV3V2l0aFN0cmluZyk6CisgICAgICAgIChkdW1wRXhjZXB0aW9uKToK
KyAgICAgICAgKHJ1bkludGVyYWN0aXZlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpwYXJzZURhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmll
ci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6Y2hlY2tJZlJlY29yZGVkKToKKyAg
ICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2ln
aWxsQ3Jhc2hBbmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6bG9jayk6CisgICAgICAgICogd2FzbS9X
YXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgICogd2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6RW50cnlQbGFuOjpwcmVwYXJlKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBh
cnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFBs
YW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbik6
CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVt
b3J5Ojpncm93U2hhcmVkKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46OndvcmspOgorICAg
ICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFu
Ojp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21Q
YXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVRhYmxlSGVscGVyKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUYWJsZSk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rp
b25QYXJzZXI6OnBhcnNlTWVtb3J5SGVscGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlv
blBhcnNlcjo6cGFyc2VDdXN0b20pOgorICAgICAgICAqIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6YWRkQnl0ZXMpOgor
ICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2spOgorICAg
ICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6OkpT
V2ViQXNzZW1ibHlNZW1vcnk6Omdyb3cpOgorCiAyMDIxLTA0LTE2ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgVGVy
bWluYXRpb25FeGNlcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0Mjc0ZGZiNzlhYjdkN2JmZDBiMjEzOTFhYmVhMzk5
YTM0YjIyNjUuLjY4ZjAwNzU1N2JkZWVjOTZjZjNjMTlmYTk4MjQ0ZmZjN2U1ZTE3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMjEtMDQtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBDb25zaWRlciByZW1vdmluZyBFeHBlY3RlZDo6b3Bl
cmF0b3IgYm9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvRXhwZWN0ZWQuaDoKKyAgICAgICAgKHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1l
bnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvciopOgorICAgICAgICAoc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192Mzo6b3BlcmF0b3I9PSk6CisgICAgICAgIChzdGQ6OmV4cGVyaW1l
bnRhbDo6ZnVuZGFtZW50YWxzX3YzOjpvcGVyYXRvciE9KToKKyAgICAgICAgKHN0ZDo6ZXhwZXJp
bWVudGFsOjpmdW5kYW1lbnRhbHNfdjM6OmV4cGVjdGVkOjpvcGVyYXRvciBib29sIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpw
cmludEV4cGVjdGVkQ1N0cmluZ0hlbHBlcik6CisgICAgICAgICogd3RmL1RocmVhZE1lc3NhZ2Uu
Y3BwOgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVNjb3BlZCk6CisgICAgICAgICogd3RmL1VS
TFBhcnNlci5jcHA6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydCk6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OnJlYWxsb2NhdGVCdWZmZXI8TENoYXI+KToKKyAgICAgICAgKFdURjo6U3Ry
aW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxVQ2hhcj4pOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXRmOCBjb25zdCk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnV0ZjggY29uc3Qp
OgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Zzo6dXRmOCBjb25zdCk6CisKIDIwMjEtMDQtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxlIEFwcGxpY2F0aW9uQ2FjaGUgd2l0
aCBsaW5rZWRPbk9yQWZ0ZXIgY2hlY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MjdhYWRhMzhiOGUyZjhjNGZh
NWMzYmM2Mzg5NjU3ZjBkMTBmZjAxLi5hNGYzYmNhOGZiZGNmOTZiZDJiNTM4MjQ4MDkwYmQ0MmFi
Njk1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIwIEBACisyMDIxLTA0LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc2lkZXIg
cmVtb3ZpbmcgRXhwZWN0ZWQ6Om9wZXJhdG9yIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDcwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6c2VuZEJlYWNvbik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Y2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpOYW1lUmVzb2x2ZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpmYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpQYXJzZXI6OmNvbnN1bWVJbnRlZ3JhbExpdGVyYWwpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlQ29uc3RhbnRFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeEFi
YnJldmlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlVHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBh
cnNlQnVpbHRJblNlbWFudGljKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBh
cnNlUmVzb3VyY2VTZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpw
YXJzZVN0YWdlSW5PdXRTZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2Vy
OjpwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
UGFyc2VyOjpwYXJzZU51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVZlcnRleE9yRnJhZ21lbnRGdW5jdGlvbkRlY2xhcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlUmVndWxhckZ1bmN0
aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFyc2VT
d2l0Y2hDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlRm9yTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFy
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlU3RhdGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlTGltaXRlZFN1ZmZpeE9w
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlU3VmZml4T3Bl
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6Y29tcGxldGVBc3NpZ25t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlUG9zc2libGVUZXJu
YXJ5Q29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFyc2VU
ZXJtKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6YmFja3RyYWNraW5nU2NvcGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6cHJlcGFyZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJl
cGFyZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Om1hdGNoU2VtYW50aWNzKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6aW5jbHVkZVN0YW5kYXJkTGlicmFyeSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpzeW50aGVzaXplQ29uc3RydWN0b3JzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6c3ludGhlc2l6ZUVudW1l
cmF0aW9uRnVuY3Rpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjpoYXNFcnJvciBjb25z
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlw
dEluV29ybGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dE1vZHVsZUxvYWRlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVM
b2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEFuY2hvckVsZW1lbnQ6OnBhcnNlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBo
dG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAob3B0aW9uYWxWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
Ojp3aWR0aCBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0
VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyk6CisgICAgICAgIChX
ZWJDb3JlOjpjbGFtcEhUTUxOb25OZWdhdGl2ZUludGVnZXJUb1JhbmdlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0aW9uUmVzdWx0VG9Cb29s
ZWFuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjplbmFibGUpOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291
cmNlTG9hZGVyOjpjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRGcm9tKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FzdENhY2hlZFJlc291
cmNlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQp
OgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxp
bmVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OnRyeVNldEZ1bmN0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06
CisgICAgICAgIChXZWJDb3JlOjp0cnlTZXRGdW5jdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbiBzZW5kSDJQaW5nOnBvbmdIYW5kbGVyOl0pOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKwogMjAyMS0wNC0xNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSByZWR1bmRhbnQgcmVuZGVyT2JqZWN0IGluIEJyZWFraW5nQ29udGV4dDo6
aGFuZGxlVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDcxNzZkMTk3ZTMxNWJhMTUwNjlkODI1NjcyMjg4M2Fl
NjVhMWQwLi5hMTkxYWM0NzM3NjQxOWI5YWE4OTFkMTU0NzViNzdhNTI5N2EyMDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA0LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc2lkZXIgcmVtb3ZpbmcgRXhwZWN0ZWQ6
Om9wZXJhdG9yIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDcwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRDb21wbGV0
ZVdpdGhFcnJvcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGF0ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlz
cGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1
bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgorICAgICAgICAoLVtfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gY3JlYXRlVGFiV2l0aE5hbWU6dGFiSWNvblVSTDpzb3VyY2VVUkw6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBl
dmFsdWF0ZVNjcmlwdDpmcmFtZVVSTDpjb250ZXh0U2VjdXJpdHlPcmlnaW46dXNlQ29udGVudFNj
cmlwdENvbnRleHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3Rv
ckV4dGVuc2lvbiByZWxvYWRJZ25vcmluZ0NhY2hlOnVzZXJBZ2VudDppbmplY3RlZFNjcmlwdDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5
TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgdW5yZWdpc3RlckV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRl
bnNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpy
ZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZhbHVhdGlvblJlc3VsdEFz
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorCiAyMDIxLTA0LTE2ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGlzYWJsZSBBcHBsaWNhdGlv
bkNhY2hlIHdpdGggbGlua2VkT25PckFmdGVyIGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCBjMTdhYTg1NmEzZTg3NmVkZTJhYjQ5
ZmJmYjkyMGEwMDliYzJkZmVmLi42MTQyZjJkNmYzN2VjNTg2N2UxZWNkZTFjZTdmMjdmOTBkNWRj
MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
bW0KQEAgLTEyNCw3ICsxMjQsNyBAQCBJZGVudGlmaWVyIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgfQogCiAg
ICAgYXV0byByZXN1bHQgPSBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoYmFzZSwgbmFtZSk7
Ci0gICAgaWYgKHJlc3VsdCkKKyAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICBy
ZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVzdWx0LnZhbHVlKCkuc3RyaW5nKCkp
OwogCiAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGds
b2JhbE9iamVjdCwgcmVzdWx0LmVycm9yKCkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShK
U0dsb2JhbE9iamVjdCogZwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChz
Y29wZSkpOwogCiAgICAgYXV0byByZXN1bHQgPSBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIo
c291cmNlT3JpZ2luLnVybCgpLCBzcGVjaWZpZXIpOwotICAgIGlmIChyZXN1bHQpCisgICAgaWYg
KHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGltcG9ydChyZXN1bHQudmFsdWUo
KSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGF1dG8qIHByb21pc2UgPSBKU0ludGVybmFs
UHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVy
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCBhYzA5ZjY1NDUwN2Mz
ZGJkNDk2MGZkNjcxMzMyYmIzZjExZjkwNjI1Li5iOGUyN2Y3ODQ1YWVhNTEzYWQ2ZDlkMjQ4NjFk
MGU4NmNhZDY1MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC0zMDIs
NyArMzAyLDcgQEAgaW5saW5lIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVBy
b3BlcnR5T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rpb24gc3QKIC0gKEpTVmFsdWUgKil2YWx1ZUZv
clByb3BlcnR5OihpZClrZXkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHBlcmZvcm1Qcm9wZXJ0eU9w
ZXJhdGlvbjxKU1ZhbHVlUmVmPihKU09iamVjdEdldFByb3BlcnR5LCBKU09iamVjdEdldFByb3Bl
cnR5Rm9yS2V5LCBzZWxmLCBrZXkpOwotICAgIGlmICghcmVzdWx0KQorICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gW19jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAKICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjpyZXN1bHQudmFsdWUoKSBpbkNvbnRleHQ6X2NvbnRleHRdOwpAQCAtMzI0LDcg
KzMyNCw3IEBAIGlubGluZSBFeHBlY3RlZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9w
ZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1bmN0aW9uIHN0CiAgICAgfTsKIAogICAgIGF1dG8gcmVz
dWx0ID0gcGVyZm9ybVByb3BlcnR5T3BlcmF0aW9uPFVuaXQ+KHN0cmluZ1NldFByb3BlcnR5LCBq
c1ZhbHVlU2V0UHJvcGVydHksIHNlbGYsIGtleSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFs
dWUpLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUpOwotICAgIGlmICghcmVzdWx0KSB7CisgICAg
aWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2Vw
dGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzMsNyAr
MzMzLDcgQEAgaW5saW5lIEV4cGVjdGVkPFJlc3VsdCwgSlNWYWx1ZVJlZj4gcGVyZm9ybVByb3Bl
cnR5T3BlcmF0aW9uKE5TU3RyaW5nRnVuY3Rpb24gc3QKIC0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KEpTVmFsdWVQcm9wZXJ0eSlrZXkKIHsKICAgICBFeHBlY3RlZDxCT09MLCBKU1ZhbHVlUmVmPiBy
ZXN1bHQgPSBwZXJmb3JtUHJvcGVydHlPcGVyYXRpb248Qk9PTD4oSlNPYmplY3REZWxldGVQcm9w
ZXJ0eSwgSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSwgc2VsZiwga2V5KTsKLSAgICBpZiAo
IXJlc3VsdCkKKyAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFtf
Y29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgcmV0
dXJuIHJlc3VsdC52YWx1ZSgpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIGlubGluZSBFeHBlY3Rl
ZDxSZXN1bHQsIEpTVmFsdWVSZWY+IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbihOU1N0cmluZ0Z1
bmN0aW9uIHN0CiAgICAgfTsKIAogICAgIEV4cGVjdGVkPEJPT0wsIEpTVmFsdWVSZWY+IHJlc3Vs
dCA9IHBlcmZvcm1Qcm9wZXJ0eU9wZXJhdGlvbjxCT09MPihzdHJpbmdIYXNQcm9wZXJ0eSwgSlNP
YmplY3RIYXNQcm9wZXJ0eUZvcktleSwgc2VsZiwga2V5KTsKLSAgICBpZiAoIXJlc3VsdCkKKyAg
ICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29s
RnJvbU5vdGlmeUV4Y2VwdGlvbjpyZXN1bHQuZXJyb3IoKV07CiAgICAgcmV0dXJuIHJlc3VsdC52
YWx1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jcHAK
aW5kZXggOGMxOWY1M2Q0YjY0NDliMjZiMTc5MjI2ZTI0NWZlOWY3NjNkODA3Ni4uYWI5NTQzOTY2
N2EyZTk1MDI0ZmI0ZWRlYzRhZjQ1MjM0MDQ3N2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL3Rlc3RhcGkuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgVGVzdEFQSTo6U2Ny
aXB0UmVzdWx0IFRlc3RBUEk6OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvblNvdXJj
ZSwgQXJndW1lbnQKICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uOwogICAgIHsKICAgICAgICAgU2Ny
aXB0UmVzdWx0IGZ1bmN0aW9uUmVzdWx0ID0gZXZhbHVhdGVTY3JpcHQoZnVuY3Rpb25Tb3VyY2Up
OwotICAgICAgICBpZiAoIWZ1bmN0aW9uUmVzdWx0KQorICAgICAgICBpZiAoIWZ1bmN0aW9uUmVz
dWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVzdWx0OwogICAg
ICAgICBmdW5jdGlvbiA9IGZ1bmN0aW9uUmVzdWx0LnZhbHVlKCk7CiAgICAgfQpAQCAtMjQzLDE0
ICsyNDMsMTQgQEAgYm9vbCBUZXN0QVBJOjpmdW5jdGlvblJldHVybnNUcnVlKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uU291cmNlLCBBcmd1bWVudFR5cGVzLi4uIGEKIHsKICAgICBKU1ZhbHVlUmVmIHRy
dWVWYWx1ZSA9IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0cnVlKTsKICAgICBTY3JpcHRS
ZXN1bHQgcmVzdWx0ID0gY2FsbEZ1bmN0aW9uKGZ1bmN0aW9uU291cmNlLCBhcmd1bWVudHMuLi4p
OwotICAgIGlmICghcmVzdWx0KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHQs
IHRydWVWYWx1ZSwgcmVzdWx0LnZhbHVlKCkpOwogfQogCiBib29sIFRlc3RBUEk6OnNjcmlwdFJl
c3VsdElzKFNjcmlwdFJlc3VsdCByZXN1bHQsIEpTVmFsdWVSZWYgdmFsdWUpCiB7Ci0gICAgaWYg
KCFyZXN1bHQpCisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dCwgcmVzdWx0LnZh
bHVlKCksIHZhbHVlKTsKIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFRlc3RBUEk6OmNoZWNr
SlNBbmRBUElNYXRjaChjb25zdCBKU0Z1bmN0b3ImIGpzRnVuY3RvciwgY29uc3QgQVBJRnVuY3Rv
ciYgYQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBKU1ZhbHVlUmVm
IHJlc3VsdCA9IGFwaUZ1bmN0b3IoJmV4Y2VwdGlvbik7CiAgICAgU2NyaXB0UmVzdWx0IGpzUmVz
dWx0ID0ganNGdW5jdG9yKCk7Ci0gICAgaWYgKCFqc1Jlc3VsdCkgeworICAgIGlmICghanNSZXN1
bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgY2hlY2soZXhjZXB0aW9uLCAiSlMgYW5kIEFQSSBj
YWxscyBzaG91bGQgYm90aCB0aHJvdyBhbiBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24p
OwogICAgICAgICBjaGVjayhmdW5jdGlvblJldHVybnNUcnVlKCIoZnVuY3Rpb24oYSwgYikgeyBy
ZXR1cm4gYS5jb25zdHJ1Y3RvciA9PT0gYi5jb25zdHJ1Y3RvcjsgfSkiLCBleGNlcHRpb24sIGpz
UmVzdWx0LmVycm9yKCkpLCAiSlMgYW5kIEFQSSBjYWxscyBzaG91bGQgYm90aCB0aHJvdyB0aGUg
c2FtZSBleGNlcHRpb24gd2hpbGUgIiwgZGVzY3JpcHRpb24pOwogICAgIH0gZWxzZSB7CkBAIC00
MjksNyArNDI5LDcgQEAgdm9pZCBUZXN0QVBJOjpzeW1ib2xzSGFzUHJvcGVydHlGb3JLZXkoKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIEpT
T2JqZWN0SGFzUHJvcGVydHlGb3JLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2VwdGlvbikp
OwogICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1bnNldCIp
OwogCi0gICAgICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwgb2JqZWN0
LCBrZXksIHRoZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOworICAgICAg
ICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5LCB0aGVB
bnN3ZXIpLmhhc192YWx1ZSgpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsKIAogICAg
ICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAogICAgICAgICAgICAgICAgIFsmXSB7CkBAIC00
NjAsNyArNDYwLDcgQEAgdm9pZCBUZXN0QVBJOjpzeW1ib2xzRGVsZXRlUHJvcGVydHlGb3JLZXko
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQs
IEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JLZXkoY29udGV4dCwgb2JqZWN0LCBrZXksIGV4Y2Vw
dGlvbikpOwogICAgICAgICAgICAgICAgIH0sICJjaGVja2luZyBoYXMgcHJvcGVydHkga2V5cyB1
bnNldCIpOwogCi0gICAgICAgICAgICBjaGVjayghIWNhbGxGdW5jdGlvbihzZXRGdW5jdGlvbiwg
b2JqZWN0LCBrZXksIHRoZUFuc3dlciksICJzZXQgcHJvcGVydHkgdG8gdGhlIGFuc3dlciIpOwor
ICAgICAgICAgICAgY2hlY2soISFjYWxsRnVuY3Rpb24oc2V0RnVuY3Rpb24sIG9iamVjdCwga2V5
LCB0aGVBbnN3ZXIpLmhhc192YWx1ZSgpLCAic2V0IHByb3BlcnR5IHRvIHRoZSBhbnN3ZXIiKTsK
IAogICAgICAgICAgICAgY2hlY2tKU0FuZEFQSU1hdGNoKAogICAgICAgICAgICAgICAgIFsmXSB7
CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBUZXN0QVBJOjpjbGFzc0RlZmluaXRpb25XaXRoSlNT
dWJjbGFzcygpCiAgICAgSlNPYmplY3RSZWYgU3VwZXJjbGFzcyA9IEpTT2JqZWN0TWFrZUNvbnN0
cnVjdG9yKGNvbnRleHQsIGpzQ2xhc3MsIGNvbnN0cnVjdG9yKTsKIAogICAgIFNjcmlwdFJlc3Vs
dCByZXN1bHQgPSBjYWxsRnVuY3Rpb24oIihmdW5jdGlvbiAoU3VwZXJjbGFzcykgeyBjbGFzcyBT
dWJjbGFzcyBleHRlbmRzIFN1cGVyY2xhc3MgeyBtZXRob2QoKSB7IHJldHVybiAndmFsdWUnOyB9
IH07IHJldHVybiBuZXcgU3ViY2xhc3MoKTsgfSkiLCBTdXBlcmNsYXNzKTsKLSAgICBjaGVjaygh
IXJlc3VsdCwgImNyZWF0aW5nIGEgc3ViY2xhc3Mgc2hvdWxkIG5vdCB0aHJvdy4iKTsKKyAgICBj
aGVjayhyZXN1bHQuaGFzX3ZhbHVlKCksICJjcmVhdGluZyBhIHN1YmNsYXNzIHNob3VsZCBub3Qg
dGhyb3cuIik7CiAgICAgY2hlY2soSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHJlc3VsdC52YWx1
ZSgpKSwgInJlc3VsdCBvZiBjb25zdHJ1Y3Rpb24gc2hvdWxkIGhhdmUgYmVlbiBhbiBvYmplY3Qu
Iik7CiAgICAgSlNPYmplY3RSZWYgc3ViY2xhc3MgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihy
ZXN1bHQudmFsdWUoKSk7CiAKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIFRlc3RBUEk6OnByb3h5
UmV0dXJuZWRXaXRoSlNTdWJjbGFzc2luZygpCiAKICAgICBhdXRvIGNvbnN0cnVjdG9yID0gW10g
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWYq
LCBKU1ZhbHVlUmVmKikgLT4gSlNPYmplY3RSZWYgewogICAgICAgICBTY3JpcHRSZXN1bHQgcmVz
dWx0ID0gdGVzdC5jYWxsRnVuY3Rpb24oIihmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBuZXcg
UHJveHkob2JqZWN0LCB7IGdldFByb3RvdHlwZU9mOiAoKSA9PiB7IGdsb2JhbFRoaXMudHJpZ2dl
cmVkUHJveHkgPSB0cnVlOyByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsgfX0pOyB9KSIsIEpTT2Jq
ZWN0TWFrZShjdHgsIGpzQ2xhc3MsIG51bGxwdHIpKTsKLSAgICAgICAgdGVzdC5jaGVjayghIXJl
c3VsdCwgImNyZWF0aW5nIGEgcHJveHkgc2hvdWxkIG5vdCB0aHJvdyIpOworICAgICAgICB0ZXN0
LmNoZWNrKHJlc3VsdC5oYXNfdmFsdWUoKSwgImNyZWF0aW5nIGEgcHJveHkgc2hvdWxkIG5vdCB0
aHJvdyIpOwogICAgICAgICB0ZXN0LmNoZWNrKEpTVmFsdWVJc09iamVjdChjdHgsIHJlc3VsdC52
YWx1ZSgpKSwgInJlc3VsdCBvZiBwcm94eSBjcmVhdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGFuIG9i
amVjdC4iKTsKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KHJlc3VsdC52
YWx1ZSgpKTsKICAgICB9OwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgVGVzdEFQSTo6cHJveHlS
ZXR1cm5lZFdpdGhKU1N1YmNsYXNzaW5nKCkKICAgICBKU09iamVjdFJlZiBTdXBlcmNsYXNzID0g
SlNPYmplY3RNYWtlQ29uc3RydWN0b3IoY29udGV4dCwganNDbGFzcywgY29uc3RydWN0b3IpOwog
CiAgICAgU2NyaXB0UmVzdWx0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbigiKGZ1bmN0aW9uIChTdXBl
cmNsYXNzKSB7IGNsYXNzIFN1YmNsYXNzIGV4dGVuZHMgU3VwZXJjbGFzcyB7IG1ldGhvZCgpIHsg
cmV0dXJuICd2YWx1ZSc7IH0gfTsgcmV0dXJuIG5ldyBTdWJjbGFzcygpOyB9KSIsIFN1cGVyY2xh
c3MpOwotICAgIGNoZWNrKCEhcmVzdWx0LCAiY3JlYXRpbmcgYSBzdWJjbGFzcyBzaG91bGQgbm90
IHRocm93LiIpOworICAgIGNoZWNrKHJlc3VsdC5oYXNfdmFsdWUoKSwgImNyZWF0aW5nIGEgc3Vi
Y2xhc3Mgc2hvdWxkIG5vdCB0aHJvdy4iKTsKICAgICBjaGVjayhKU1ZhbHVlSXNPYmplY3QoY29u
dGV4dCwgcmVzdWx0LnZhbHVlKCkpLCAicmVzdWx0IG9mIGNvbnN0cnVjdGlvbiBzaG91bGQgaGF2
ZSBiZWVuIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVjdFJlZiBzdWJjbGFzcyA9IGNvbnN0X2Nh
c3Q8SlNPYmplY3RSZWY+KHJlc3VsdC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggZjg4ZDVlYTc5ZmI1NzJi
YmQ0YzlhZmViOTdhODJkNTkxMGM0M2Q0OC4uZDExYWQ4OGE3NTdkNzM0OTU5YjQ3ZTk5YzgzZjZl
N2JmYTVlN2UzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5l
U3RhY2tNYXJrZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBNYWNoaW5lVGhyZWFkczo6
dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIHZv
aWQKICAgICAgICAgICAgIGlmICh0aHJlYWQucHRyKCkgIT0gJmN1cnJlbnRUaHJlYWQKICAgICAg
ICAgICAgICAgICAmJiB0aHJlYWQucHRyKCkgIT0gJmN1cnJlbnRUaHJlYWRGb3JHQykgewogICAg
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkLT5zdXNwZW5kKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBpc1N1c3BlbmRlZC5zZXQoaW5kZXgpOwogICAgICAgICAg
ICAgICAgIGVsc2UgewogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNjVmOGQ2YmYxN2FmMjdiNTU5
ZDViZWYzMDg5NzU3ZmZhODVjNTRkZS4uYzhiMGQ3MjI4ZTQ3MmMwZmUzZjJkMTBmMjQ5NDZiYjNi
MGE4NGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAKQEAgLTI2Niw4ICsyNjYsOCBAQCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1l
cwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogCiAgICAgYXV0byBj
YWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKLSAgICBB
U1NFUlQoY2FsbFJlc3VsdCk7Ci0gICAgaWYgKCFjYWxsUmVzdWx0IHx8ICFjYWxsUmVzdWx0LnZh
bHVlKCkpCisgICAgQVNTRVJUKGNhbGxSZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgIGlmICghY2Fs
bFJlc3VsdC5oYXNfdmFsdWUoKSB8fCAhY2FsbFJlc3VsdC52YWx1ZSgpKQogICAgICAgICByZXR1
cm4gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgp
OwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQgPSB0b0luc3BlY3RvclZhbHVlKGds
b2JhbE9iamVjdCgpLCBjYWxsUmVzdWx0LnZhbHVlKCkpOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIFJl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3Jh
cE9iamVjdChKU0M6OkpTVmFsdWUKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2Vu
ZXJhdGVQcmV2aWV3KTsKIAogICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhF
dmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOwotICAgIGlmICghY2FsbFJlc3VsdCkKKyAgICBpZiAo
IWNhbGxSZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byByZXN1bHRWYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUoZ2xvYmFsT2JqZWN0KCksIGNhbGxS
ZXN1bHQudmFsdWUoKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25zdCBT
dHIKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsKIAog
ICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVu
Y3Rpb24pOwotICAgIGlmICghY2FsbFJlc3VsdCkKKyAgICBpZiAoIWNhbGxSZXN1bHQuaGFzX3Zh
bHVlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGNhbGxSZXN1bHQudmFs
dWUoKS5pc051bGwoKSkKQEAgLTMzOSw3ICszMzksNyBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUg
dAogICAgICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29sdW1ucyk7CiAKICAgICBh
dXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9u
KTsKLSAgICBpZiAoIWNhbGxSZXN1bHQpCisgICAgaWYgKCFjYWxsUmVzdWx0Lmhhc192YWx1ZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gcmVzdWx0VmFsdWUgPSB0b0lu
c3BlY3RvclZhbHVlKGdsb2JhbE9iamVjdCgpLCBjYWxsUmVzdWx0LnZhbHVlKCkpOwpAQCAtMzYw
LDcgKzM2MCw3IEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJldmlldz4gSW5q
ZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZShKU0M6OkpTVmFsCiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHZhbHVlKTsKIAogICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24pOwotICAgIGlmICghY2FsbFJlc3VsdCkKKyAg
ICBpZiAoIWNhbGxSZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYXV0byByZXN1bHRWYWx1ZSA9IHRvSW5zcGVjdG9yVmFsdWUoZ2xvYmFsT2JqZWN0KCks
IGNhbGxSZXN1bHQudmFsdWUoKSk7CkBAIC00MTEsOCArNDExLDggQEAgSlNDOjpKU1ZhbHVlIElu
amVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25z
dAogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGF1dG8gY2Fs
bFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7Ci0gICAgQVNT
RVJUKGNhbGxSZXN1bHQpOwotICAgIGlmICghY2FsbFJlc3VsdCkKKyAgICBBU1NFUlQoY2FsbFJl
c3VsdC5oYXNfdmFsdWUoKSk7CisgICAgaWYgKCFjYWxsUmVzdWx0Lmhhc192YWx1ZSgpKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBjYWxsUmVzdWx0LnZhbHVlKCk7CiB9CkBAIC00
MzksNyArNDM5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiAgICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KG9iamVjdEdyb3VwKTsKIAogICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldp
dGhFdmFsRW5hYmxlZChyZWxlYXNlRnVuY3Rpb24pOwotICAgIEFTU0VSVF9VTlVTRUQoY2FsbFJl
c3VsdCwgY2FsbFJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYWxsUmVzdWx0LCBjYWxsUmVz
dWx0Lmhhc192YWx1ZSgpKTsKIH0KIAogSlNDOjpKU09iamVjdCogSW5qZWN0ZWRTY3JpcHQ6OmNy
ZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWUpIGNvbnN0CkBA
IC00NDksOCArNDQ5LDggQEAgSlNDOjpKU09iamVjdCogSW5qZWN0ZWRTY3JpcHQ6OmNyZWF0ZUNv
bW1hbmRMaW5lQVBJT2JqZWN0KEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWUKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChjYWxsRnJhbWUpOwogCiAgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1
bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKLSAgICBBU1NFUlQoY2FsbFJlc3VsdCk7
Ci0gICAgcmV0dXJuIGNhbGxSZXN1bHQgPyBhc09iamVjdChjYWxsUmVzdWx0LnZhbHVlKCkpIDog
bnVsbHB0cjsKKyAgICBBU1NFUlQoY2FsbFJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgcmV0dXJu
IGNhbGxSZXN1bHQuaGFzX3ZhbHVlKCkgPyBhc09iamVjdChjYWxsUmVzdWx0LnZhbHVlKCkpIDog
bnVsbHB0cjsKIH0KIAogSlNDOjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0OjphcnJheUZyb21WZWN0
b3IoVmVjdG9yPEpTQzo6SlNWYWx1ZT4mJiB2ZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggMTViMDE2
ZmNkYjUwMmRlZDEzM2U1MDdmMTMwM2MzNzQ0ZTY3ZTgzNC4uZmI4MDMzZWZkYWJmMjBmMzQ0YzMx
NDBkMTYyNzliMzU3YjczOWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtODIsNyArODIsNyBAQCBSZWY8
SlNPTjo6VmFsdWU+IEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsJiBmdQogICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gbV9pbmplY3RlZFNj
cmlwdE9iamVjdC5nbG9iYWxPYmplY3QoKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gY2FsbEZ1bmN0
aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uKTsKLSAgICBpZiAoIXJlc3VsdCkgeworICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gcmVzdWx0LmVy
cm9yKCk7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CiAKQEAgLTEzNSw4ICsxMzUsOCBAQCB2b2lk
IEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwmIGZ1bmN0aW9uLAogICAgIGF1dG8gcmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnZh
bHVlKCkuaXNVbmRlZmluZWQoKSk7CiAKLSAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBpZiAoIXJl
c3VsdCkgeworICAgIEFTU0VSVChyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIC8vIFNpbmNlIGBjYWxsYmFja2AgaXMgbW92ZWQgYWJv
dmUsIHdlIGNhbid0IGNhbGwgaXQgaWYgdGhlcmUncyBhbiBleGNlcHRpb24gd2hpbGUgdHJ5aW5n
IHRvCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGBKU05hdGl2ZVN0ZEZ1bmN0aW9uYCBpbnNpZGUg
SW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMuCiAgICAgICAgIGpzRnVuY3Rpb24tPmZ1bmN0aW9uKCko
Z2xvYmFsT2JqZWN0LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBlMTNjYzcyOWU4
YmVkNDg0YjU3NTczOWEyMjFkMGM1NTdhNDFhN2M2Li4xMzM2NjVlMjY5NTU0YzA5MTIzYWUzOTlk
YjRiNjI3MzY2YTVmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAg
SW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIAogICAgIGludCBpZCA9IGluamVjdGVkU2NyaXB0SWRG
b3IoZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IGNyZWF0ZUluamVjdGVk
U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGdsb2JhbE9iamVjdCwgaWQpOwotICAgIGlm
ICghY3JlYXRlUmVzdWx0KSB7CisgICAgaWYgKCFjcmVhdGVSZXN1bHQuaGFzX3ZhbHVlKCkpIHsK
ICAgICAgICAgYXV0byYgZXJyb3IgPSBjcmVhdGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNT
RVJUKGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAppbmRleCA0ODI2ZTQ2ZmRiNjFhMmVkNmZiZTg2
Yjg5NzQxMmY0OGZkNWU5YTExLi40ZWI3NzJlMWMwM2EzZDU3YjU1YzJmODg3NjI4OWY2OWQ3NTYx
MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcApAQCAtNjQsOCArNjQsOCBAQCB2b2lkIEluamVjdGVkU2Ny
aXB0TW9kdWxlOjplbnN1cmVJbmplY3RlZChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TQogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaGFzSW5qZWN0ZWRNb2R1bGUiX3Ms
IGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7CiAgICAg
YXV0byBoYXNJbmplY3RlZE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlv
bldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbik7Ci0gICAgQVNTRVJUKGhhc0luamVjdGVkTW9kdWxl
UmVzdWx0KTsKLSAgICBpZiAoIWhhc0luamVjdGVkTW9kdWxlUmVzdWx0KSB7CisgICAgQVNTRVJU
KGhhc0luamVjdGVkTW9kdWxlUmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICBpZiAoIWhhc0luamVj
dGVkTW9kdWxlUmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIGF1dG8mIGVycm9yID0gaGFz
SW5qZWN0ZWRNb2R1bGVSZXN1bHQuZXJyb3IoKTsKICAgICAgICAgQVNTRVJUKGVycm9yKTsKICAg
ICAgICAgdW5zaWduZWQgbGluZSA9IDA7CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0
ZWRTY3JpcHRNCiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZSgpKTsKICAg
ICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlwdE1hbmFnZXIs
IGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgIGF1dG8gaW5qZWN0TW9k
dWxlUmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1
bmN0aW9uKTsKLSAgICAgICAgaWYgKCFpbmplY3RNb2R1bGVSZXN1bHQpIHsKKyAgICAgICAgaWYg
KCFpbmplY3RNb2R1bGVSZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGVy
cm9yID0gaW5qZWN0TW9kdWxlUmVzdWx0LmVycm9yKCk7CiAgICAgICAgICAgICBBU1NFUlQoZXJy
b3IpOwogICAgICAgICAgICAgdW5zaWduZWQgbGluZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmNwcAppbmRleCBmZGY1ZTU0NWU0YzY5YWU0ZTQ3MWI4MGIyNWVmMzEyMWM3Njk4OWJl
Li42N2I0ZjE4N2MwZjkyM2YxZjhhY2NlNWNlZWYyNGQ4NmY4OWVlMDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIHJlc3VsdCA9IG1faGVhcEFnZW50LT5zbmFwc2hvdCgpOwot
ICAgIGlmICghcmVzdWx0KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIFt0aW1lc3RhbXAsIHNuYXBzaG90RGF0YV0gPSBXVEZNb3ZlKHJl
c3VsdC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNWMy
NjkxNmMyYWExMDUzMTk3YWVjNTUzZWJhYjAxZDUyNzExMzBmNS4uMjQxNjM1MDVmYWZmMmZmMzJl
ZmE1NDQ4OGQ0NDU2OGVlYWU2MjM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTY1OCw3ICs2NTgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCiAgICAgYXV0byByZXN1bWVSZXN1
bHQgPSByZXN1bWUoKTsKLSAgICBpZiAoIXJlc3VtZVJlc3VsdCkKKyAgICBpZiAoIXJlc3VtZVJl
c3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VtZVJl
c3VsdC5lcnJvcigpKTsKIAogICAgIG1fZW5hYmxlUGF1c2VXaGVuSWRsZSA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4NWNlZDlmM2RmNjIyMzAxYjk1ZTMzZTQ5MzVjYmJm
MTYyYjdlMzMwLi42MWZlMDlmZmYwNGRkNzY2ZGEwOGRjYmJjNTEyZjNlNzIzMThkODEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JIZWFwQWdlbnQ6OnN0YXJ0VHJhY2tpbmcoKQogICAg
IG1fdHJhY2tpbmcgPSB0cnVlOwogCiAgICAgYXV0byByZXN1bHQgPSBzbmFwc2hvdCgpOwotICAg
IGlmICghcmVzdWx0KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQuZXJyb3IoKSkpOwogCiAgICAgYXV0byBb
dGltZXN0YW1wLCBzbmFwc2hvdERhdGFdID0gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CkBAIC0x
NDMsNyArMTQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9ySGVh
cEFnZW50OjpzdG9wVHJhY2tpbmcoKQogICAgIG1fdHJhY2tpbmcgPSBmYWxzZTsKIAogICAgIGF1
dG8gcmVzdWx0ID0gc25hcHNob3QoKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUocmVz
dWx0LmVycm9yKCkpKTsKIAogICAgIGF1dG8gW3RpbWVzdGFtcCwgc25hcHNob3REYXRhXSA9IFdU
Rk1vdmUocmVzdWx0LnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24ucHkKaW5kZXggMjNjNzc0NDcxZWU0ZjNhNTRjMWMyN2EyMDI1NWMwZDJlMTliMGY2Zi4uOTky
OTcxYWFkYzA2YzI0MzMzZmU2ZmYzMTA4NTY0YzhiMGJjYmMwZCAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0zNTYsNyArMzU2LDcgQEAgY2xhc3MgQ3BwQmFj
a2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgICAgICAgICByZXN1bHRfY29udmVyc2lvbl9saW5lcy5hcHBlbmQoJyAgICBwcm90
b2NvbF9qc29uTWVzc2FnZS0+JShrZXllZFNldE1ldGhvZClzKCIlKHBhcmFtZXRlcktleSlzIl9z
LCAlKHBhcmFtZXRlclZhbHVlKXMpOycgJSBwYXJhbV9hcmdzKQogCiAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBhdXRvIHJlc3VsdCA9IG1fYWdlbnQtPiUoY29tbWFuZE5hbWUpcyglKGlu
dm9jYXRpb25QYXJhbWV0ZXJzKXMpOycgJSBjb21tYW5kX2FyZ3MpCi0gICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBpZiAoIXJlc3VsdCkgeycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeycpCiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgQVNTRVJUKCFyZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkpOycpCiAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIHJlc3VsdC5lcnJvcigp
KTsnKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybjsnKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBmNjg3ODE0NDVkYzkyZTc4NzlhODI0OGM3Y2FkODNjZGJmMTM4MDFk
Li4xMDhmZTc0YTU4MDdlMDZhNDVjYjc0YmIzMjg1NGIyOGI3ODViZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgSlNPYmplY3QqIEdsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGcKIHN0
YXRpYyBDU3RyaW5nIGNTdHJpbmdGcm9tVmlld1dpdGhTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0
cmluZyYgdmlld1dpdGhTdHJpbmcpCiB7CiAgICAgRXhwZWN0ZWQ8Q1N0cmluZywgVVRGOENvbnZl
cnNpb25FcnJvcj4gZXhwZWN0ZWRTdHJpbmcgPSB2aWV3V2l0aFN0cmluZy52aWV3LnRyeUdldFV0
ZjgoKTsKLSAgICBpZiAoZXhwZWN0ZWRTdHJpbmcpCisgICAgaWYgKGV4cGVjdGVkU3RyaW5nLmhh
c192YWx1ZSgpKQogICAgICAgICByZXR1cm4gZXhwZWN0ZWRTdHJpbmcudmFsdWUoKTsKICAgICBz
d2l0Y2ggKGV4cGVjdGVkU3RyaW5nLmVycm9yKCkpIHsKICAgICBjYXNlIFVURjhDb252ZXJzaW9u
RXJyb3I6Ok91dE9mTWVtb3J5OgpAQCAtMjg2NSw3ICsyODY1LDcgQEAgc3RhdGljIHZvaWQgZHVt
cEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24p
CiAgICAgYXV0byBleGNlcHRpb25TdHJpbmcgPSBleGNlcHRpb24udG9XVEZTdHJpbmcoZ2xvYmFs
T2JqZWN0KTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBFeHBlY3RlZDxDU3RyaW5nLCBV
VEY4Q29udmVyc2lvbkVycm9yPiBleHBlY3RlZENTdHJpbmcgPSBleGNlcHRpb25TdHJpbmcudHJ5
R2V0VXRmOCgpOwotICAgIGlmIChleHBlY3RlZENTdHJpbmcpCisgICAgaWYgKGV4cGVjdGVkQ1N0
cmluZy5oYXNfdmFsdWUoKSkKICAgICAgICAgcHJpbnRmKCJFeGNlcHRpb246ICVzXG4iLCBleHBl
Y3RlZENTdHJpbmcudmFsdWUoKS5kYXRhKCkpOwogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCJF
eGNlcHRpb246IDxvdXQgb2YgbWVtb3J5IHdoaWxlIGV4dHJhY3RpbmcgZXhjZXB0aW9uIHN0cmlu
Zz5cbiIpOwpAQCAtMzEyOCw3ICszMTI4LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUo
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICB1dGY4ID0gcmV0dXJuVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KS50cnlHZXRVdGY4KCk7CiAKICAgICAgICAgQ1N0
cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICh1dGY4KQorICAgICAgICBpZiAodXRmOC5oYXNfdmFs
dWUoKSkKICAgICAgICAgICAgIHJlc3VsdCA9IHV0ZjgudmFsdWUoKTsKICAgICAgICAgZWxzZSBp
ZiAodXRmOC5lcnJvcigpID09IFVURjhDb252ZXJzaW9uRXJyb3I6Ok91dE9mTWVtb3J5KQogICAg
ICAgICAgICAgcmVzdWx0ID0gIk91dE9mTWVtb3J5IHdoaWxlIHByb2Nlc3Npbmcgc3RyaW5nIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDA5YWM3YzI0ZGE0NWE0ZTU2
NGEwNjcwNTQxMDJlODk5NWY4MTc4MmEuLmQzMDkyNGI2MzkxYWNjZTNmNDBlODMyNTJkZWNhZGJm
N2Q5YzhhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjE1Miwx
MyArMjE1MiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChsZXhFcnJv
ck1lc3NhZ2UuaXNOdWxsKCkgIT0gbGV4RXJyb3IpOwogICAgIG1fbGV4ZXItPmNsZWFyKCk7CiAK
LSAgICBpZiAoIXBhcnNlUmVzdWx0IHx8IGxleEVycm9yKSB7CisgICAgaWYgKCFwYXJzZVJlc3Vs
dC5oYXNfdmFsdWUoKSB8fCBsZXhFcnJvcikgewogICAgICAgICBlcnJMaW5lID0gbGluZU51bWJl
cjsKICAgICAgICAgZXJyTXNnID0gIWxleEVycm9yTWVzc2FnZS5pc051bGwoKSA/IGxleEVycm9y
TWVzc2FnZSA6IHBhcnNlUmVzdWx0LmVycm9yKCk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKLSAgICBpZiAocGFyc2VSZXN1bHQpIHsKKyAgICBpZiAo
cGFyc2VSZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExv
Y2F0aW9uOwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGluZU51bWJlcigp
OwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
ZU1hdGguY3BwCmluZGV4IGVhMGJmYjBkN2E1YTY0YzE1NzBkYTUzMzMxOTlmOTliNTUyYTVmZjYu
LmFkNDZjODU2YzQyNzk1OTk3NTk5NGU4MmZlYTQwMDMwZWMxMzI4NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAg
ZG91YmxlIERhdGVDYWNoZTo6cGFyc2VEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgY29uc3QgU3RyaW5nJgogICAgIGlmIChkYXRlID09IG1fY2FjaGVkRGF0ZVN0cmlu
ZykKICAgICAgICAgcmV0dXJuIG1fY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlOwogICAgIGF1dG8gZXhw
ZWN0ZWRTdHJpbmcgPSBkYXRlLnRyeUdldFV0ZjgoKTsKLSAgICBpZiAoIWV4cGVjdGVkU3RyaW5n
KSB7CisgICAgaWYgKCFleHBlY3RlZFN0cmluZy5oYXNfdmFsdWUoKSkgewogICAgICAgICBpZiAo
ZXhwZWN0ZWRTdHJpbmcuZXJyb3IoKSA9PSBVVEY4Q29udmVyc2lvbkVycm9yOjpPdXRPZk1lbW9y
eSkKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZGF0ZS1v
YmplY3RzIHNlY3Rpb24gMjAuMy4zLjIgc3RhdGVzIHRoYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDdkOGUyNDE0ZjEx
MjM0YmEwNzkwYzk4NGMzOTY2ZDBkMDhhODI2ZjkuLmNkYzQ3ZWVjODQyMDA3Mjk0ZDY1YWU5M2Rh
MTJjMmQ5YjdjM2U0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBTYW1wbGluZ1By
b2ZpbGVyOjp0YWtlU2FtcGxlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgU2Vjb25kcyYgc3RhY2tU
cmFjZVByb2MKICNlbmRpZgogCiAgICAgICAgIGF1dG8gZGlkU3VzcGVuZCA9IG1fanNjRXhlY3V0
aW9uVGhyZWFkLT5zdXNwZW5kKCk7Ci0gICAgICAgIGlmIChkaWRTdXNwZW5kKSB7CisgICAgICAg
IGlmIChkaWRTdXNwZW5kLmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBXaGlsZSB0aGUg
SlNDIHRocmVhZCBpcyBzdXNwZW5kZWQsIHdlIGNhbid0IGRvIHRoaW5ncyBsaWtlIG1hbGxvYyBi
ZWNhdXNlIHRoZSBKU0MgdGhyZWFkCiAgICAgICAgICAgICAvLyBtYXkgYmUgaG9sZGluZyB0aGUg
bWFsbG9jIGxvY2suCiAgICAgICAgICAgICB2b2lkKiBtYWNoaW5lRnJhbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCmluZGV4IGVhM2U4NGU0OTBlMzBm
YzkxNzZjMjVhODBhNmY4ZjY2NzQ2ZjQyYWIuLmFmZmJmNGVhYTJjZTEyMDQzNDZhZmM0OTVjZjk1
YTAxZGFhYzNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFw
VmVyaWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZp
ZXIuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNv
cmRlZCh1aW50cHRyX3QgY2FuZGlkYXRlQ2VsbCkKICAgICAKICAgICBWTUluc3BlY3RvciYgaW5z
cGVjdG9yID0gVk1JbnNwZWN0b3I6Omluc3RhbmNlKCk7CiAgICAgYXV0byBleHBlY3RlZExvY2tl
ciA9IGluc3BlY3Rvci5sb2NrKFNlY29uZHMoMikpOwotICAgIGlmICghZXhwZWN0ZWRMb2NrZXIp
IHsKKyAgICBpZiAoIWV4cGVjdGVkTG9ja2VyLmhhc192YWx1ZSgpKSB7CiAgICAgICAgIEFTU0VS
VChleHBlY3RlZExvY2tlci5lcnJvcigpID09IFZNSW5zcGVjdG9yOjpFcnJvcjo6VGltZWRPdXQp
OwogICAgICAgICBkYXRhTG9nKCJFUlJPUjogVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgdG8gaXRl
cmF0ZSBWTXMuIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAwZTQzMmNiM2U5YTEyMjY2
YTdmMjI4YzA2ZWU3NDdlNmM5YmZkYTYwLi42YTBkNGIyOGI4OWYxMTllZmNkNzcxMTJjMDgxOGVk
ZDNkODE4YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxs
Q3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2ls
bENyYXNoQW5hbHl6ZXIuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYXV0byBTaWdpbGxDcmFzaEFu
YWx5emVyOjphbmFseXplKFNpZ25hbENvbnRleHQmIGNvbnRleHQpIC0+IENyYXNoU291cmNlCiAg
ICAgICAgIC8vIFVzZSBhIHRpbWVvdXQgcGVyaW9kIG9mIDIgc2Vjb25kcy4gVGhlIGNsaWVudCBp
cyBhYm91dCB0byBjcmFzaCwgYW5kIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgdG8gdHVybiB0
aGUgY3Jhc2ggaW50byBhIGhhbmcgYnkgcmUtdHJ5aW5nIHRoZSBsb2NrIGZvciB0b28gbG9uZy4K
ICAgICAgICAgYXV0byBleHBlY3RlZExvY2tlciA9IGluc3BlY3Rvci5sb2NrKFNlY29uZHMoMikp
OwotICAgICAgICBpZiAoIWV4cGVjdGVkTG9ja2VyKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRM
b2NrZXIuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChleHBlY3RlZExvY2tlci5l
cnJvcigpID09IFZNSW5zcGVjdG9yOjpFcnJvcjo6VGltZWRPdXQpOwogICAgICAgICAgICAgbG9n
KCJFUlJPUjogVW5hYmxlIHRvIGFuYWx5emUgU0lHSUxMLiBUaW1lZCBvdXQgd2hpbGUgd2FpdGlu
ZyB0byBpdGVyYXRlIFZNcy4iKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQwLDcgKzI0MCw3
IEBAIGF1dG8gU2lnaWxsQ3Jhc2hBbmFseXplcjo6YW5hbHl6ZShTaWduYWxDb250ZXh0JiBjb250
ZXh0KSAtPiBDcmFzaFNvdXJjZQogCiAgICAgICAgIHZvaWQqIHBjID0gY29udGV4dC5tYWNoaW5l
UEMudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICBhdXRvIGlzSW5KSVRNZW1v
cnkgPSBpbnNwZWN0b3IuaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBwYyk7Ci0gICAg
ICAgIGlmICghaXNJbkpJVE1lbW9yeSkgeworICAgICAgICBpZiAoIWlzSW5KSVRNZW1vcnkuaGFz
X3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGxvZygiRVJST1I6IFRpbWVkIG91dDogbm90IGFibGUg
dG8gZGV0ZXJtaW5lIGlmIHBjICVwIGlzIGluIHZhbGlkIEpJVCBleGVjdXRhYmxlIG1lbW9yeSIs
IHBjKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNjYsNyArMjY2LDcgQEAg
YXV0byBTaWdpbGxDcmFzaEFuYWx5emVyOjphbmFseXplKFNpZ25hbENvbnRleHQmIGNvbnRleHQp
IC0+IENyYXNoU291cmNlCiAjZW5kaWYKIAogICAgICAgICBhdXRvIGV4cGVjdGVkQ29kZUJsb2Nr
ID0gaW5zcGVjdG9yLmNvZGVCbG9ja0Zvck1hY2hpbmVQQyhsb2NrZXIsIHBjKTsKLSAgICAgICAg
aWYgKCFleHBlY3RlZENvZGVCbG9jaykgeworICAgICAgICBpZiAoIWV4cGVjdGVkQ29kZUJsb2Nr
Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRDb2RlQmxvY2suZXJyb3Io
KSA9PSBWTUluc3BlY3Rvcjo6RXJyb3I6OlRpbWVkT3V0KQogICAgICAgICAgICAgICAgIGxvZygi
RVJST1I6IFRpbWVkIG91dDogbm90IGFibGUgdG8gZGV0ZXJtaW5lIGlmIHBjICVwIGlzIGluIGEg
dmFsaWQgQ29kZUJsb2NrIiwgcGMpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKaW5kZXggMWQwOWNhNDMyZWYzYjgzYzgyZmY3
Yzg4M2FkNTg1MmY3ZmZmYWNjNi4uMDE3ZGFkMDRmZTUwNzUzNTBiMjhhNTQzNzA4Mjg3NzI2MmNm
ZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIGF1dG8gVk1JbnNwZWN0b3I6OmxvY2soU2Vjb25kcyB0aW1lb3V0KSAt
PiBFeHBlY3RlZDxMb2NrZXIsIEVycm9yPgogCiAgICAgRXhwZWN0ZWQ8TG9ja2VyLCBFcnJvcj4g
bG9ja2VyID0gTG9ja2VyOjp0cnlMb2NrKG1fbG9jayk7CiAgICAgdW5zaWduZWQgdHJ5Q291bnQg
PSAwOwotICAgIHdoaWxlICghbG9ja2VyICYmIHRyeUNvdW50IDwgbWF4UmV0cmllcykgeworICAg
IHdoaWxlICghbG9ja2VyLmhhc192YWx1ZSgpICYmIHRyeUNvdW50IDwgbWF4UmV0cmllcykgewog
ICAgICAgICAvLyBXZSB3YW50IHRoZSB2ZXJzaW9uIG9mIHNsZWVwIGZyb20gdW5pc3RkLmguIENh
c3QgdG8gZGlzYW1iaWd1YXRlLgogI2lmICFPUyhXSU5ET1dTKQogICAgICAgICAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgKCopKHVuc2lnbmVkKT4oc2xlZXApKSgxKTsKQEAgLTgzLDcgKzgzLDcgQEAg
YXV0byBWTUluc3BlY3Rvcjo6bG9jayhTZWNvbmRzIHRpbWVvdXQpIC0+IEV4cGVjdGVkPExvY2tl
ciwgRXJyb3I+CiAgICAgICAgIGxvY2tlciA9IExvY2tlcjo6dHJ5TG9jayhtX2xvY2spOwogICAg
IH0KIAotICAgIGlmICghbG9ja2VyKQorICAgIGlmICghbG9ja2VyLmhhc192YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlRpbWVkT3V0KTsKICAgICByZXR1cm4g
bG9ja2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmlu
ZGV4IDI3MjlhZjU5YzU2MGMwMzlmNTkzOTEwOTkwYTgxMGZiMTE4ZjJjZjQuLjUyMjQ3MzQzOWNj
NDgyNDY3Zjg2ZDgxYmI4NjlkOGQzNGUzMDkzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZQogICAgIGVsc2UKICAgICAgICAgcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VB
bmRDb21waWxlKGNvbnRleHQsIGZ1bmN0aW9uLCBzaWduYXR1cmUsIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCBtX21vZHVsZUluZm9ybWF0aW9uLmdl
dCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVuY3Rpb25JbmRleCwgVUlO
VDMyX01BWCwgdGllclVwKTsKIAotICAgIGlmIChVTkxJS0VMWSghcGFyc2VBbmRDb21waWxlUmVz
dWx0KSkgeworICAgIGlmIChVTkxJS0VMWSghcGFyc2VBbmRDb21waWxlUmVzdWx0Lmhhc192YWx1
ZSgpKSkgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAg
IGlmICghbV9lcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIC8vIE11bHRpcGxlIGNvbXBpbGVz
IGNvdWxkIGZhaWwgc2ltdWx0YW5lb3VzbHkuIFdlIGFyYml0cmFyaWx5IGNob29zZSB0aGUgZmly
c3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCmluZGV4
IGFhZDdlNjBhMTdkZGJlOTc2N2U5NGJkOTFjOWNjMjA5MWZkZjI1MzQuLjNmZmU3MTc5YWMwNTFl
YWY1MzY2NDIzZWE3MmFjMTJkNDgwNGYwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBFbnRyeVBsYW46
OnByZXBhcmUoKQogICAgICAgICB1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbkluZGV4ID0gbV93YXNt
VG9XYXNtRXhpdFN0dWJzLnNpemUoKTsKICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUVudHJ5UGxh
bkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBpbXBvcnQgZnVuY3Rpb24gbnVtYmVyICIs
IGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5tb2R1bGUpLCAi
OiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+ZmllbGQpKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0g
d2FzbVRvV2FzbShpbXBvcnRGdW5jdGlvbkluZGV4KTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFi
aW5kaW5nKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcuaGFzX3ZhbHVlKCkpKSB7
CiAgICAgICAgICAgICBzd2l0Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewogICAgICAgICAgICAgY2Fz
ZSBCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
aWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5
IGF0IGltcG9ydCAiLCBTdHJpbmc6Om51bWJlcihpbXBvcnRJbmRleCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZGYwZTFjYWYz
MDU2MjQ2Nzc2ZTAzMzk3ZDJhYWIxYzlkMjhlMTUzMy4uNGNkZmVhZjNmY2RjYTgwNjI0MDkyYjEz
NDgwYTczOGE0YTFjYjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTIyOCw3ICsyMjgsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZSgpIC0+IFJlc3VsdAogewogICAgIHVpbnQzMl90IGxvY2FsR3JvdXBz
Q291bnQ7CiAKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2NvbnRleHQuYWRkQXJndW1lbnRz
KG1fc2lnbmF0dXJlKSwgImNhbid0IGFkZCAiLCBtX3NpZ25hdHVyZS5hcmd1bWVudENvdW50KCks
ICIgYXJndW1lbnRzIHRvIEZ1bmN0aW9uIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9j
b250ZXh0LmFkZEFyZ3VtZW50cyhtX3NpZ25hdHVyZSkuaGFzX3ZhbHVlKCksICJjYW4ndCBhZGQg
IiwgbV9zaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cyB0byBGdW5jdGlvbiIp
OwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGxvY2FsR3JvdXBzQ291
bnQpLCAiY2FuJ3QgZ2V0IGxvY2FsIGdyb3VwcyBjb3VudCIpOwogCiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighbV9sb2NhbHMudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fc2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBmdW5jdGlvbidzICIs
IG1fc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIiBhcmd1bWVudHMiKTsKQEAgLTEyNTAsNyAr
MTI1MCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
IH0KICAgICBjYXNlIEJsb2NrOiB7CiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIGlubGluZVNpZ25h
dHVyZTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZSht
X2luZm8sIGlubGluZVNpZ25hdHVyZSksICJjYW4ndCBnZXQgYmxvY2sncyBzaWduYXR1cmUiKTsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8s
IGlubGluZVNpZ25hdHVyZSkuaGFzX3ZhbHVlKCksICJjYW4ndCBnZXQgYmxvY2sncyBzaWduYXR1
cmUiKTsKIAogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9vIGZldyB2YWx1
ZXMgb24gc3RhY2sgZm9yIGJsb2NrLiBCbG9jayBleHBlY3RzICIsIGlubGluZVNpZ25hdHVyZS0+
YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCks
ICIgd2VyZSBwcmVzZW50LiBCbG9jayBoYXMgaW5saW5lU2lnbmF0dXJlOiAiLCBpbmxpbmVTaWdu
YXR1cmUtPnRvU3RyaW5nKCkpOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCkgLSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKQEAgLTEy
NzMsNyArMTI3Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNF
KQogCiAgICAgY2FzZSBMb29wOiB7CiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIGlubGluZVNpZ25h
dHVyZTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZSht
X2luZm8sIGlubGluZVNpZ25hdHVyZSksICJjYW4ndCBnZXQgbG9vcCdzIHNpZ25hdHVyZSIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywg
aW5saW5lU2lnbmF0dXJlKS5oYXNfdmFsdWUoKSwgImNhbid0IGdldCBsb29wJ3Mgc2lnbmF0dXJl
Iik7CiAKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5z
aXplKCkgPCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIlRvbyBmZXcgdmFsdWVz
IG9uIHN0YWNrIGZvciBsb29wIGJsb2NrLiBMb29wIGV4cGVjdHMgIiwgaW5saW5lU2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KCksICIsIGJ1dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSwgIiB3ZXJlIHByZXNlbnQuIExvb3AgaGFzIGlubGluZVNpZ25hdHVyZTogIiwgaW5saW5lU2ln
bmF0dXJlLT50b1N0cmluZygpKTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNz
aW9uU3RhY2suc2l6ZSgpIC0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CkBAIC0x
Mjk3LDcgKzEyOTcsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FT
RSkKICAgICBjYXNlIElmOiB7CiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIGlubGluZVNpZ25hdHVy
ZTsKICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGNvbmRpdGlvbjsKLSAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVyZSks
ICJjYW4ndCBnZXQgaWYncyBzaWduYXR1cmUiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVyZSkuaGFzX3ZhbHVl
KCksICJjYW4ndCBnZXQgaWYncyBzaWduYXR1cmUiKTsKICAgICAgICAgV0FTTV9UUllfUE9QX0VY
UFJFU1NJT05fU1RBQ0tfSU5UTyhjb25kaXRpb24sICJpZiBjb25kaXRpb24iKTsKIAogICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFjb25kaXRpb24udHlwZSgpLmlzSTMyKCksICJpZiBj
b25kaXRpb24gbXVzdCBiZSBpMzIsIGdvdCAiLCBjb25kaXRpb24udHlwZSgpLmtpbmQpOwpAQCAt
MTUwNiw3ICsxNTA2LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJl
YWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgY2FzZSBCbG9jazogewog
ICAgICAgICBtX3VucmVhY2hhYmxlQmxvY2tzKys7CiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIHVu
dXNlZDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZSht
X2luZm8sIHVudXNlZCksICJjYW4ndCBnZXQgaW5saW5lIHR5cGUgZm9yICIsIG1fY3VycmVudE9w
Y29kZSwgIiBpbiB1bnJlYWNoYWJsZSBjb250ZXh0Iik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCB1bnVzZWQpLmhhc192YWx1ZSgpLCAi
Y2FuJ3QgZ2V0IGlubGluZSB0eXBlIGZvciAiLCBtX2N1cnJlbnRPcGNvZGUsICIgaW4gdW5yZWFj
aGFibGUgY29udGV4dCIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAppbmRleCA4MmVkNzQ5NjZhN2U4
YWI5YmZkMTU0M2I0NzdiMDk4MTE4YzIwNTRkLi5kMTUxMjA3MjVhYTkxYzJjNzgyOTkyMmJkMzRj
NDZiNzQzYTIzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQ
bGFuLmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIExMSW50UGxhbjo6Y29tcGlsZUZ1bmN0aW9u
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAgICAgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tm
dW5jdGlvbkluZGV4XSA9IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPigpOwogICAgIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9jaz4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlQnl0ZWNvZGUoZnVuY3Rpb24uZGF0YS5k
YXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRp
b24uZ2V0KCksIGZ1bmN0aW9uSW5kZXgpOwogCi0gICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENv
bXBpbGVSZXN1bHQpKSB7CisgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQu
aGFzX3ZhbHVlKCkpKSB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
ICAgICAgICAgaWYgKCFtX2Vycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgLy8gTXVsdGlwbGUg
Y29tcGlsZXMgY291bGQgZmFpbCBzaW11bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkgY2hvb3Nl
IHRoZSBmaXJzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5k
ZXggZjM5YjUzZjk2YzVkZTQ5NDVhM2VjOWQzNjlmMjVhNDQ2YjlhNWUzYy4uMjM1OGQ1ZDljN2Qx
MDhkMjIxZGQyYTZmZWFmYjExMGY5OTVjZWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5jcHAKQEAgLTUyMyw3ICs1MjMsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQs
IE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQgZGVs
dGEpCiAgICAgICAgIG1faGFuZGxlLT5ncm93VG9TaXplKGRlc2lyZWRTaXplKTsKICAgICAgICAg
cmV0dXJuIG9sZFBhZ2VDb3VudDsKICAgICB9KCkpOwotICAgIGlmIChyZXN1bHQpCisgICAgaWYg
KHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgbV9ncm93U3VjY2Vzc0NhbGxiYWNrKEdyb3dT
dWNjZXNzVGFnLCBvbGRQYWdlQ291bnQsIG5ld1BhZ2VDb3VudCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JP
U1JFbnRyeVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9T
UkVudHJ5UGxhbi5jcHAKaW5kZXggYTI2ZjhiYWI2YzFkNWUzMzFiMmViZGNlZjVmOWNkOTJhNzQ5
ZWQzOC4uZDNmZjk1NWU1ZDc5MDNiNGVmMWFjM2Y4Y2E1ZGU5ODE0OGUwZjVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBPTUdGb3JPU1JFbnRyeVBsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgdW5zaWduZWQgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSA9IDA7
CiAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4
dCwgZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgb3NyRW50cnlTY3JhdGNoQnVm
ZmVyU2l6ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1v
ZGU6Ok9NR0Zvck9TUkVudHJ5TW9kZSwgbV9mdW5jdGlvbkluZGV4LCBtX2xvb3BJbmRleCk7CiAK
LSAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdCkpIHsKKyAgICBpZiAoVU5M
SUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdC5oYXNfdmFsdWUoKSkpIHsKICAgICAgICAgZmFp
bChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJv
cigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9u
SW5kZXgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggODkyMGFhYzA1OTQyYmU3NzFjMzU0ZGJmMDc0NzBl
NzAzZTFhYThkYS4uOTYxMzk1MmUzMTQyN2ZlZjdmZDkyYTg1NGUzNWU4ZDVmMTEzYTNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgQ29tcGlsYXRp
b25Db250ZXh0IGNvbnRleHQ7CiAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJz
ZUFuZENvbXBpbGUoY29udGV4dCwgZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywg
b3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgbV9t
b2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rpb25JbmRleCwgVUlOVDMyX01B
WCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdCkpIHsKKyAgICBp
ZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdC5oYXNfdmFsdWUoKSkpIHsKICAgICAg
ICAgZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3Vs
dC5lcnJvcigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1
bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggNDU2ZTUyODgyMDZjYzU2NWZl
YjM4YzljM2NmYTJlNjUwZjE3ZTI4ZS4uNjkzN2U2NWZjMDZkNDJlMTg4OGVlYTQ3ZjZmM2FlZGJl
NTZjNmM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25z
LmNwcApAQCAtNjQ0LDcgKzY0NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25Hcm93TWVtb3J5LCBpbnQzMl90LCAodm9pZCogY2FsbEZyYW1lLCBJbnN0YW5jCiAgICAgICAg
IHJldHVybiAtMTsKIAogICAgIGF1dG8gZ3Jvd24gPSBpbnN0YW5jZS0+bWVtb3J5KCktPmdyb3co
UGFnZUNvdW50KGRlbHRhKSk7Ci0gICAgaWYgKCFncm93bikgeworICAgIGlmICghZ3Jvd24uaGFz
X3ZhbHVlKCkpIHsKICAgICAgICAgc3dpdGNoIChncm93bi5lcnJvcigpKSB7CiAgICAgICAgIGNh
c2UgTWVtb3J5OjpHcm93RmFpbFJlYXNvbjo6SW52YWxpZERlbHRhOgogICAgICAgICBjYXNlIE1l
bW9yeTo6R3Jvd0ZhaWxSZWFzb246OkludmFsaWRHcm93U2l6ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYXJzZXIuaAppbmRleCAyODY4NmI1M2Q0YzljYmYyZTQ4N2E4ODcyNTViNjFh
NzgyMTk5MDg0Li5mMDFiY2Q1NmM5OWY2Njc4ZDU5ZDc2Y2E5NGMyYWNjZDg1ZTMxZDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
cHJvdGVjdGVkOgogCiAjZGVmaW5lIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMoaGVscGVyKSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgYXV0byBoZWxwZXJSZXN1bHQgPSBo
ZWxwZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoVU5M
SUtFTFkoIWhlbHBlclJlc3VsdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChVTkxJS0VMWSghaGVscGVyUmVzdWx0Lmhhc192YWx1ZSgpKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChXVEZNb3ZlKGhlbHBlclJlc3VsdC5lcnJvcigpKSk7ICAgXAogICAgIH0gd2hpbGUgKDApCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApp
bmRleCBlZmY4YmMxYzk5N2YwMjI5YTJlYmM4Mzc2YmUyMTc0OWM3MmZiMzE2Li42NWQ5NzFmYzFl
NTVlM2I3Y2NiZDQ4MDZkYWYzOTEzMGRjMzliZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0xMjMsMTQgKzEyMywxNCBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAg
ICAgICAgYm9vbCBpc0ltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBraW5kSW5kZXggPSBtX2lu
Zm8tPnRhYmxlcy5zaXplKCk7CiAgICAgICAgICAgICBQYXJ0aWFsUmVzdWx0IHJlc3VsdCA9IHBh
cnNlVGFibGVIZWxwZXIoaXNJbXBvcnQpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1
bHQpKQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQuaGFzX3ZhbHVlKCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVybmFs
S2luZDo6TWVtb3J5OiB7CiAgICAgICAgICAgICBib29sIGlzSW1wb3J0ID0gdHJ1ZTsKICAgICAg
ICAgICAgIFBhcnRpYWxSZXN1bHQgcmVzdWx0ID0gcGFyc2VNZW1vcnlIZWxwZXIoaXNJbXBvcnQp
OwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQorICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFyZXN1bHQuaGFzX3ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMjEyLDcgKzIxMiw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VU
YWJsZUhlbHBlcihib29sIGlzSW1wb3J0KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IG1heGltdW07CiAgICAgYm9vbCBpc1NoYXJlZCA9IGZhbHNlOwogICAgIFBhcnRp
YWxSZXN1bHQgbGltaXRzID0gcGFyc2VSZXNpemFibGVMaW1pdHMoaW5pdGlhbCwgbWF4aW11bSwg
aXNTaGFyZWQsIExpbWl0c1R5cGU6OlRhYmxlKTsKLSAgICBpZiAoVU5MSUtFTFkoIWxpbWl0cykp
CisgICAgaWYgKFVOTElLRUxZKCFsaW1pdHMuaGFzX3ZhbHVlKCkpKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShsaW1pdHMuZXJyb3IoKSkpOwogICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoaW5pdGlhbCA+IG1heFRhYmxlRW50cmllcywgIlRhYmxlJ3MgaW5pdGlhbCBwYWdl
IGNvdW50IG9mICIsIGluaXRpYWwsICIgaXMgdG9vIGJpZywgbWF4aW11bSAiLCBtYXhUYWJsZUVu
dHJpZXMpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVRh
YmxlKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIGJvb2wgaXNJbXBvcnQgPSBmYWxzZTsKICAgICAgICAgUGFydGlh
bFJlc3VsdCByZXN1bHQgPSBwYXJzZVRhYmxlSGVscGVyKGlzSW1wb3J0KTsKLSAgICAgICAgaWYg
KFVOTElLRUxZKCFyZXN1bHQpKQorICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdC5oYXNfdmFs
dWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShyZXN1bHQu
ZXJyb3IoKSkpOwogICAgIH0KIApAQCAtMjUwLDcgKzI1MCw3IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VNZW1vcnlIZWxwZXIoYm9vbCBpc0ltcG9ydCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICB1aW50MzJfdCBpbml0aWFsOwogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11
bTsKICAgICAgICAgUGFydGlhbFJlc3VsdCBsaW1pdHMgPSBwYXJzZVJlc2l6YWJsZUxpbWl0cyhp
bml0aWFsLCBtYXhpbXVtLCBpc1NoYXJlZCwgTGltaXRzVHlwZTo6TWVtb3J5KTsKLSAgICAgICAg
aWYgKFVOTElLRUxZKCFsaW1pdHMpKQorICAgICAgICBpZiAoVU5MSUtFTFkoIWxpbWl0cy5oYXNf
dmFsdWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZShsaW1p
dHMuZXJyb3IoKSkpOwogICAgICAgICBBU1NFUlQoIW1heGltdW0gfHwgKm1heGltdW0gPj0gaW5p
dGlhbCk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIVBhZ2VDb3VudDo6aXNWYWxpZChp
bml0aWFsKSwgIk1lbW9yeSdzIGluaXRpYWwgcGFnZSBjb3VudCBvZiAiLCBpbml0aWFsLCAiIGlz
IGludmFsaWQiKTsKQEAgLTg0Nyw3ICs4NDcsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNl
Q3VzdG9tKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIE5hbWUgbmFtZU5hbWUgPSB7ICduJywgJ2En
LCAnbScsICdlJyB9OwogICAgIGlmIChzZWN0aW9uLm5hbWUgPT0gbmFtZU5hbWUpIHsKICAgICAg
ICAgTmFtZVNlY3Rpb25QYXJzZXIgbmFtZVNlY3Rpb25QYXJzZXIoc2VjdGlvbi5wYXlsb2FkLmJl
Z2luKCksIHNlY3Rpb24ucGF5bG9hZC5zaXplKCksIG1faW5mbyk7Ci0gICAgICAgIGlmIChhdXRv
IG5hbWVTZWN0aW9uID0gbmFtZVNlY3Rpb25QYXJzZXIucGFyc2UoKSkKKyAgICAgICAgaWYgKGF1
dG8gbmFtZVNlY3Rpb24gPSBuYW1lU2VjdGlvblBhcnNlci5wYXJzZSgpOyBuYW1lU2VjdGlvbi5o
YXNfdmFsdWUoKSkKICAgICAgICAgICAgIG1faW5mby0+bmFtZVNlY3Rpb24gPSBXVEZNb3ZlKCpu
YW1lU2VjdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCmluZGV4IDI4MDEwYjg4Y2JiYjY4NjI3YmNjMzM4ODJi
YjQxZDE2NTU5ODIyYTguLjU2OWQ2MmU4MmJkMjc4OGNhMTNiYmU4MjJkNjMxM2U4MjI4OGZiYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJz
ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAjZGVmaW5lIFdBU01fU1RSRUFNSU5HX1BBUlNFUl9GQUlMX0lGX0hFTFBFUl9GQUlM
UyhoZWxwZXIpIFwKICAgICBkbyB7IFwKICAgICAgICAgYXV0byBoZWxwZXJSZXN1bHQgPSBoZWxw
ZXI7IFwKLSAgICAgICAgaWYgKFVOTElLRUxZKCFoZWxwZXJSZXN1bHQpKSB7IFwKKyAgICAgICAg
aWYgKFVOTElLRUxZKCFoZWxwZXJSZXN1bHQuaGFzX3ZhbHVlKCkpKSB7IFwKICAgICAgICAgICAg
IG1fZXJyb3JNZXNzYWdlID0gaGVscGVyUmVzdWx0LmVycm9yKCk7IFwKICAgICAgICAgICAgIHJl
dHVybiBTdGF0ZTo6RmF0YWxFcnJvcjsgXAogICAgICAgICB9IFwKQEAgLTI4Nyw3ICsyODcsNyBA
QCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBieXRlc1NpemUsIElzRW5kT2ZTdAogCiAgICAgICAgIGNhc2UgU3RhdGU6OlNlY3Rpb25T
aXplOiB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN1bWVWYXJVSW50MzIoYnl0ZXMs
IGJ5dGVzU2l6ZSwgb2Zmc2V0SW5CeXRlcywgaXNFbmRPZlN0cmVhbSk7Ci0gICAgICAgICAgICBp
ZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgPT0gU3RhdGU6OkZhdGFsRXJyb3IpCiAg
ICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBmYWlsT25TdGF0ZShtX3N0YXRlKTsKICAgICAg
ICAgICAgICAgICBlbHNlCkBAIC0zMDgsNyArMzA4LDcgQEAgYXV0byBTdHJlYW1pbmdQYXJzZXI6
OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBJc0VuZE9m
U3QKIAogICAgICAgICBjYXNlIFN0YXRlOjpDb2RlU2VjdGlvblNpemU6IHsKICAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gY29uc3VtZVZhclVJbnQzMihieXRlcywgYnl0ZXNTaXplLCBvZmZzZXRJ
bkJ5dGVzLCBpc0VuZE9mU3RyZWFtKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSA9PSBTdGF0ZTo6RmF0YWxFcnJvcikKICAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IGZhaWxPblN0YXRlKG1fc3RhdGUpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAg
LTMyMSw3ICszMjEsNyBAQCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6YWRkQnl0ZXMoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUsIElzRW5kT2ZTdAogCiAgICAgICAgIGNhc2Ug
U3RhdGU6OkZ1bmN0aW9uU2l6ZTogewogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjb25zdW1l
VmFyVUludDMyKGJ5dGVzLCBieXRlc1NpemUsIG9mZnNldEluQnl0ZXMsIGlzRW5kT2ZTdHJlYW0p
OwotICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhh
c192YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpID09IFN0YXRl
OjpGYXRhbEVycm9yKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gZmFpbE9uU3RhdGUo
bV9zdGF0ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAppbmRleCA1ZGQ1
NGFkMTI3OWM3MDRlNTY1MWJiMGQzOWEzOGJiMDUwZWIxNjk4Li45MzJhNmU1MDdiODZhODgyMjky
NDU5NzA0OWE1OThjY2Q3NzAzZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiB2bSwg
UmVmPFdhc206OkNvZGVCbG9jaz4mJiBjbwogICAgIGZvciAodW5zaWduZWQgaW1wb3J0SW5kZXgg
PSAwOyBpbXBvcnRJbmRleCA8IG1fY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCk7ICsr
aW1wb3J0SW5kZXgpIHsKICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5k
ZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuYXQo
aW1wb3J0SW5kZXgpOwogICAgICAgICBhdXRvIGJpbmRpbmcgPSBXYXNtOjp3YXNtVG9KUyh2bSwg
bV9jYWxsTGlua0luZm9zLCBzaWduYXR1cmVJbmRleCwgaW1wb3J0SW5kZXgpOwotICAgICAgICBp
ZiAoVU5MSUtFTFkoIWJpbmRpbmcpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZy5o
YXNfdmFsdWUoKSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYmluZGluZy5lcnJvcigpKSB7CiAg
ICAgICAgICAgICBjYXNlIFdhc206OkJpbmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeToKICAgICAg
ICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkiX3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwCmluZGV4IDIwMWIzODBhZGI0ZDE1M2U4ZDEzNDVkYzM5MzU0NWZjZDhjMTM0NTMu
LjkwMTZmZGU4ZDQzNDVlZWUzZTkxZDkwNDg5OWMwOTA1ZGI2ZGUyYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCkBA
IC0xMTAsNyArMTEwLDcgQEAgV2FzbTo6UGFnZUNvdW50IEpTV2ViQXNzZW1ibHlNZW1vcnk6Omdy
b3coVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgYXV0byBncm93biA9IG1lbW9y
eSgpLmdyb3coV2FzbTo6UGFnZUNvdW50KGRlbHRhKSk7Ci0gICAgaWYgKCFncm93bikgeworICAg
IGlmICghZ3Jvd24uaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgc3dpdGNoIChncm93bi5lcnJvcigp
KSB7CiAgICAgICAgIGNhc2UgV2FzbTo6TWVtb3J5OjpHcm93RmFpbFJlYXNvbjo6SW52YWxpZERl
bHRhOgogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5Lk1lbW9yeS5ncm93
IGV4cGVjdHMgdGhlIGRlbHRhIHRvIGJlIGEgdmFsaWQgcGFnZSBjb3VudCJfcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVk
LmgKaW5kZXggNzQ3MmZmYWEyMjJjZGNmYTU0NDkxNDNjMzM2YjQ3ODFkY2QwNGE3ZC4uY2EwNmI5
NWU3Nzc2MjgxMDc2NDFjYWQzNWUzZDI1OTkzNmZjMTRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRXhwZWN0ZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCkBAIC0xNDks
NyArMTQ5LDYgQEAgaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgewogICAgICAgICBj
b25zdGV4cHIgVCYgb3BlcmF0b3IgKigpICY7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUJiYg
b3BlcmF0b3IgKigpIGNvbnN0ICYmOwogICAgICAgICBjb25zdGV4cHIgVCYmIG9wZXJhdG9yICoo
KSAmJjsKLSAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBu
b2V4Y2VwdDsKICAgICAgICAgY29uc3RleHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3Qgbm9leGNl
cHQ7CiAgICAgICAgIGNvbnN0ZXhwciBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0JjsKICAgICAgICAg
Y29uc3RleHByIFQmIHZhbHVlKCkgJjsKQEAgLTQ4Nyw3ICs0ODYsNiBAQCBwdWJsaWM6CiAgICAg
dmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBiYXNlOjpzLnZhbDsgfQogICAgIGNv
bnN0ZXhwciBjb25zdCB2YWx1ZV90eXBlJiYgb3BlcmF0b3IqKCkgY29uc3QgJiYgeyByZXR1cm4g
c3RkOjptb3ZlKGJhc2U6OnMudmFsKTsgfQogICAgIGNvbnN0ZXhwciB2YWx1ZV90eXBlJiYgb3Bl
cmF0b3IqKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKGJhc2U6OnMudmFsKTsgfQotICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9
CiAgICAgY29uc3RleHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFz
OyB9CiAgICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmIHZhbHVlKCkgY29uc3QgJiB7IHJl
dHVybiBiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBl
Y3RlZF9hY2Nlc3M8ZXJyb3JfdHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpOyB9CiAg
ICAgY29uc3RleHByIHZhbHVlX3R5cGUmIHZhbHVlKCkgJiB7IHJldHVybiBiYXNlOjpoYXMgPyBi
YXNlOjpzLnZhbCA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8ZXJyb3Jf
dHlwZT4oYmFzZTo6cy5lcnIpKSwgYmFzZTo6cy52YWwpOyB9CkBAIC01NTAsNyArNTQ4LDYgQEAg
cHVibGljOgogICAgICAgICAgICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7CiAgICAgfQog
Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBi
YXNlOjpoYXM7IH0KICAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFsdWUoKSBjb25zdCB7IHJldHVy
biBiYXNlOjpoYXM7IH0KICAgICB2b2lkIHZhbHVlKCkgY29uc3QgeyAhYmFzZTo6aGFzID8gX19F
WFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+KCkpIDogdm9pZCgpOyB9CiAg
ICAgY29uc3RleHByIGNvbnN0IEUmIGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFz
ID8gYmFzZTo6cy5lcnIgOiAoX19FWFBFQ1RFRF9USFJPVyhiYWRfZXhwZWN0ZWRfYWNjZXNzPHZv
aWQ+KCkpLCBiYXNlOjpzLmVycik7IH0KQEAgLTU1OCwyMCArNTU1LDIwIEBAIHB1YmxpYzoKICAg
ICBjb25zdGV4cHIgRSYmIGVycm9yKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKCFiYXNlOjpoYXMg
PyBiYXNlOjpzLmVyciA6IChfX0VYUEVDVEVEX1RIUk9XKGJhZF9leHBlY3RlZF9hY2Nlc3M8dm9p
ZD4oKSksIGJhc2U6OnMuZXJyKSk7IH0KIH07CiAKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB4
LnZhbHVlKCkgPT0geS52YWx1ZSgpIDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KK3RlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgZXhw
ZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB4Lmhhc192
YWx1ZSgpID09IHkuaGFzX3ZhbHVlKCkgJiYgKHguaGFzX3ZhbHVlKCkgPyB4LnZhbHVlKCkgPT0g
eS52YWx1ZSgpIDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KIHRlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4m
IHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiAhKHggPT0geSk7IH0KIAotdGVt
cGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDx2
b2lkLCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8dm9pZCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkg
PT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQordGVt
cGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDx2
b2lkLCBFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8dm9pZCwgRT4mIHkpIHsgcmV0dXJuIHguaGFzX3Zh
bHVlKCkgPT0geS5oYXNfdmFsdWUoKSAmJiAoeC5oYXNfdmFsdWUoKSA/IHRydWUgOiB4LmVycm9y
KCkgPT0geS5lcnJvcigpKTsgfQogCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7
IHJldHVybiB4ID8gKnggPT0geSA6IGZhbHNlOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVjdGVkPFQs
IEU+JiB5KSB7IHJldHVybiB5ID8geCA9PSAqeSA6IGZhbHNlOyB9Ci10ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+
JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ID8gKnggIT0geSA6IHRydWU7IH0KLXRlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgeCwg
Y29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIHkgPyB4ICE9ICp5IDogdHJ1ZTsgfQor
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geC5oYXNfdmFsdWUoKSA/
ICp4ID09IHkgOiBmYWxzZTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4geS5oYXNfdmFsdWUoKSA/IHggPT0gKnkgOiBmYWxzZTsgfQordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBF
PiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geC5oYXNfdmFsdWUoKSA/ICp4ICE9IHkgOiB0cnVl
OyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5Lmhhc192YWx1
ZSgpID8geCAhPSAqeSA6IHRydWU7IH0KIAotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgdW5l
eHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA/IGZhbHNlIDogeC5lcnJvcigpID09IHkudmFsdWUo
KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1
cm4geSA/IGZhbHNlIDogeC52YWx1ZSgpID09IHkuZXJyb3IoKTsgfQotdGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBF
PiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA/IHRydWUgOiB4LmVycm9y
KCkgIT0geS52YWx1ZSgpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQs
IEU+JiB5KSB7IHJldHVybiB5ID8gdHJ1ZSA6IHgudmFsdWUoKSAhPSB5LmVycm9yKCk7IH0KK3Rl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
ZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHguaGFz
X3ZhbHVlKCkgPyBmYWxzZSA6IHguZXJyb3IoKSA9PSB5LnZhbHVlKCk7IH0KK3RlbXBsYXRlPGNs
YXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3Rl
ZDxFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIHkuaGFzX3ZhbHVlKCkg
PyBmYWxzZSA6IHgudmFsdWUoKSA9PSB5LmVycm9yKCk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNs
YXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgs
IGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHguaGFzX3ZhbHVlKCkgPyB0cnVlIDog
eC5lcnJvcigpICE9IHkudmFsdWUoKTsgfQordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBl
Y3RlZDxULCBFPiYgeSkgeyByZXR1cm4geS5oYXNfdmFsdWUoKSA/IHRydWUgOiB4LnZhbHVlKCkg
IT0geS5lcnJvcigpOyB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IHZvaWQg
c3dhcChleHBlY3RlZDxULCBFPiYgeCwgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgeC5zd2FwKHkpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmNwcAppbmRleCA2MWU0ODZiOGQwYmJhMzQ3NzUzY2U0ZTdjYzkw
MDMwOWE2N2NhNWI1Li5hNDdhYmFlMmJmYTA1MzlkYjRkZjkwOTQ0YjE4MmM2MTUzN2I2MjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvUHJpbnRTdHJlYW0uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiAKIHN0YXRpYyB2b2lkIHBy
aW50RXhwZWN0ZWRDU3RyaW5nSGVscGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHR5
cGUsIEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IGV4cGVjdGVkQ1N0cmlu
ZykKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWV4cGVjdGVkQ1N0cmluZykpIHsKKyAgICBpZiAoVU5M
SUtFTFkoIWV4cGVjdGVkQ1N0cmluZy5oYXNfdmFsdWUoKSkpIHsKICAgICAgICAgaWYgKGV4cGVj
dGVkQ1N0cmluZy5lcnJvcigpID09IFVURjhDb252ZXJzaW9uRXJyb3I6Ok91dE9mTWVtb3J5KSB7
CiAgICAgICAgICAgICBwcmludEludGVybmFsKG91dCwgIihPdXQgb2YgbWVtb3J5IHdoaWxlIGNv
bnZlcnRpbmcgIik7CiAgICAgICAgICAgICBwcmludEludGVybmFsKG91dCwgdHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IDQyMTU0YTM3ZTRmMWU0YzYyY2VjNjA2NTk5NzM3Zjc3
ZjcxZDY4NTIuLjM4MjYxNTY4YzA1YmE2MDJiNTVhOTUwN2UwYmQ0ZTMxMzI5YzljODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0zNyw3ICszNyw3IEBAIE1lc3NhZ2VTdGF0dXMgc2Vu
ZE1lc3NhZ2VTY29wZWQoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3Nh
Z2UpCiAgICAgYXV0byBsb2NraG9sZGVyID0gaG9sZExvY2sobWVzc2FnZUxvY2spOwogCiAgICAg
YXV0byByZXN1bHQgPSB0aHJlYWQuc3VzcGVuZCgpOwotICAgIGlmICghcmVzdWx0KQorICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhy
ZWFkRXhpdGVkOwogCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMgcmVnaXN0ZXJzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAKaW5kZXggNGVkM2Y0NTBkNTc2OTI1ZjY0MjdiNDdjZjI4ODg1Nzc4OGIyYmFmMC4uMjk1
M2Y3YmI0ZjVmMWQ4MDk1MGJhODBjNTY2MWI3YzlkM2I2MWYzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3Bw
CkBAIC0yNzA0LDcgKzI3MDQsNyBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBhZGRyZXNzID0gcGFyc2VJ
UHY0SG9zdChob3N0SXRlcmF0b3IsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGhv
c3RJdGVyYXRvciwgaXRlcmF0b3IpKTsKLSAgICAgICAgaWYgKGFkZHJlc3MpIHsKKyAgICAgICAg
aWYgKGFkZHJlc3MuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRk
cmVzcy52YWx1ZSgpKTsKICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewpAQCAt
Mjc2Nyw3ICsyNzY3LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiAgICAgY29uc3QgTENoYXIqIGFz
Y2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwogCiAgICAgYXV0
byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsK
LSAgICBpZiAoYWRkcmVzcykgeworICAgIGlmIChhZGRyZXNzLmhhc192YWx1ZSgpKSB7CiAgICAg
ICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGY4OTllMzlk
ZTU4YjE4NjlhNTQ4MTU1MzhhODE1NGJkMWMxNTZjMTYuLjk3ZmNkOTIyNGE3NTg2NTZkNDMzMmQw
YTExNzY1MzU3NGY5OWI4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcApA
QCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcjxM
Q2hhcj4odW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpCiAgICAgCiAgICAgaWYgKG1fYnVmZmVyLT5o
YXNPbmVSZWYoKSkgewogICAgICAgICBhdXRvIGV4cGVjdGVkU3RyaW5nSW1wbCA9IFN0cmluZ0lt
cGw6OnRyeVJlYWxsb2NhdGUobV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcmVxdWlyZWRMZW5n
dGgsIG1fYnVmZmVyQ2hhcmFjdGVyczgpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWV4cGVjdGVk
U3RyaW5nSW1wbCkpCisgICAgICAgIGlmIChVTkxJS0VMWSghZXhwZWN0ZWRTdHJpbmdJbXBsLmhh
c192YWx1ZSgpKSkKICAgICAgICAgICAgIHJldHVybiBkaWRPdmVyZmxvdygpOwogICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoZXhwZWN0ZWRTdHJpbmdJbXBsLnZhbHVlKCkpOwogICAgIH0gZWxz
ZQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZl
cjxVQ2hhcj4odW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpCiAgICAgICAgIGFsbG9jYXRlQnVmZmVy
VXBDb252ZXJ0KG1fYnVmZmVyLT5jaGFyYWN0ZXJzOCgpLCByZXF1aXJlZExlbmd0aCk7CiAgICAg
ZWxzZSBpZiAobV9idWZmZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgIGF1dG8gZXhwZWN0ZWRT
dHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6dHJ5UmVhbGxvY2F0ZShtX2J1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpLCByZXF1aXJlZExlbmd0aCwgbV9idWZmZXJDaGFyYWN0ZXJzMTYpOwotICAgICAgICBp
ZiAoVU5MSUtFTFkoIWV4cGVjdGVkU3RyaW5nSW1wbCkpCisgICAgICAgIGlmIChVTkxJS0VMWSgh
ZXhwZWN0ZWRTdHJpbmdJbXBsLmhhc192YWx1ZSgpKSkKICAgICAgICAgICAgIHJldHVybiBkaWRP
dmVyZmxvdygpOwogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoZXhwZWN0ZWRTdHJpbmdJbXBs
LnZhbHVlKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXgg
ODdjOTYzYTM1MTdmOTNlMTFlZWVhY2VhMDA4OGY2YmMxYjM5NmI0NS4uN2FmZjlkZDBmNDNiNWM3
ZGQ0NWQ0NGI4ZDk4YTRmNTE1ZDVkZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CkBAIC0yMzYsMTQgKzIzNiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgRXhwZWN0ZWQ8UmVmPFN0cmluZ0ltcGw+LCBVVEY4Q29udmVyc2lvbgogUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWxT
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKQogewogICAgIGF1dG8gZXhwZWN0
ZWRTdHJpbmdJbXBsID0gdHJ5UmVhbGxvY2F0ZShXVEZNb3ZlKG9yaWdpbmFsU3RyaW5nKSwgbGVu
Z3RoLCBkYXRhKTsKLSAgICBSRUxFQVNFX0FTU0VSVChleHBlY3RlZFN0cmluZ0ltcGwpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4cGVjdGVkU3RyaW5nSW1wbC5oYXNfdmFsdWUoKSk7CiAgICAgcmV0
dXJuIFdURk1vdmUoZXhwZWN0ZWRTdHJpbmdJbXBsLnZhbHVlKCkpOwogfQogCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZShSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0
cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpCiB7CiAgICAgYXV0byBleHBlY3Rl
ZFN0cmluZ0ltcGwgPSB0cnlSZWFsbG9jYXRlKFdURk1vdmUob3JpZ2luYWxTdHJpbmcpLCBsZW5n
dGgsIGRhdGEpOwotICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdGVkU3RyaW5nSW1wbCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRTdHJpbmdJbXBsLmhhc192YWx1ZSgpKTsKICAgICByZXR1
cm4gV1RGTW92ZShleHBlY3RlZFN0cmluZ0ltcGwudmFsdWUoKSk7CiB9CiAKQEAgLTE4NDgsNyAr
MTg0OCw3IEBAIEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0lt
cGw6OnRyeUdldFV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kCiBDU3RyaW5nIFN0cmluZ0ltcGw6OnV0
ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKIHsKICAgICBhdXRvIGV4cGVjdGVkU3RyaW5n
ID0gdHJ5R2V0VXRmOEZvclJhbmdlKDAsIGxlbmd0aCgpLCBtb2RlKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChleHBlY3RlZFN0cmluZyk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRTdHJpbmcu
aGFzX3ZhbHVlKCkpOwogICAgIHJldHVybiBleHBlY3RlZFN0cmluZy52YWx1ZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA4MGY4MGNiNzc3ZmRlMzc4N2E4YWE3MTJm
NTY3OWY5YTFhOWExZDEzLi44OWM1ZWUzMTk5MGQ0NTRiNzQ3Zjk5NmVlOGIzZmYxODExZTFkZjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBFeHBl
Y3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiBTdHJpbmdWaWV3Ojp0cnlHZXRVdGY4
KENvbnZlcnNpb25Nb2RlIG1vZAogQ1N0cmluZyBTdHJpbmdWaWV3Ojp1dGY4KENvbnZlcnNpb25N
b2RlIG1vZGUpIGNvbnN0CiB7CiAgICAgYXV0byBleHBlY3RlZFN0cmluZyA9IHRyeUdldFV0Zjgo
bW9kZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRTdHJpbmcpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGV4cGVjdGVkU3RyaW5nLmhhc192YWx1ZSgpKTsKICAgICByZXR1cm4gZXhwZWN0ZWRT
dHJpbmcudmFsdWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDE5OTRj
ZTRkZGU4YzkyNWFlMjAyNjU4NzAyYzg5ZTcyMTRkMDJiMTIuLjI1NGFlZjE3NGFjMDNmZjJlYTg5
ZTAzMWIwODQ0OGU5ODEzNTc3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTc4
OCw3ICs3ODgsNyBAQCBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiBTdHJp
bmc6OnRyeUdldFV0ZjgoKSBjb25zdAogQ1N0cmluZyBTdHJpbmc6OnV0ZjgoQ29udmVyc2lvbk1v
ZGUgbW9kZSkgY29uc3QKIHsKICAgICBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVy
cm9yPiBleHBlY3RlZFN0cmluZyA9IHRyeUdldFV0ZjgobW9kZSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoZXhwZWN0ZWRTdHJpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdGVkU3RyaW5nLmhh
c192YWx1ZSgpKTsKICAgICByZXR1cm4gZXhwZWN0ZWRTdHJpbmcudmFsdWUoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5k
ZXggZDI0ZWUyOWRhZTM3ZjQyYWRhMTUxMDdiMTVjZTgyZjkyZDNkYTFlNi4uMDkyYzkyN2E2YjFm
OTZkNDVjNjQ0YjQ0ZWYyYjMwNTU0YzJiMDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgRXhj
ZXB0aW9uT3I8Ym9vbD4gTmF2aWdhdG9yQmVhY29uOjpzZW5kQmVhY29uKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8gY2FjaGVkUmVzb3VyY2UgPSBk
b2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RCZWFjb25SZXNvdXJjZSh7IFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMgfSk7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkgewor
ICAgIGlmICghY2FjaGVkUmVzb3VyY2UuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgbG9nRXJyb3Io
Y2FjaGVkUmVzb3VyY2UuZXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
RHVwbGljYXRlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCmluZGV4IGQ1OWJlZDFlY2VkNDZk
YjFkN2ZhN2JmYjRlMWMzZTM0ODNjMzE3M2IuLjRjZjIwNDA1MDEwMDk4OTU4Y2IyMmNlNjQwMTQ0
MzczNTk4YjhjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCkBA
IC0xNTEsNyArMTUxLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGNoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zKGNvbnN0IFByb2dyYW0mIHByb2dyYW0pCiAKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
RGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7CiAgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5nZXQoKSk7Ci0gICAgICAgIGlm
ICghYWRkUmVzdWx0KQorICAgICAgICBpZiAoIWFkZFJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybiBhZGRSZXN1bHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA2Mzk5Y2I1ZmU4
OWFiZTg0NDFmY2FhMWNkMWY3NjVmNzA5MWU0MTI2Li5lZTc0NmMyN2Q2YzY0NmRjZmNjYTU2ZjYx
MGU3MjIxODc3YmFkM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBlbnRyeVBvaW50SXRl
bXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMobV9pbnRyaW5zaWNzLCBmdW5jdGlvbkRlZmluaXRp
b24pOwotICAgICAgICBpZiAoIWVudHJ5UG9pbnRJdGVtcykgeworICAgICAgICBpZiAoIWVudHJ5
UG9pbnRJdGVtcy5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgc2V0RXJyb3IoZW50cnlQb2lu
dEl0ZW1zLmVycm9yKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNv
bHZlci5jcHAKaW5kZXggMzAwY2E1NTk1ZGQ2NDgxYzAxY2FiN2NlZjU2MDVhYWJhY2RmNDNiYy4u
NDI4NWY2MmQ1YTZhZGI5MTlmMTNkM2QzM2U0NGZhZDhkNGJlZTlhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVy
LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkZv
ckxvb3AmIGZvckxvb3ApCiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiB7Ci0gICAgaWYgKCFtX25hbWVDb250
ZXh0LmFkZCh2YXJpYWJsZURlY2xhcmF0aW9uKSkgeworICAgIGlmICghbV9uYW1lQ29udGV4dC5h
ZGQodmFyaWFibGVEZWNsYXJhdGlvbikuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgc2V0RXJyb3Io
RXJyb3IoIkNhbm5vdCBkZWNsYXJlIGR1cGxpY2F0ZSB2YXJpYWJsZXMuIiwgdmFyaWFibGVEZWNs
YXJhdGlvbi5jb2RlTG9jYXRpb24oKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmlu
ZGV4IGI5MDc5MzU2YWE3ZjkwNjYzYzk3MjI4YzA3ODdjZWIwMjZhMTk2MmMuLjk5MzJiYTY4ODY2
NWFmNmY1OWRjOGI1ZDU5NzMzY2U0N2RkNzkyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTQxLDIyICs0MSwyMiBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiAjZGVmaW5lIFBBUlNFKG5hbWUsIGVsZW1lbnQsIC4uLikg
XAogICAgIGF1dG8gbmFtZSA9IHBhcnNlIyNlbGVtZW50KF9fVkFfQVJHU19fKTsgXAotICAgIGlm
ICghbmFtZSkgXAorICAgIGlmICghbmFtZS5oYXNfdmFsdWUoKSkgXAogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQobmFtZS5lcnJvcigpKTsgXAogCiAjZGVmaW5lIENPTlNVTUVfVFlQRShu
YW1lLCB0eXBlKSBcCiAgICAgYXV0byBuYW1lID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6OnR5
cGUpOyBcCi0gICAgaWYgKCFuYW1lKSBcCisgICAgaWYgKCFuYW1lLmhhc192YWx1ZSgpKSBcCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChuYW1lLmVycm9yKCkpOwogCiAjZGVmaW5lIFBF
RUsobmFtZSkgXAogICAgIGF1dG8gbmFtZSA9IHBlZWsoKTsgXAotICAgIGlmICghbmFtZSkgXAor
ICAgIGlmICghbmFtZS5oYXNfdmFsdWUoKSkgXAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobmFtZS5lcnJvcigpKTsKIAogI2RlZmluZSBQRUVLX0ZVUlRIRVIobmFtZSkgXAogICAgIGF1
dG8gbmFtZSA9IHBlZWtGdXJ0aGVyKCk7IFwKLSAgICBpZiAoIW5hbWUpIFwKKyAgICBpZiAoIW5h
bWUuaGFzX3ZhbHVlKCkpIFwKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hbWUuZXJy
b3IoKSk7CiAKIGF1dG8gUGFyc2VyOjpwYXJzZShQcm9ncmFtJiBwcm9ncmFtLCBTdHJpbmdWaWV3
IHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlIG1vZGUsIEFTVDo6TmFtZVNwYWNlIG5hbWVTcGFjZSkg
LT4gRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+CkBAIC03NCwyOCArNzQsMjggQEAgYXV0byBQYXJzZXI6
OnBhcnNlKFByb2dyYW0mIHByb2dyYW0sIFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgUGFyc2luZ01v
ZGUgbW9kZSwgQVMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjYXNlIFRva2VuOjpU
eXBlOjpUeXBlZGVmOiB7CiAgICAgICAgICAgICBhdXRvIHR5cGVEZWZpbml0aW9uID0gcGFyc2VU
eXBlRGVmaW5pdGlvbigpOwotICAgICAgICAgICAgaWYgKCF0eXBlRGVmaW5pdGlvbikKKyAgICAg
ICAgICAgIGlmICghdHlwZURlZmluaXRpb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGVEZWZpbml0aW9uLmVycm9yKCkpOwogICAgICAgICAg
ICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCp0eXBlRGVmaW5p
dGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAgICAgICAgICBpZiAo
IWFwcGVuZFJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3RydWN0OiB7CiAgICAgICAgICAg
ICBhdXRvIHN0cnVjdHVyZURlZmluaXRpb24gPSBwYXJzZVN0cnVjdHVyZURlZmluaXRpb24oKTsK
LSAgICAgICAgICAgIGlmICghc3RydWN0dXJlRGVmaW5pdGlvbikKKyAgICAgICAgICAgIGlmICgh
c3RydWN0dXJlRGVmaW5pdGlvbi5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoc3RydWN0dXJlRGVmaW5pdGlvbi5lcnJvcigpKTsKICAgICAgICAgICAg
IGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZSgqc3RydWN0dXJlRGVm
aW5pdGlvbikpOwotICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpCisgICAgICAgICAgICBp
ZiAoIWFwcGVuZFJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoYXBwZW5kUmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUb2tlbjo6VHlwZTo6RW51bTogewogICAgICAgICAg
ICAgYXV0byBlbnVtZXJhdGlvbkRlZmluaXRpb24gPSBwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlv
bigpOwotICAgICAgICAgICAgaWYgKCFlbnVtZXJhdGlvbkRlZmluaXRpb24pCisgICAgICAgICAg
ICBpZiAoIWVudW1lcmF0aW9uRGVmaW5pdGlvbi5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZW51bWVyYXRpb25EZWZpbml0aW9uLmVycm9yKCkpOwog
ICAgICAgICAgICAgYXV0byBhcHBlbmRSZXN1bHQgPSBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKCpl
bnVtZXJhdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQor
ICAgICAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMDMsMzEgKzEwMywzMSBAQCBhdXRvIFBhcnNl
cjo6cGFyc2UoUHJvZ3JhbSYgcHJvZ3JhbSwgU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBQYXJzaW5n
TW9kZSBtb2RlLCBBUwogICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBQYXJzaW5nTW9kZTo6U3Rh
bmRhcmRMaWJyYXJ5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKG1ha2VTdHJpbmcoIidu
YXRpdmUnIGNhbid0IGV4aXN0IG91dHNpZGUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkuIikpOwog
ICAgICAgICAgICAgYXV0byBmdXJ0aGVyVG9rZW4gPSBwZWVrRnVydGhlcigpOwotICAgICAgICAg
ICAgaWYgKCFmdXJ0aGVyVG9rZW4pCisgICAgICAgICAgICBpZiAoIWZ1cnRoZXJUb2tlbi5oYXNf
dmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgaWYgKGZ1
cnRoZXJUb2tlbi0+dHlwZSA9PSBUb2tlbjo6VHlwZTo6VHlwZWRlZikgewogICAgICAgICAgICAg
ICAgIGF1dG8gbmF0aXZlVHlwZURlY2xhcmF0aW9uID0gcGFyc2VOYXRpdmVUeXBlRGVjbGFyYXRp
b24oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKKyAgICAg
ICAgICAgICAgICBpZiAoIW5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oYXNfdmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi5lcnJvcigpKTsKICAgICAgICAgICAgICAgICBhdXRvIGFwcGVuZFJlc3VsdCA9IHByb2dyYW0u
YXBwZW5kKFdURk1vdmUoKm5hdGl2ZVR5cGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAg
IGlmICghYXBwZW5kUmVzdWx0KQorICAgICAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0Lmhh
c192YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYXBw
ZW5kUmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYXV0byBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uID0gcGFyc2VO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pCisgICAgICAgICAgICBpZiAoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uZXJyb3IoKSk7CiAgICAgICAgICAgICBhdXRvIGFwcGVu
ZFJlc3VsdCA9IHByb2dyYW0uYXBwZW5kKFdURk1vdmUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24pKTsKLSAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0KQorICAgICAgICAgICAgaWYgKCFh
cHBlbmRSZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGFwcGVuZFJlc3VsdC5lcnJvcigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIGF1dG8gZnVuY3Rpb25EZWZp
bml0aW9uID0gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24oKTsKLSAgICAgICAgICAgIGlmICghZnVu
Y3Rpb25EZWZpbml0aW9uKQorICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkRlZmluaXRpb24uaGFz
X3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGZ1bmN0aW9u
RGVmaW5pdGlvbi5lcnJvcigpKTsKICAgICAgICAgICAgIGF1dG8gYXBwZW5kUmVzdWx0ID0gcHJv
Z3JhbS5hcHBlbmQoV1RGTW92ZSgqZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgICAgICAgICBp
ZiAoIWFwcGVuZFJlc3VsdCkKKyAgICAgICAgICAgIGlmICghYXBwZW5kUmVzdWx0Lmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChhcHBlbmRSZXN1bHQu
ZXJyb3IoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTQwLDcgKzE0
MCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZShQcm9ncmFtJiBwcm9ncmFtLCBTdHJpbmdWaWV3IHN0
cmluZ1ZpZXcsIFBhcnNpbmdNb2RlIG1vZGUsIEFTCiBhdXRvIFBhcnNlcjo6ZmFpbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFRyeVRvUGVlayB0cnlUb1BlZWspIC0+IFVuZXhwZWN0ZWQ8RXJyb3I+
CiB7CiAgICAgaWYgKHRyeVRvUGVlayA9PSBUcnlUb1BlZWs6OlllcykgewotICAgICAgICBpZiAo
YXV0byBuZXh0VG9rZW4gPSBwZWVrKCkpCisgICAgICAgIGlmIChhdXRvIG5leHRUb2tlbiA9IHBl
ZWsoKTsgbmV4dFRva2VuLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKG1fbGV4ZXIuZXJyb3JTdHJpbmcoKm5leHRUb2tlbiwgbWVzc2FnZSkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKG1ha2VTdHJpbmcoIkNhbm5v
dCBsZXg6ICIsIG1lc3NhZ2UpKSk7CkBAIC0zMTgsMjAgKzMxOCwyMCBAQCBzdGF0aWMgRXhwZWN0
ZWQ8ZmxvYXQsIEVycm9yPiBmbG9hdExpdGVyYWxUb0Zsb2F0KFN0cmluZ1ZpZXcgdGV4dCkKIGF1
dG8gUGFyc2VyOjpjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8VmFyaWFudDxp
bnQsIHVuc2lnbmVkPiwgRXJyb3I+CiB7CiAgICAgYXV0byBpbnRlZ3JhbExpdGVyYWxUb2tlbiA9
IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlwZTo6SW50TGl0ZXJhbCwgVG9rZW46OlR5cGU6OlVpbnRM
aXRlcmFsPigpOwotICAgIGlmICghaW50ZWdyYWxMaXRlcmFsVG9rZW4pCisgICAgaWYgKCFpbnRl
Z3JhbExpdGVyYWxUb2tlbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGludGVncmFsTGl0ZXJhbFRva2VuLmVycm9yKCkpOwogCiAgICAgc3dpdGNoIChpbnRlZ3Jh
bExpdGVyYWxUb2tlbi0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6
IHsKICAgICAgICAgYXV0byByZXN1bHQgPSBpbnRMaXRlcmFsVG9JbnQoaW50ZWdyYWxMaXRlcmFs
VG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAocmVzdWx0KQorICAgICAg
ICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQg
fX07CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CiAgICAg
fQogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgQVNTRVJUKGludGVncmFsTGl0ZXJhbFRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
dWludExpdGVyYWxUb1VpbnQoaW50ZWdyYWxMaXRlcmFsVG9rZW4tPnN0cmluZ1ZpZXcobV9sZXhl
cikpOwotICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIHt7ICpyZXN1bHQgfX07CiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CiAgICAgfQpAQCAtMzQxLDcgKzM0MSw3IEBAIGF1
dG8gUGFyc2VyOjpjb25zdW1lSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8VmFyaWFudDxp
bnQsIHVuc2lnbmVkPiwgRXJyb3I+CiBhdXRvIFBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZlSW50
ZWdyYWxMaXRlcmFsKCkgLT4gRXhwZWN0ZWQ8dW5zaWduZWQsIEVycm9yPgogewogICAgIGF1dG8g
aW50ZWdyYWxMaXRlcmFsID0gY29uc3VtZUludGVncmFsTGl0ZXJhbCgpOwotICAgIGlmICghaW50
ZWdyYWxMaXRlcmFsKQorICAgIGlmICghaW50ZWdyYWxMaXRlcmFsLmhhc192YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50ZWdyYWxMaXRlcmFsLmVycm9yKCkpOwogICAg
IGF1dG8gcmVzdWx0ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFtdKGludCB4KSAtPiBP
cHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICBpZiAoeCA8IDApCkBAIC0zODEsMjUgKzM4MSwy
NSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VDb25zdGFudEV4cHJlc3Npb24oKSAtPiBFeHBlY3RlZDxB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbiwgRXJybwogICAgICAgICBUb2tlbjo6VHlwZTo6VHJ1ZSwK
ICAgICAgICAgVG9rZW46OlR5cGU6OkZhbHNlLAogICAgICAgICBUb2tlbjo6VHlwZTo6SWRlbnRp
Zmllcj4oKTsKLSAgICBpZiAoIXR5cGUpCisgICAgaWYgKCF0eXBlLmhhc192YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodHlwZS5lcnJvcigpKTsKIAogICAgIHN3aXRjaCAo
dHlwZS0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkludExpdGVyYWw6IHsKICAgICAg
ICAgYXV0byB2YWx1ZSA9IGludExpdGVyYWxUb0ludCh0eXBlLT5zdHJpbmdWaWV3KG1fbGV4ZXIp
KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgaWYgKCF2YWx1ZS5oYXNfdmFsdWUoKSkK
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh2YWx1ZS5lcnJvcigpKTsKICAgICAg
ICAgcmV0dXJuIHt7IEFTVDo6SW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUpIH19Owog
ICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpVaW50TGl0ZXJhbDogewogICAgICAgICBhdXRv
IHZhbHVlID0gdWludExpdGVyYWxUb1VpbnQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVyKSk7Ci0g
ICAgICAgIGlmICghdmFsdWUpCisgICAgICAgIGlmICghdmFsdWUuaGFzX3ZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7CiAgICAgICAgIHJl
dHVybiB7eyBBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwoeyAqdHlwZSB9LCAqdmFsdWUpIH19
OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpGbG9hdExpdGVyYWw6IHsKICAgICAgICAg
YXV0byB2YWx1ZSA9IGZsb2F0TGl0ZXJhbFRvRmxvYXQodHlwZS0+c3RyaW5nVmlldyhtX2xleGVy
KSk7Ci0gICAgICAgIGlmICghdmFsdWUpCisgICAgICAgIGlmICghdmFsdWUuaGFzX3ZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3IoKSk7CiAgICAg
ICAgIHJldHVybiB7eyBBU1Q6OkZsb2F0TGl0ZXJhbCh7ICp0eXBlIH0sICp2YWx1ZSkgfX07CiAg
ICAgfQpAQCAtNDYyLDExICs0NjIsMTEgQEAgYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeEFi
YnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnIKICAgICAg
ICAgVG9rZW46OlR5cGU6OlN0YXIsCiAgICAgICAgIFRva2VuOjpUeXBlOjpTcXVhcmVCcmFja2V0
UGFpciwKICAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0PigpOwotICAgIGlm
ICghdG9rZW4pCisgICAgaWYgKCF0b2tlbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHRva2VuLmVycm9yKCkpOwogICAgIGlmICh0b2tlbi0+dHlwZSA9PSBUb2tl
bjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQpIHsKICAgICAgICAgYXV0byBudW1FbGVtZW50cyA9
IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOwotICAgICAgICBpZiAoIW51bUVs
ZW1lbnRzKQorICAgICAgICBpZiAoIW51bUVsZW1lbnRzLmhhc192YWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9yKCkpOwogICAgICAgICBD
T05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFyZUJyYWNrZXQpOwogICAg
ICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCAq
bnVtRWxlbWVudHMgfX07CkBAIC00ODAsMTEgKzQ4MCwxMSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VU
eXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2
aWF0ZQogICAgICAgICBUb2tlbjo6VHlwZTo6U3RhciwKICAgICAgICAgVG9rZW46OlR5cGU6OlNx
dWFyZUJyYWNrZXRQYWlyLAogICAgICAgICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQ+
KCk7Ci0gICAgaWYgKCF0b2tlbikKKyAgICBpZiAoIXRva2VuLmhhc192YWx1ZSgpKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodG9rZW4uZXJyb3IoKSk7CiAgICAgaWYgKHRva2VuLT50
eXBlID09IFRva2VuOjpUeXBlOjpMZWZ0U3F1YXJlQnJhY2tldCkgewogICAgICAgICBhdXRvIG51
bUVsZW1lbnRzID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgICAg
IGlmICghbnVtRWxlbWVudHMpCisgICAgICAgIGlmICghbnVtRWxlbWVudHMuaGFzX3ZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJyb3IoKSk7
CiAgICAgICAgIENPTlNVTUVfVFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJh
Y2tldCk7CiAgICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9
LCAqdG9rZW4sIFdURjo6bnVsbG9wdCwgKm51bUVsZW1lbnRzIH19OwpAQCAtNDk0LDcgKzQ5NCw3
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+IEV4cGVj
dGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlCiAgICAgICAgIFRva2VuOjpUeXBlOjpEZXZpY2Us
CiAgICAgICAgIFRva2VuOjpUeXBlOjpUaHJlYWRncm91cCwKICAgICAgICAgVG9rZW46OlR5cGU6
OlRocmVhZD4oKTsKLSAgICBpZiAoIWFkZHJlc3NTcGFjZVRva2VuKQorICAgIGlmICghYWRkcmVz
c1NwYWNlVG9rZW4uaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChh
ZGRyZXNzU3BhY2VUb2tlbi5lcnJvcigpKTsKICAgICBBU1Q6OkFkZHJlc3NTcGFjZSBhZGRyZXNz
U3BhY2U7CiAgICAgc3dpdGNoIChhZGRyZXNzU3BhY2VUb2tlbi0+dHlwZSkgewpAQCAtNjI5LDcg
KzYyOSw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZUJ1aWx0SW5TZW1hbnRpYygpIC0+IEV4cGVjdGVk
PEFTVDo6QnVpbHRJblNlbWFudGljLCBFcnJvcj4KICAgICAgICAgVG9rZW46OlR5cGU6OlNWR3Jv
dXBJRCwKICAgICAgICAgVG9rZW46OlR5cGU6OlNWR3JvdXBJbmRleCwKICAgICAgICAgVG9rZW46
OlR5cGU6OlNWR3JvdXBUaHJlYWRJRD4oKTsKLSAgICBpZiAoIW9yaWdpbikKKyAgICBpZiAoIW9y
aWdpbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG9yaWdpbi5l
cnJvcigpKTsKIAogICAgIHN3aXRjaCAob3JpZ2luLT50eXBlKSB7CkBAIC02NDksNyArNjQ5LDcg
QEAgYXV0byBQYXJzZXI6OnBhcnNlQnVpbHRJblNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8QVNUOjpC
dWlsdEluU2VtYW50aWMsIEVycm9yPgogICAgICAgICByZXR1cm4gQVNUOjpCdWlsdEluU2VtYW50
aWMoeyAqb3JpZ2luIH0sIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6U1ZJbm5lckNv
dmVyYWdlKTsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpTVlRhcmdldDogewogICAgICAgICBhdXRv
IHRhcmdldCA9IGNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpOyAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTgwNyBNYWtlIHRoaXMg
d29yayB3aXRoIHN0cmluZ3MgbGlrZSAiU1ZfVGFyZ2V0MCIuCi0gICAgICAgIGlmICghdGFyZ2V0
KQorICAgICAgICBpZiAoIXRhcmdldC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCh0YXJnZXQuZXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0
SW5TZW1hbnRpYyh7ICpvcmlnaW4gfSwgQVNUOjpCdWlsdEluU2VtYW50aWM6OlZhcmlhYmxlOjpT
VlRhcmdldCwgKnRhcmdldCk7CiAgICAgfQpAQCAtNzAxLDcgKzcwMSw3IEBAIGF1dG8gUGFyc2Vy
OjpwYXJzZVJlc291cmNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxBU1Q6OlJlc291cmNlU2VtYW50
aWMsIEVycm9yPgogICAgIH0KIAogICAgIGF1dG8gaW5kZXggPSByZWNvZ25pemVTaW1wbGVVbnNp
Z25lZEludGVnZXIoaW5mb1N0cmluZ1ZpZXcuc3Vic3RyaW5nKDEpKTsKLSAgICBpZiAoIWluZGV4
KQorICAgIGlmICghaW5kZXguaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChpbmRleC5lcnJvcigpKTsKIAogICAgIHVuc2lnbmVkIHNwYWNlID0gMDsKQEAgLTcxNCw3
ICs3MTQsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VSZXNvdXJjZVNlbWFudGljKCkgLT4gRXhwZWN0
ZWQ8QVNUOjpSZXNvdXJjZVNlbWFudGljLCBFcnJvcj4KICAgICAgICAgaWYgKHNwYWNlVG9rZW5T
dHJpbmdWaWV3Lmxlbmd0aCgpIDw9IHByZWZpeC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChFcnJvcihtYWtlU3RyaW5nKCJTZWNvbmQgYXJndW1lbnQgdG8gcmVz
b3VyY2Ugc2VtYW50aWMgIiwgc3BhY2VUb2tlblN0cmluZ1ZpZXcsICIgbmVlZHMgYmUgb2YgdGhl
IGZvcm0gJ3NwYWNlMCciKSkpOwogICAgICAgICBhdXRvIHNwYWNlVmFsdWUgPSByZWNvZ25pemVT
aW1wbGVVbnNpZ25lZEludGVnZXIoc3BhY2VUb2tlblN0cmluZ1ZpZXcuc3Vic3RyaW5nKHByZWZp
eC5sZW5ndGgoKSkpOwotICAgICAgICBpZiAoIXNwYWNlVmFsdWUpCisgICAgICAgIGlmICghc3Bh
Y2VWYWx1ZS5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChz
cGFjZVZhbHVlLmVycm9yKCkpOwogICAgICAgICBzcGFjZSA9ICpzcGFjZVZhbHVlOwogICAgIH0K
QEAgLTczNiw3ICs3MzYsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdGFnZUluT3V0U2VtYW50aWMo
KSAtPiBFeHBlY3RlZDxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYywgRXJybwogICAgIENPTlNVTUVf
VFlQRShsZWZ0UGFyZW50aGVzaXMsIExlZnRQYXJlbnRoZXNpcyk7CiAKICAgICBhdXRvIGluZGV4
ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFpbmRleCkK
KyAgICBpZiAoIWluZGV4Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoaW5kZXguZXJyb3IoKSk7CiAKICAgICBDT05TVU1FX1RZUEUocmlnaHRQYXJlbnRoZXNpcywg
UmlnaHRQYXJlbnRoZXNpcyk7CkBAIC04MzMsNyArODMzLDcgQEAgYXV0byBQYXJzZXI6OnBhcnNl
RW51bWVyYXRpb25EZWZpbml0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24KICAgICAgICAgfQogICAgICAgICByZXR1cm4geyBBU1Q6OlR5cGVSZWZlcmVuY2U6OmNy
ZWF0ZSgqb3JpZ2luLCAiaW50Il9zdHIsIEFTVDo6VHlwZUFyZ3VtZW50cygpKSB9OwogICAgIH0p
KCk7Ci0gICAgaWYgKCF0eXBlKQorICAgIGlmICghdHlwZS5oYXNfdmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7CiAKICAgICBDT05TVU1FX1RZUEUo
bGVmdEN1cmx5QnJhY2tldCwgTGVmdEN1cmx5QnJhY2tldCk7CkBAIC05MDMsMTkgKzkwMywxOSBA
QCBhdXRvIFBhcnNlcjo6cGFyc2VOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUoKSAtPiBFeHBl
Y3RlZDxBU1Q6Ok51bVRocmVhZHNGdW5jdAogICAgIENPTlNVTUVfVFlQRShsZWZ0UGFyZW50aGVz
aXMsIExlZnRQYXJlbnRoZXNpcyk7CiAKICAgICBhdXRvIHdpZHRoID0gY29uc3VtZU5vbk5lZ2F0
aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCF3aWR0aCkKKyAgICBpZiAoIXdpZHRoLmhh
c192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQod2lkdGguZXJyb3IoKSk7
CiAKICAgICBDT05TVU1FX1RZUEUoY29tbWEsIENvbW1hKTsKIAogICAgIGF1dG8gaGVpZ2h0ID0g
Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCk7Ci0gICAgaWYgKCFoZWlnaHQpCisg
ICAgaWYgKCFoZWlnaHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChoZWlnaHQuZXJyb3IoKSk7CiAKICAgICBDT05TVU1FX1RZUEUoc2Vjb25kQ29tbWEsIENvbW1h
KTsKIAogICAgIGF1dG8gZGVwdGggPSBjb25zdW1lTm9uTmVnYXRpdmVJbnRlZ3JhbExpdGVyYWwo
KTsKLSAgICBpZiAoIWRlcHRoKQorICAgIGlmICghZGVwdGguaGFzX3ZhbHVlKCkpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChkZXB0aC5lcnJvcigpKTsKIAogICAgIENPTlNVTUVfVFlQ
RShyaWdodFBhcmVudGhlc2lzLCBSaWdodFBhcmVudGhlc2lzKTsKQEAgLTEwMDQsNyArMTAwNCw3
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZUNvbXB1dGVGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0CiBhdXRvIFBhcnNlcjo6cGFyc2VWZXJ0ZXhPckZy
YWdtZW50RnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiwgRXJyb3I+CiB7CiAgICAgYXV0byBlbnRyeVBvaW50ID0gY29uc3VtZVR5cGVzPFRv
a2VuOjpUeXBlOjpWZXJ0ZXgsIFRva2VuOjpUeXBlOjpGcmFnbWVudD4oKTsKLSAgICBpZiAoIWVu
dHJ5UG9pbnQpCisgICAgaWYgKCFlbnRyeVBvaW50Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoZW50cnlQb2ludC5lcnJvcigpKTsKICAgICBhdXRvIGVudHJ5UG9p
bnRUeXBlID0gKGVudHJ5UG9pbnQtPnR5cGUgPT0gVG9rZW46OlR5cGU6OlZlcnRleCkgPyBBU1Q6
OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXggOiBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDsK
IApAQCAtMTAyNiw3ICsxMDI2LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlUmVndWxhckZ1bmN0aW9u
RGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXQKICAgICBQQVJT
RSh0eXBlLCBUeXBlKTsKIAogICAgIGF1dG8gbmFtZSA9IGNvbnN1bWVUeXBlczxUb2tlbjo6VHlw
ZTo6SWRlbnRpZmllciwgVG9rZW46OlR5cGU6Ok9wZXJhdG9yTmFtZT4oKTsKLSAgICBpZiAoIW5h
bWUpCisgICAgaWYgKCFuYW1lLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQobmFtZS5lcnJvcigpKTsKICAgICBhdXRvIGlzT3BlcmF0b3IgPSBuYW1lLT50eXBlID09
IFRva2VuOjpUeXBlOjpPcGVyYXRvck5hbWU7CiAKQEAgLTExNDcsNyArMTE0Nyw3IEBAIGF1dG8g
UGFyc2VyOjpwYXJzZVN3aXRjaFN0YXRlbWVudCgpIC0+IEV4cGVjdGVkPEFTVDo6U3dpdGNoU3Rh
dGVtZW50LCBFcnJvcj4KIGF1dG8gUGFyc2VyOjpwYXJzZVN3aXRjaENhc2UoKSAtPiBFeHBlY3Rl
ZDxBU1Q6OlN3aXRjaENhc2UsIEVycm9yPgogewogICAgIGF1dG8gb3JpZ2luID0gY29uc3VtZVR5
cGVzPFRva2VuOjpUeXBlOjpDYXNlLCBUb2tlbjo6VHlwZTo6RGVmYXVsdD4oKTsKLSAgICBpZiAo
IW9yaWdpbikKKyAgICBpZiAoIW9yaWdpbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKG9yaWdpbi5lcnJvcigpKTsKIAogICAgIHN3aXRjaCAob3JpZ2luLT50eXBl
KSB7CkBAIC0xMTgwLDcgKzExODAsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VGb3JMb29wKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4KIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVNUOjpFeHByZXNzaW9uPiBjb25kaXRpb24obnVsbHB0cik7CiAgICAgICAgIGlmICghdHJ5VHlw
ZShUb2tlbjo6VHlwZTo6U2VtaWNvbG9uKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZXhwcmVz
c2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXhwcmVzc2lv
biA9IHBhcnNlRXhwcmVzc2lvbigpOyBleHByZXNzaW9uLmhhc192YWx1ZSgpKQogICAgICAgICAg
ICAgICAgIGNvbmRpdGlvbiA9ICgqZXhwcmVzc2lvbikubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGV4cHJl
c3Npb24uZXJyb3IoKSk7CkBAIC0xMTg5LDcgKzExODksNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VG
b3JMb29wKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGb3JMb29wLCBFcnJvcj4KIAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiBpbmNyZW1lbnQobnVsbHB0cik7CiAgICAgICAg
IGlmICghdHJ5VHlwZShUb2tlbjo6VHlwZTo6UmlnaHRQYXJlbnRoZXNpcykpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKSkKKyAgICAgICAgICAg
IGlmIChhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oKTsgZXhwcmVzc2lvbi5oYXNf
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAoKmV4cHJlc3Npb24pLm1vdmVU
b1VuaXF1ZVB0cigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwpAQCAtMTIwNCw3ICsxMjA0LDcgQEAg
YXV0byBQYXJzZXI6OnBhcnNlRm9yTG9vcCgpIC0+IEV4cGVjdGVkPEFTVDo6Rm9yTG9vcCwgRXJy
b3I+CiAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9ucyA9IGJhY2t0cmFja2luZ1Njb3BlPEV4
cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQsIEVycm9yPj4oWyZdKCkg
ewogICAgICAgICByZXR1cm4gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpOwogICAgIH0pOwot
ICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9ucykgeworICAgIGlmICh2YXJpYWJsZURlY2xhcmF0
aW9ucy5oYXNfdmFsdWUoKSkgewogICAgICAgICBVbmlxdWVSZWY8QVNUOjpTdGF0ZW1lbnQ+IGRl
Y2xhcmF0aW9uU3RhdGVtZW50ID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50PihXVEZNb3ZlKCp2YXJpYWJsZURlY2xhcmF0aW9ucykpOwogICAgICAgICBy
ZXR1cm4gcGFyc2VSZW1haW5kZXIoV1RGTW92ZShkZWNsYXJhdGlvblN0YXRlbWVudCkpOwogICAg
IH0KQEAgLTEyNjUsNyArMTI2NSw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVZhcmlhYmxlRGVjbGFy
YXRpb25zKCkgLT4gRXhwZWN0ZWQ8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0CiAgICAgUEFS
U0UodHlwZSwgVHlwZSk7CiAKICAgICBhdXRvIGZpcnN0VmFyaWFibGVEZWNsYXJhdGlvbiA9IHBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbih0eXBlLT5jb3B5UmVmKCkpOwotICAgIGlmICghZmlyc3RW
YXJpYWJsZURlY2xhcmF0aW9uKQorICAgIGlmICghZmlyc3RWYXJpYWJsZURlY2xhcmF0aW9uLmhh
c192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZmlyc3RWYXJpYWJsZURl
Y2xhcmF0aW9uLmVycm9yKCkpOwogCiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+PiByZXN1bHQ7CkBAIC0xMjczLDcgKzEyNzMsNyBAQCBhdXRvIFBhcnNlcjo6
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9ucygpIC0+IEV4cGVjdGVkPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnNTdAogCiAgICAgd2hpbGUgKHRyeVR5cGUoVG9rZW46OlR5cGU6OkNvbW1hKSkgewog
ICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRp
b24odHlwZS0+Y29weVJlZigpKTsKLSAgICAgICAgaWYgKCF2YXJpYWJsZURlY2xhcmF0aW9uKQor
ICAgICAgICBpZiAoIXZhcmlhYmxlRGVjbGFyYXRpb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFyaWFibGVEZWNsYXJhdGlvbi5lcnJvcigpKTsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4oV1RGTW92ZSgqdmFyaWFibGVEZWNsYXJhdGlvbikpKTsKICAgICB9CkBAIC0xMzczLDcgKzEz
NzMsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQoKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpTdGF0ZW1lbnQ+LCBFcnJvcj4KICAgICAgICAgICAgIENPTlNVTUVfVFlQRShzZW1p
Y29sb24sIFNlbWljb2xvbik7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
KTsKLSAgICAgICAgaWYgKGVmZmVjdGZ1bEV4cHJlc3Npb24pCisgICAgICAgIGlmIChlZmZlY3Rm
dWxFeHByZXNzaW9uLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKmVm
ZmVjdGZ1bEV4cHJlc3Npb24pOwogICAgIH0KIApAQCAtMTQzNywyMCArMTQzNywyMCBAQCBhdXRv
IFBhcnNlcjo6cGFyc2VMaW1pdGVkU3VmZml4T3BlcmF0b3IoVW5pcXVlUmVmPEFTVDo6RXhwcmVz
c2lvbj4mJiBwcmV2aW91cykgLQogICAgICAgICBUb2tlbjo6VHlwZTo6RnVsbFN0b3AsCiAgICAg
ICAgIFRva2VuOjpUeXBlOjpBcnJvdywKICAgICAgICAgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVC
cmFja2V0PigpOwotICAgIGlmICghdHlwZSkKKyAgICBpZiAoIXR5cGUuaGFzX3ZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7
CiAKICAgICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpGdWxs
U3RvcDogewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlw
ZTo6SWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgaWYgKCFp
ZGVudGlmaWVyLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Np
b24oV1RGTW92ZShwcmV2aW91cyksIGZhbHNlKTsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0
aW9uKHByZXZpb3VzLT5jb2RlTG9jYXRpb24oKSwgKmlkZW50aWZpZXIpOwogICAgICAgICByZXR1
cm4gU3VmZml4RXhwcmVzc2lvbihtYWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9j
YXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIp
LnRvU3RyaW5nKCkpLCB0cnVlKTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXJyb3c6
IHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29uc3VtZVR5cGUoVG9rZW46OlR5cGU6Oklk
ZW50aWZpZXIpOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIGlmICghaWRlbnRp
Zmllci5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdU
Rk1vdmUocHJldmlvdXMpLCBmYWxzZSk7CiAgICAgICAgIENvZGVMb2NhdGlvbiBsb2NhdGlvbihw
cmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICppZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIFN1
ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxBU1Q6OkRvdEV4cHJlc3Npb24+KGxvY2F0aW9u
LCBtYWtlVW5pcXVlUmVmPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RG
TW92ZShwcmV2aW91cykpLCBpZGVudGlmaWVyLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5n
KCkpLCB0cnVlKTsKQEAgLTE0NTgsOSArMTQ1OCw5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZUxpbWl0
ZWRTdWZmaXhPcGVyYXRvcihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAt
CiAgICAgZGVmYXVsdDogewogICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSA9PSBUb2tlbjo6VHlw
ZTo6TGVmdFNxdWFyZUJyYWNrZXQpOwogICAgICAgICBhdXRvIGV4cHJlc3Npb24gPSBwYXJzZUV4
cHJlc3Npb24oKTsKLSAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICBpZiAoIWV4cHJl
c3Npb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihX
VEZNb3ZlKHByZXZpb3VzKSwgZmFsc2UpOwotICAgICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJy
YWNrZXQgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KSkgewor
ICAgICAgICBpZiAoYXV0byByaWdodFNxdWFyZUJyYWNrZXQgPSBjb25zdW1lVHlwZShUb2tlbjo6
VHlwZTo6UmlnaHRTcXVhcmVCcmFja2V0KTsgcmlnaHRTcXVhcmVCcmFja2V0Lmhhc192YWx1ZSgp
KSB7CiAgICAgICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNvZGVMb2Nh
dGlvbigpLCAqcmlnaHRTcXVhcmVCcmFja2V0KTsKICAgICAgICAgICAgIHJldHVybiBTdWZmaXhF
eHByZXNzaW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpJbmRleEV4cHJlc3Npb24+KGxvY2F0aW9uLCBX
VEZNb3ZlKHByZXZpb3VzKSwgV1RGTW92ZSgqZXhwcmVzc2lvbikpLCB0cnVlKTsKICAgICAgICAg
fQpAQCAtMTQ3NywyOSArMTQ3NywyOSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTdWZmaXhPcGVyYXRv
cihVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYmIHByZXZpb3VzKSAtPiBTdWZmaQogICAgICAg
ICBUb2tlbjo6VHlwZTo6TGVmdFNxdWFyZUJyYWNrZXQsCiAgICAgICAgIFRva2VuOjpUeXBlOjpQ
bHVzUGx1cywKICAgICAgICAgVG9rZW46OlR5cGU6Ok1pbnVzTWludXM+KCk7Ci0gICAgaWYgKCFz
dWZmaXgpCisgICAgaWYgKCFzdWZmaXguaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBTdWZm
aXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7CiAKICAgICBzd2l0Y2ggKHN1
ZmZpeC0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkZ1bGxTdG9wOiB7CiAgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpJZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBpZiAoIWlkZW50aWZpZXIuaGFzX3Zh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbihXVEZNb3ZlKHByZXZp
b3VzKSwgZmFsc2UpOwogICAgICAgICBDb2RlTG9jYXRpb24gbG9jYXRpb24ocHJldmlvdXMtPmNv
ZGVMb2NhdGlvbigpLCAqaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNz
aW9uKG1ha2VVbmlxdWVSZWY8QVNUOjpEb3RFeHByZXNzaW9uPihsb2NhdGlvbiwgV1RGTW92ZShw
cmV2aW91cyksIGlkZW50aWZpZXItPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSksIHRy
dWUpOwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpBcnJvdzogewogICAgICAgICBhdXRv
IGlkZW50aWZpZXIgPSBjb25zdW1lVHlwZShUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7Ci0gICAg
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyLmhhc192YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24oV1RGTW92ZShwcmV2aW91cyks
IGZhbHNlKTsKICAgICAgICAgQ29kZUxvY2F0aW9uIGxvY2F0aW9uKHByZXZpb3VzLT5jb2RlTG9j
YXRpb24oKSwgKmlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gU3VmZml4RXhwcmVzc2lvbiht
YWtlVW5pcXVlUmVmPEFTVDo6RG90RXhwcmVzc2lvbj4obG9jYXRpb24sIG1ha2VVbmlxdWVSZWY8
QVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24+KFdURk1vdmUoKnN1ZmZpeCksIFdURk1vdmUocHJl
dmlvdXMpKSwgaWRlbnRpZmllci0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpKSwgdHJ1
ZSk7CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OkxlZnRTcXVhcmVCcmFja2V0OiB7CiAg
ICAgICAgIGF1dG8gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBpZiAo
IWV4cHJlc3Npb24pCisgICAgICAgIGlmICghZXhwcmVzc2lvbi5oYXNfdmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybiBTdWZmaXhFeHByZXNzaW9uKFdURk1vdmUocHJldmlvdXMpLCBmYWxzZSk7
Ci0gICAgICAgIGlmIChhdXRvIHJpZ2h0U3F1YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2Vu
OjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQpKSB7CisgICAgICAgIGlmIChhdXRvIHJpZ2h0U3F1
YXJlQnJhY2tldCA9IGNvbnN1bWVUeXBlKFRva2VuOjpUeXBlOjpSaWdodFNxdWFyZUJyYWNrZXQp
OyByaWdodFNxdWFyZUJyYWNrZXQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIENvZGVMb2Nh
dGlvbiBsb2NhdGlvbihwcmV2aW91cy0+Y29kZUxvY2F0aW9uKCksICpyaWdodFNxdWFyZUJyYWNr
ZXQpOwogICAgICAgICAgICAgcmV0dXJuIFN1ZmZpeEV4cHJlc3Npb24obWFrZVVuaXF1ZVJlZjxB
U1Q6OkluZGV4RXhwcmVzc2lvbj4obG9jYXRpb24sIFdURk1vdmUocHJldmlvdXMpLCBXVEZNb3Zl
KCpleHByZXNzaW9uKSksIHRydWUpOwogICAgICAgICB9CkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBh
dXRvIFBhcnNlcjo6Y29tcGxldGVBc3NpZ25tZW50KFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+
JiYgbGVmdCkgLT4gRXhwZWN0ZWQ8VQogICAgICAgICBUb2tlbjo6VHlwZTo6T3JFcXVhbHMsCiAg
ICAgICAgIFRva2VuOjpUeXBlOjpSaWdodFNoaWZ0RXF1YWxzLAogICAgICAgICBUb2tlbjo6VHlw
ZTo6TGVmdFNoaWZ0RXF1YWxzPigpOwotICAgIGlmICghYXNzaWdubWVudE9wZXJhdG9yKQorICAg
IGlmICghYXNzaWdubWVudE9wZXJhdG9yLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoYXNzaWdubWVudE9wZXJhdG9yLmVycm9yKCkpOwogCiAgICAgUEFSU0Uocmln
aHQsIFBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKTsKQEAgLTE2NDcsMjMgKzE2NDcsMjMgQEAg
YXV0byBQYXJzZXI6OnBhcnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKSAtPiBFeHBlY3Rl
ZDxVbmlxdWVSZWY8QVNUOjpFeHByZXMKICAgICB9CiAKICAgICBleHByZXNzaW9uID0gY29tcGxl
dGVQb3NzaWJsZVNoaWZ0KFdURk1vdmUoKmV4cHJlc3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Np
b24pCisgICAgaWYgKCFleHByZXNzaW9uLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigpKTsKIAogICAgIGV4cHJlc3Npb24gPSBjb21w
bGV0ZVBvc3NpYmxlTXVsdGlwbHkoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhw
cmVzc2lvbikKKyAgICBpZiAoIWV4cHJlc3Npb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwogCiAgICAgZXhwcmVzc2lvbiA9
IGNvbXBsZXRlUG9zc2libGVBZGQoV1RGTW92ZSgqZXhwcmVzc2lvbikpOwotICAgIGlmICghZXhw
cmVzc2lvbikKKyAgICBpZiAoIWV4cHJlc3Npb24uaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChleHByZXNzaW9uLmVycm9yKCkpOwogCiAgICAgZXhwcmVzc2lvbiA9
IGNvbXBsZXRlUG9zc2libGVSZWxhdGlvbmFsQmluYXJ5T3BlcmF0aW9uKFdURk1vdmUoKmV4cHJl
c3Npb24pKTsKLSAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgaWYgKCFleHByZXNzaW9uLmhhc192
YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXhwcmVzc2lvbi5lcnJvcigp
KTsKIAogICAgIGV4cHJlc3Npb24gPSBjb21wbGV0ZVBvc3NpYmxlTG9naWNhbEJpbmFyeU9wZXJh
dGlvbihXVEZNb3ZlKCpleHByZXNzaW9uKSk7Ci0gICAgaWYgKCFleHByZXNzaW9uKQorICAgIGlm
ICghZXhwcmVzc2lvbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGV4cHJlc3Npb24uZXJyb3IoKSk7CiAKICAgICBQRUVLKG5leHRUb2tlbik7CkBAIC0yMDM5LDI1
ICsyMDM5LDI1IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVRlcm0oKSAtPiBFeHBlY3RlZDxVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiwgRXJyb3I+CiAgICAgICAgIFRva2VuOjpUeXBlOjpGYWxzZSwK
ICAgICAgICAgVG9rZW46OlR5cGU6OklkZW50aWZpZXIsCiAgICAgICAgIFRva2VuOjpUeXBlOjpM
ZWZ0UGFyZW50aGVzaXM+KCk7Ci0gICAgaWYgKCF0eXBlKQorICAgIGlmICghdHlwZS5oYXNfdmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHR5cGUuZXJyb3IoKSk7CiAKICAg
ICBzd2l0Y2ggKHR5cGUtPnR5cGUpIHsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpJbnRMaXRlcmFs
OiB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBpbnRMaXRlcmFsVG9JbnQodHlwZS0+c3RyaW5nVmll
dyhtX2xleGVyKSk7Ci0gICAgICAgIGlmICghdmFsdWUpCisgICAgICAgIGlmICghdmFsdWUuaGFz
X3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodmFsdWUuZXJyb3Io
KSk7CiAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4o
KnR5cGUsICp2YWx1ZSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6VWludExpdGVy
YWw6IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IHVpbnRMaXRlcmFsVG9VaW50KHR5cGUtPnN0cmlu
Z1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICBpZiAoIXZhbHVl
Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHZhbHVlLmVy
cm9yKCkpOwogICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6VW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbD4oKnR5cGUsICp2YWx1ZSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6RmxvYXRMaXRlcmFsOiB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBmbG9hdExpdGVyYWxUb0Zs
b2F0KHR5cGUtPnN0cmluZ1ZpZXcobV9sZXhlcikpOwotICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICBpZiAoIXZhbHVlLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKHZhbHVlLmVycm9yKCkpOwogICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFT
VDo6RmxvYXRMaXRlcmFsPigqdHlwZSwgKnZhbHVlKSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCmluZGV4IGMwYjQ4N2M1
M2Y2YWVmMTMwMDhkZDg1NTlkNzU0NDYyOTgxMDY4NGMuLmE2YWY2Yjc2NTU4ZDFlODc0YzFmNDMy
NGNjZDQ5MmIwMmViODI5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgYXV0byBzdGF0ZSA9IG1fbGV4ZXIuc3RhdGUoKTsKICAgICAgICAgYXV0byByZXN1
bHQgPSBjYWxsYmFjaygpOwotICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICBpZiAocmVzdWx0
Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgbV9sZXhl
ci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNw
cAppbmRleCA4MjYxZjliMDE2ODljMDczOGYxNjYzNmU4NmU0YzI5NTAyOWIyYjNjLi5iMmUwZGZh
YzdjZmRhM2RkOGU4NzIwMjI2MzZlZGU2MTYzMDM1NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKQEAgLTE3MCw3ICsx
NzAsNyBAQCBVbmlxdWVSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3Qg
U3RyaW5nJiB3aGxzbFNvdXJjZSkKICAgICAgICAgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVl
ZGVkKHByb2dyYW0sICJBU1QgYmVmb3JlICIgIyBwYXNzKTsgXAogICAgICAgICBQaGFzZVRpbWVy
IHBoYXNlVGltZXIoI3Bhc3MsIHBoYXNlVGltZXMpOyBcCiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
cGFzcyhfX1ZBX0FSR1NfXyk7IFwKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsgXAorICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeyBcCiAgICAgICAgICAgICBpZiAoZHVtcFBhc3NGYWls
dXJlKSBcCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJmYWlsZWQgcGFzczogIiAjIHBhc3Ms
IExleGVyOjplcnJvclN0cmluZyhyZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNv
dXJjZTIpKTsgXAogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKExleGVyOjplcnJv
clN0cmluZyhyZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsgXApA
QCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxQcm9ncmFtLCBTdHJpbmc+IHByZXBh
cmVTaGFyZWQoUGhhc2VUaW1lcyYgcGhhc2VUaW1lcywgY29uc3QgU3RyCiAKICAgICAgICAgUGhh
c2VUaW1lciBwaGFzZVRpbWVyKCJwYXJzZSIsIHBoYXNlVGltZXMpOwogICAgICAgICBhdXRvIHBh
cnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0sIHdobHNsU291cmNlMSwgUGFyc2luZ01v
ZGU6OlVzZXIsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKLSAgICAgICAgaWYgKCFwYXJz
ZVJlc3VsdCkgeworICAgICAgICBpZiAoIXBhcnNlUmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoZHVtcFBhc3NGYWlsdXJlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
ZmFpbGVkIHRvIHBhcnNlIHRoZSBwcm9ncmFtOiAiLCBMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VS
ZXN1bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1bHQuZXJy
b3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBz
dGF0aWMgRXhwZWN0ZWQ8UHJvZ3JhbSwgU3RyaW5nPiBwcmVwYXJlU2hhcmVkKFBoYXNlVGltZXMm
IHBoYXNlVGltZXMsIGNvbnN0IFN0cgogICAgICAgICBpZiAod2hsc2xTb3VyY2UyKSB7CiAgICAg
ICAgICAgICBwcm9ncmFtLm5hbWVDb250ZXh0KCkuc2V0Q3VycmVudE5hbWVTcGFjZShBU1Q6Ok5h
bWVTcGFjZTo6TmFtZVNwYWNlMik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFy
c2VyLnBhcnNlKHByb2dyYW0sICp3aGxzbFNvdXJjZTIsIFBhcnNpbmdNb2RlOjpVc2VyLCBBU1Q6
Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7
CisgICAgICAgICAgICBpZiAoIXBhcnNlUmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGR1bXBQYXNzRmFpbHVyZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
KCJmYWlsZWQgdG8gcGFyc2UgdGhlIHByb2dyYW06ICIsIExleGVyOjplcnJvclN0cmluZyhwYXJz
ZVJlc3VsdC5lcnJvcigpLCB3aGxzbFNvdXJjZTEsIHdobHNsU291cmNlMikpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChMZXhlcjo6ZXJyb3JTdHJpbmcocGFyc2VSZXN1
bHQuZXJyb3IoKSwgd2hsc2xTb3VyY2UxLCB3aGxzbFNvdXJjZTIpKTsKQEAgLTI1OSw3ICsyNTks
NyBAQCBFeHBlY3RlZDxSZW5kZXJQcmVwYXJlUmVzdWx0LCBTdHJpbmc+IHByZXBhcmUoY29uc3Qg
U2hhZGVyTW9kdWxlJiB2ZXJ0ZXhTaGFkZXJNbwogICAgICAgICAgICAgZGlzdGluY3RGcmFnbWVu
dFNoYWRlciA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcm9ncmFtID0gcHJlcGFy
ZVNoYXJlZChwaGFzZVRpbWVzLCB2ZXJ0ZXhTaGFkZXJNb2R1bGUud2hsc2xTb3VyY2UsIHNlY29u
ZFNoYWRlcik7Ci0gICAgICAgIGlmICghcHJvZ3JhbSkKKyAgICAgICAgaWYgKCFwcm9ncmFtLmhh
c192YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHByb2dyYW0uZXJy
b3IoKSk7CiAKICAgICAgICAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hl
ZFNlbWFudGljczsKQEAgLTI5NCw3ICsyOTQsNyBAQCBFeHBlY3RlZDxDb21wdXRlUHJlcGFyZVJl
c3VsdCwgU3RyaW5nPiBwcmVwYXJlKGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLAog
ICAgIHsKICAgICAgICAgUGhhc2VUaW1lciBwaGFzZVRpbWVyKCJwcmVwYXJlIHRvdGFsIiwgcGhh
c2VUaW1lcyk7CiAgICAgICAgIGF1dG8gcHJvZ3JhbSA9IHByZXBhcmVTaGFyZWQocGhhc2VUaW1l
cywgc2hhZGVyTW9kdWxlLndobHNsU291cmNlKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtKQorICAg
ICAgICBpZiAoIXByb2dyYW0uaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQocHJvZ3JhbS5lcnJvcigpKTsKIAogICAgICAgICBPcHRpb25hbDxNYXRjaGVkQ29t
cHV0ZVNlbWFudGljcz4gbWF0Y2hlZFNlbWFudGljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcApp
bmRleCBiMTFiODYwNGFkNzUzNWM0ZTMxMWY4Nzg2YjkzN2M1ZjhlNTdkZjY1Li4wZWQwYzZjYzA5
YmQ5OGJlYzFmYThmZGI2Y2U5NjExYjI0ZjQ5NTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3Bw
CkBAIC0yODEsNyArMjgxLDcgQEAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0
Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmUKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICBhdXRvJiB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50ID0gZG93
bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSk7
CiAgICAgYXV0byB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50
SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwotICAg
IGlmICghdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zKQorICAgIGlmICghdmVydGV4U2hhZGVy
RW50cnlQb2ludEl0ZW1zLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIGF1dG8gdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyh2ZXJ0
ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmxheW91dCwgU2hhZGVyU3RhZ2U6OlZlcnRleCk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXJSZXNv
dXJjZU1hcCkKQEAgLTI5OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50
aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50cnlQ
b2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9u
c1swXS5nZXQoKSk7CiAgICAgYXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9IGdh
dGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFkZXJF
bnRyeVBvaW50KTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQorICAg
IGlmICghZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMuaGFzX3ZhbHVlKCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBmcmFnbWVudFNoYWRlclJlc291cmNlTWFw
ID0gbWF0Y2hSZXNvdXJjZXMoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OkZyYWdtZW50KTsK
ICAgICBpZiAoIWZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXApCkBAIC0zMjAsNyArMzIwLDcgQEAg
T3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0m
IHByb2dyYW0sIENvbXB1dGVQaXBlbGkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBhdXRvJiBlbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZ1
bmN0aW9uc1swXS5nZXQoKSk7CiAgICAgYXV0byBlbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRy
eVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIGVudHJ5UG9pbnQpOwotICAgIGlmICgh
ZW50cnlQb2ludEl0ZW1zKQorICAgIGlmICghZW50cnlQb2ludEl0ZW1zLmhhc192YWx1ZSgpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIEFTU0VSVChlbnRyeVBvaW50SXRlbXMt
Pm91dHB1dHMuaXNFbXB0eSgpKTsKICAgICBhdXRvIHJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJj
ZXMoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IubGF5
b3V0LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeVV0
aWxpdGllcy5jcHAKaW5kZXggYTNkNDMzMGQwMTkzNjQzYWFiZTk0MGU5OWIwNTY5MDNjMTJmYTMw
My4uNzkzZGRjODJiMTE0MjAwZmNiZDkxMGQ4MGM0NTY1MTkwNmE4ZWQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnlV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhbmRhcmRMaWJyYXJ5VXRpbGl0aWVzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBFeHBlY3Rl
ZDx2b2lkLCBFcnJvcj4gaW5jbHVkZVN0YW5kYXJkTGlicmFyeShQcm9ncmFtJiBwcm9ncmFtLCBQ
YXJzZXImIHBhcnNlciwgYgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0YW5k
YXJkTGlicmFyeShkZWNvbXByZXNzQW5kRGVjb2RlU3RhbmRhcmRMaWJyYXJ5KCkpOwogICAgIGlm
IChwYXJzZUZ1bGxTdGFuZGFyZExpYnJhcnkpIHsKICAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9
IHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdGFuZGFyZExpYnJhcnkuZ2V0KCksIFBhcnNpbmdNb2Rl
OjpTdGFuZGFyZExpYnJhcnksIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnkpOwotICAg
ICAgICBpZiAoIXBhcnNlUmVzdWx0KQorICAgICAgICBpZiAoIXBhcnNlUmVzdWx0Lmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0LmVycm9y
KCkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTg0LDcgKzg0LDcgQEAgRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IGluY2x1ZGVTdGFuZGFyZExpYnJhcnkoUHJvZ3JhbSYgcHJvZ3JhbSwg
UGFyc2VyJiBwYXJzZXIsIGIKIAogICAgIGF1dG8gc3RyaW5nVmlldyA9IFN0cmluZ1ZpZXcoc3Rh
bmRhcmRMaWJyYXJ5LmdldCgpKS5zdWJzdHJpbmcoMCwgZmlyc3RGdW5jdGlvbk9mZnNldEluU3Rh
bmRhcmRMaWJyYXJ5KCkpOwogICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZXIucGFyc2UocHJv
Z3JhbSwgc3RyaW5nVmlldywgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSwgQVNUOjpOYW1l
U3BhY2U6OlN0YW5kYXJkTGlicmFyeSk7Ci0gICAgaWYgKCFwYXJzZVJlc3VsdCkKKyAgICBpZiAo
IXBhcnNlUmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
cGFyc2VSZXN1bHQuZXJyb3IoKSk7CiAKICAgICBOYW1lRmluZGVyIG5hbWVGaW5kZXI7CkBAIC0x
MTUsNyArMTE1LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IGluY2x1ZGVTdGFuZGFyZExpYnJh
cnkoUHJvZ3JhbSYgcHJvZ3JhbSwgUGFyc2VyJiBwYXJzZXIsIGIKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGF1dG8gc3RhcnQgPSBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXpl
KCk7CiAgICAgICAgICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnBhcnNlKHByb2dyYW0s
IHN0cmluZ1ZpZXcsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnksIEFTVDo6TmFtZVNwYWNl
OjpTdGFuZGFyZExpYnJhcnkpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVJlc3VsdCkKKyAgICAg
ICAgICAgIGlmICghcGFyc2VSZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKHBhcnNlUmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRp
b25zKCkuc2l6ZSgpICE9IHN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5j
cHAKaW5kZXggMzE3ZDBjNWZiZWNlNDQ5MTgwNTk3MjBhNDViZGNmODQxYmE0NzQxZi4uZTVmYTk5
Mjk4NmI5YmExNTI0OTlhOGRlOWQ3NGU5NjQ0NDFlOGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNp
emVDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgfQog
CiAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0
b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2Nr
KCksIFdURjo6bnVsbG9wdCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkpOwotICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUo
ZGVmYXVsdENvbnN0cnVjdG9yKSkpCisgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92
ZShkZWZhdWx0Q29uc3RydWN0b3IpKS5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1
Y3RvciIpKTsKICAgICB9CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJv
cj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0
aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3Ry
LCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNp
bmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChX
VEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQorICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5k
KFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQg
Y29uc3RydWN0b3IiKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlv
bkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKaW5kZXggMmE3ZTBkNjk2MDdlZDM5
YWUwNTVmZTAwYWRjOWIxOWRmOTUwYWUxYS4uMmZjZmNkMTBiNzk3MzM1YTBiY2Q4NDdhYmMxMTll
M2FkM2U1OWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmNwcApAQCAtNDgsNyArNDgsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBw
YXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7CiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24yKSk7CiAg
ICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmli
dXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRp
b24sIHByb2dyYW0uaW50cmluc2ljcygpLmJvb2xUeXBlKCkpLCAib3BlcmF0b3I9PSJfc3RyLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3Rh
bmRhcmRMaWJyYXJ5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQorICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFw
cGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKS5oYXNfdmFsdWUoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUg
b3BlcmF0b3I9PSBmb3IgZW51bSB0eXBlLiIpKTsKICAgICAgICAgfQogCkBAIC01Nyw3ICs1Nyw3
IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMo
UHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwogICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxv
Y2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgZW51bWVyYXRpb25E
ZWZpbml0aW9uLT50eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVy
cyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsK
LSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKSkpCisgICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpLmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSBjb3B5IGNvbnN0cnVjdG9y
IGZvciBlbnVtIHR5cGUuIikpOwogICAgICAgICB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgRXhwZWN0
ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBw
cm9ncmFtKQogICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJz
OwogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0
aW9uKSk7CiAgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIs
IFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpT
dGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92
ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCisgICAgICAgICAgICBpZiAoIXByb2dyYW0u
YXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpLmhhc192YWx1ZSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0
ZSAnb3BlcmF0b3IgY2FzdCcgZm9yIGVudW0gdHlwZS4iKSk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5o
CmluZGV4IDE1N2MyNTU5MWY2NDFhZTRiZDc2YWNiNTI3NGY5YjY4YWQ3ZDZjZjUuLjQ3MmJkZWFi
YWM0YjQwMDI1ZmJmY2ZmYjZhZmNkNDM5ZWM3NzEzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCkBAIC0xNzcsNyArMTc3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlRlcm5hcnlFeHByZXNzaW9u
Jik7CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKTsKIAot
ICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhbV9leHBlY3RlZEVycm9yOyB9Cisg
ICAgYm9vbCBoYXNFcnJvcigpIGNvbnN0IHsgcmV0dXJuICFtX2V4cGVjdGVkRXJyb3IuaGFzX3Zh
bHVlKCk7IH0KICAgICBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gcmVzdWx0KCkgeyByZXR1cm4gbV9l
eHBlY3RlZEVycm9yOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGNoZWNrRXJy
b3JBbmRWaXNpdChUJiB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA2MDdiNWQxMGIwNjJkOTkzYWJhZWIzNmMwOWE0OTM4MDhmZmY0
NDliLi5lNzVmMWY3MDc1MThmYTdjMDhjMmVkNzUyN2E3MDA1ZDc1YzZlYTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKIEpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogewogICAgIGF1dG8gcmVzdWx0ID0gZXZhbHVhdGVJbldvcmxkKHNvdXJjZUNvZGUsIHdvcmxk
KTsKLSAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9
OworICAgIHJldHVybiByZXN1bHQuaGFzX3ZhbHVlKCkgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6
SlNWYWx1ZSB7IH07CiB9CiAKIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCkBAIC01NzYsNyArNTc2LDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNj
cmkKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZEln
bm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBleGVjdXRl
U2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxv
cHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52YWx1
ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKKyAgICByZXR1cm4gcmVzdWx0Lmhhc192YWx1ZSgpID8g
cmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9OwogfQogCiBWYWx1ZU9yRXhjZXB0aW9u
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKQEAgLTY5OSw3ICs2
OTksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKHdvcmxkLCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUpOwotICAgIHJldHVybiByZXN1bHQg
PyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CisgICAgcmV0dXJuIHJlc3VsdC5o
YXNfdmFsdWUoKSA/IHJlc3VsdC52YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKIHsKQEAgLTcxMCw3ICs3MTAsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwoRE9N
V3JhcAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBh
dXRvIGFsbG93ZWQgPSBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpOwotICAg
IGlmICghYWxsb3dlZCkKKyAgICBpZiAoIWFsbG93ZWQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChhbGxvd2VkLmVycm9yKCkpOwogCiAgICAgZG9jdW1lbnQuc2V0
SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkCiB7CiAgICAgYXV0byByZXN1bHQgPSBleGVjdXRlVXNlckFnZW50
U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICAK
LSAgICBpZiAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0
aW9uOjpObyB8fCAhcmVzdWx0IHx8ICFyZXN1bHQudmFsdWUoKS5pc09iamVjdCgpKSB7CisgICAg
aWYgKHBhcmFtZXRlcnMucnVuQXNBc3luY0Z1bmN0aW9uID09IFJ1bkFzQXN5bmNGdW5jdGlvbjo6
Tm8gfHwgIXJlc3VsdC5oYXNfdmFsdWUoKSB8fCAhcmVzdWx0LnZhbHVlKCkuaXNPYmplY3QoKSkg
ewogICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IGUxMjJhNGUzZGVkZTQxMmNhYTliYzllNmE3NjhjOTNiMDlkNDAw
ODkuLjAxMzVkYjZhY2E3M2I5Njc5ZWViYWZhY2Q2YjljNDZiNTAxODhmMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTIz
LDcgKzEyMyw3IEBAIEpTQzo6SWRlbnRpZmllciBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUo
SlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZU1vZHVsZVNwZWNp
ZmllcihtX2NvbnRleHQsIG1fb3duZXJUeXBlLCBzcGVjaWZpZXIsIGJhc2VVUkwpOwotICAgIGlm
ICghcmVzdWx0KSB7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgSlND
Ojp0aHJvd1R5cGVFcnJvcihqc0dsb2JhbE9iamVjdCwgc2NvcGUsIHJlc3VsdC5lcnJvcigpKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0zMjksNyArMzI5LDcgQEAgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjppbXBvcnRNb2R1bGUoSlNDOjpKU0ds
b2JhbE9iamVjdCoganMKIAogICAgIGF1dG8gc3BlY2lmaWVyID0gbW9kdWxlTmFtZS0+dmFsdWUo
anNHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZU1vZHVsZVNwZWNpZmll
cihtX2NvbnRleHQsIG1fb3duZXJUeXBlLCBzcGVjaWZpZXIsIGJhc2VVUkwpOwotICAgIGlmICgh
cmVzdWx0KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gcmVq
ZWN0UHJvbWlzZShnbG9iYWxPYmplY3QsIFR5cGVFcnJvciwgcmVzdWx0LmVycm9yKCkpOwogCiAg
ICAgcmV0dXJuIEpTQzo6aW1wb3J0TW9kdWxlKGpzR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlc3VsdC0+c3RyaW5nKCkpLCBwYXJhbWV0ZXJzLCBKU0M6OkpT
U2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKHZtLCBXVEZNb3ZlKHNjcmlwdEZldGNoZXIpICkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjZjOGFlNDFlZmIzYmRkY2EyNzg1ZWY5ZDUyZDhkYzYx
ZDM5NWYzYi4uMjEzZDJiZWNiNDgwNmE0YWEyMmQzYWU4N2IwZjNmZTMyYzIwZDZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NDU5LDcgKzc0NTksNyBAQCB2b2lkIERvY3VtZW50Ojpl
bnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIAogICAg
IC8vIFVzZSB0aGUgSlMgZmlsZSBwcm92aWRlZCBieSB0aGUgQ2hyb21lIGNsaWVudCwgb3IgZmFs
bGJhY2sgdG8gdGhlIGRlZmF1bHQgb25lLgogICAgIFN0cmluZyBqc1N0cmluZyA9IHBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTY3JpcHQoKTsKLSAgICBpZiAoIWpzU3RyaW5n
IHx8ICFzY3JpcHRDb250cm9sbGVyLnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygqdGhpcykp
CisgICAgaWYgKCFqc1N0cmluZyB8fCAhc2NyaXB0Q29udHJvbGxlci5zaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoKnRoaXMpLmhhc192YWx1ZSgpKQogICAgICAgICBqc1N0cmluZyA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHBsdWdJbnNKYXZhU2NyaXB0LCBzaXplb2YocGx1
Z0luc0phdmFTY3JpcHQpKTsKIAogICAgIHNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMjAzN2Nm
ZjNlOWZmM2RkZDE3OTg3NGEzYzU2MGY0Mjg4YmFlZWNjMi4uMTU3MDEwYTkwNzNkNGJmMjkxNzVl
M2NiNTg4OTcwZjExYWVjMmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTQzMCw3ICs0MzAsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAg
IH0KICAgICAKICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNlSUQgPSBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIoYXR0cmlidXRpb25Tb3VyY2VJREF0dHIpOwotICAgIGlmICghYXR0cmlidXRp
b25Tb3VyY2VJRCkgeworICAgIGlmICghYXR0cmlidXRpb25Tb3VyY2VJRC5oYXNfdmFsdWUoKSkg
ewogICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90
aGVyLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJhdHRyaWJ1dGlvbnNvdXJjZWlkIGlzIG5vdCBh
IG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50LiJfcyk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA1ZDEwMjZiOGZkNGQ0NjM3MjhhNGE4
ODU2NzdjOWRjYzM3MTNjMGI2Li5mYWViYWMxMmE5M2RmODhkNzY3ZDMwNjZkNWFhMmZiMjNkM2M5
NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBA
IHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8o
SFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAKIHVuc2lnbmVkIEhUTUxFbGVtZW50OjpwYXJzZUJvcmRl
cldpZHRoQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIGlm
IChhdXRvIG9wdGlvbmFsQm9yZGVyV2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
dmFsdWUpKQorICAgIGlmIChhdXRvIG9wdGlvbmFsQm9yZGVyV2lkdGggPSBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIodmFsdWUpOyBvcHRpb25hbEJvcmRlcldpZHRoLmhhc192YWx1ZSgpKQog
ICAgICAgICByZXR1cm4gb3B0aW9uYWxCb3JkZXJXaWR0aC52YWx1ZSgpOwogCiAgICAgcmV0dXJu
IGhhc1RhZ05hbWUodGFibGVUYWcpID8gMSA6IDA7CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmEKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSB0YWJpbmRleEF0dHIp
IHsKLSAgICAgICAgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9IHBhcnNlSFRNTEludGVnZXIo
dmFsdWUpKQorICAgICAgICBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50
ZWdlcih2YWx1ZSk7IG9wdGlvbmFsVGFiSW5kZXguaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBz
ZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6bnVsbG9wdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4OWU4ZmExYmU3OGE0
ZTFmZDEwNTRiZDQyMjcxNmJjYzA0NTI4NmUyLi4yNGQwMjQzOTc3Y2Y4NDk0NzUxYzEyMWJhNjMx
MzU1ZWMzYjJlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
QEAgLTQzNSw3ICs0MzUsNyBAQCB1bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aChib29s
IGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKICAgICAg
ICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFs
dWUKICAgICAgICAgYXV0byBvcHRpb25hbFdpZHRoID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSk7Ci0gICAgICAg
IGlmIChvcHRpb25hbFdpZHRoKQorICAgICAgICBpZiAob3B0aW9uYWxXaWR0aC5oYXNfdmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybiBvcHRpb25hbFdpZHRoLnZhbHVlKCk7CiAKICAgICAgICAg
Ly8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0aApAQCAtNDYwLDcgKzQ2
MCw3IEBAIHVuc2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cykKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sg
dGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFsdWUKICAgICAgICAg
YXV0byBvcHRpb25hbEhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIpKTsKLSAgICAgICAgaWYgKG9wdGlv
bmFsSGVpZ2h0KQorICAgICAgICBpZiAob3B0aW9uYWxIZWlnaHQuaGFzX3ZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gb3B0aW9uYWxIZWlnaHQudmFsdWUoKTsKIAogICAgICAgICAvLyBpZiB0
aGUgaW1hZ2UgaXMgYXZhaWxhYmxlLCB1c2UgaXRzIGhlaWdodApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5jcHAKaW5kZXggYmU4Y2I1YTk4Zjg3YmEzMWI4NjYyM2I2Y2RiMDI2
OGUzYzBlYzgyYy4uZjVjZDAwNmQxMTEzMDc1NDZmZGYzZDBlYTQzZGYxZjNkYjZiOGE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAvLyBNYXliZSB3ZSBzaG91bGQgcHV0IHRoaXMgaW50byB0aGUgaGVhZGVyIGZpbGUgZm9yIEV4
cGVjdGVkIGFuZCBnaXZlIGl0IGEgYmV0dGVyIG5hbWUuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBFPiBpbmxpbmUgT3B0aW9uYWw8VD4gb3B0aW9uYWxWYWx1ZShFeHBlY3RlZDxULCBF
PiYmIGV4cGVjdGVkKQogewotICAgIHJldHVybiBleHBlY3RlZCA/IE9wdGlvbmFsPFQ+KFdURk1v
dmUoZXhwZWN0ZWQudmFsdWUoKSkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBleHBlY3Rl
ZC5oYXNfdmFsdWUoKSA/IE9wdGlvbmFsPFQ+KFdURk1vdmUoZXhwZWN0ZWQudmFsdWUoKSkpIDog
V1RGOjpudWxsb3B0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDI1MGZiMjQ3YjIwYTY1MDExMTkwYWFiZjRhMzQ3YWY1
YzQzYjUxMTAuLjMzMmUzODcyYzNhNjZkYmI3N2UwYWM5YTkwMjQyOTQwMmMwN2JiMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdW5z
aWduZWQgSW1hZ2VJbnB1dFR5cGU6OmhlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBhZGp1
c3RGb3JBYnNvbHV0ZVpvb20oZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpLmNvbnRlbnRI
ZWlnaHQoKSwgKnJlbmRlcmVyKTsKIAogICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3Qg
Zm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgotICAgIGlmIChhdXRvIG9wdGlvbmFsSGVpZ2h0
ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0cikpKQorICAgIGlmIChhdXRvIG9wdGlvbmFsSGVpZ2h0
ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0cikpOyBvcHRpb25hbEhlaWdodC5oYXNfdmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuIG9wdGlvbmFsSGVpZ2h0LnZhbHVlKCk7CiAKICAgICAvLyBJZiB0aGUg
aW1hZ2UgaXMgYXZhaWxhYmxlLCB1c2UgaXRzIGhlaWdodC4KQEAgLTIwNCw3ICsyMDQsNyBAQCB1
bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgoKSBjb25zdAogICAgICAgICByZXR1cm4gYWRq
dXN0Rm9yQWJzb2x1dGVab29tKGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jb250ZW50
V2lkdGgoKSwgKnJlbmRlcmVyKTsKIAogICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3Qg
Zm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgotICAgIGlmIChhdXRvIG9wdGlvbmFsV2lkdGgg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih3aWR0aEF0dHIpKSkKKyAgICBpZiAoYXV0byBvcHRpb25hbFdpZHRoID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24od2lkdGhBdHRyKSk7IG9wdGlvbmFsV2lkdGguaGFzX3ZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBvcHRpb25hbFdpZHRoLnZhbHVlKCk7CiAKICAgICAvLyBJZiB0aGUgaW1hZ2Ug
aXMgYXZhaWxhYmxlLCB1c2UgaXRzIHdpZHRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA3Njc5ODQ2N2UzNDA0NmZjZGI1ZTU2NGZi
OTFlN2ZhMzQyNGM0MmFiLi5mY2M0ZDk0YWE1MjZkNTllNTBiNjkzNmYwZDVjZjlkMTYzYjIxOTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cApAQCAtMjEwLDcgKzIxMCw3IEBAIEV4cGVjdGVkPGludCwgSFRNTEludGVnZXJQYXJzaW5nRXJy
b3I+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIEV4cGVjdGVkPHVuc2lnbmVk
LCBIVE1MSW50ZWdlclBhcnNpbmdFcnJvcj4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0
cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFNpZ25lZFJlc3VsdCA9IHBhcnNl
SFRNTEludGVnZXIoaW5wdXQpOwotICAgIGlmICghb3B0aW9uYWxTaWduZWRSZXN1bHQpCisgICAg
aWYgKCFvcHRpb25hbFNpZ25lZFJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKFdURk1vdmUob3B0aW9uYWxTaWduZWRSZXN1bHQuZXJyb3IoKSkpOwogCiAg
ICAgaWYgKG9wdGlvbmFsU2lnbmVkUmVzdWx0LnZhbHVlKCkgPCAwKQpAQCAtMjI5LDcgKzIyOSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgfQogCiAgICAgYXV0byBvcHRpb25hbFNp
Z25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKHBvc2l0aW9uLCBlbmQpOwotICAg
IGlmICghb3B0aW9uYWxTaWduZWRWYWx1ZSB8fCBvcHRpb25hbFNpZ25lZFZhbHVlLnZhbHVlKCkg
PCAwKQorICAgIGlmICghb3B0aW9uYWxTaWduZWRWYWx1ZS5oYXNfdmFsdWUoKSB8fCBvcHRpb25h
bFNpZ25lZFZhbHVlLnZhbHVlKCkgPCAwKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIG9wdGlvbmFsU2lnbmVkVmFsdWUudmFsdWUoKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVy
VHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhYwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gb3B0aW9uYWxOdW1iZXIgPSBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIodGltZVN0cmluZyk7Ci0gICAgICAgIGlmICghb3B0aW9uYWxOdW1iZXIp
CisgICAgICAgIGlmICghb3B0aW9uYWxOdW1iZXIuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHRpbWUgPSBvcHRpb25hbE51bWJlci52YWx1ZSgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRl
eCA1Mzg1Yzk2NTI2MTc2OTJkZjY2MmNiODFmNWZlODgxOTFiOWNlMTZhLi4xZTkxMGI3Y2NiNzM4
OTRkMzFlMTg5NzVmMDRhNWJmNWNiMzY3Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0xMzksNyArMTM5LDcgQEAgaW5saW5lIHVuc2ln
bmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyhTdHJp
bmdWaWV3IHN0cmkKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlID4gMCk7CiAgICAgQVNTRVJUKGRl
ZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAgICBhdXRvIG9wdGlv
bmFsVmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpOwotICAg
IHVuc2lnbmVkIHZhbHVlID0gb3B0aW9uYWxWYWx1ZSAmJiBvcHRpb25hbFZhbHVlLnZhbHVlKCkg
PyBvcHRpb25hbFZhbHVlLnZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7CisgICAgdW5zaWduZWQgdmFs
dWUgPSBvcHRpb25hbFZhbHVlLmhhc192YWx1ZSgpICYmIG9wdGlvbmFsVmFsdWUudmFsdWUoKSA/
IG9wdGlvbmFsVmFsdWUudmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTsKICAgICBBU1NFUlQodmFsdWUg
PiAwKTsKICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAg
ICAgcmV0dXJuIHZhbHVlOwpAQCAtMTY2LDcgKzE2Niw3IEBAIGlubGluZSB1bnNpZ25lZCBjbGFt
cEhUTUxOb25OZWdhdGl2ZUludGVnZXJUb1JhbmdlKFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVu
c2lnCiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA+PSBtaW4pOwogICAgIEFTU0VSVChkZWZhdWx0
VmFsdWUgPD0gbWF4KTsKICAgICBhdXRvIG9wdGlvbmFsVmFsdWUgPSBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpOwotICAgIGlmIChvcHRpb25hbFZhbHVlKQorICAgIGlm
IChvcHRpb25hbFZhbHVlLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rk
OjptYXgob3B0aW9uYWxWYWx1ZS52YWx1ZSgpLCBtaW4pLCBtYXgpOwogCiAgICAgcmV0dXJuIG9w
dGlvbmFsVmFsdWUuZXJyb3IoKSA9PSBIVE1MSW50ZWdlclBhcnNpbmdFcnJvcjo6UG9zaXRpdmVP
dmVyZmxvdyA/IG1heCA6IGRlZmF1bHRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBjNTNh
OTk3MDU5NDQ4ODViYjJkOTM3MGZkMGNmYTUzYmM1NjhlYmIwLi41NjUyMDI2NjI4ODhmODAxZDll
ZTQ1MDQyMzc5ZDEwMDMyOWRjYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0zMjcsMTEgKzMy
NywxMSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hl
ZFdpbmRvd0hlaWdodCgpCiAKIE9wdGlvbmFsPGJvb2w+IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKIHsKLSAgICBpZiAoIXJlc3VsdCkKKyAg
ICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAogICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1ZSgpOwotICAgIGlmICgh
dmFsdWVPckV4Y2VwdGlvbikgeworICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbi5oYXNfdmFsdWUo
KSkgewogICAgICAgICBMT0coSW5zcGVjdG9yLCAiRW5jb3VudGVyZWQgZXhjZXB0aW9uIHdoaWxl
IGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6ICVzIiwgdmFsdWVPckV4Y2VwdGlvbi5lcnJv
cigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDAwZTY5ZjFhYTJlM2Y4ZWEyZjQ0NWU4ZGQ0
NDZkZDE2ZWE2MzYzZGYuLmFhOGYwMzVmNWVkNjdiNjcwM2E4MDFkNWMwNDViMTg4NGJhOWEzMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVu
dGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gUGFnZVJ1bnRpbWVBZ2VudDo6ZW5hYmxlKCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yUnVudGltZUFnZW50OjplbmFibGUoKTsK
LSAgICBpZiAoIXJlc3VsdCkKKyAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIFJlcG9ydCBpbml0aWFsIGNvbnRleHRzIGJlZm9yZSBl
bmFibGluZyBpbnN0cnVtZW50YXRpb24gYXMgdGhlIHJlcG9ydGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBhMTQ4YTYy
MDFmMzE2OWJmNGJhZTE1ZTYwMDY3YjdjNTg1ZDIyYTU2Li44ZTg3N2JkMGQxY2Y5ZmM2NzUzMWQ3
YTIzNTRkMTFiNGU2MmM2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEV4cGVjdGVkPHZv
aWQsIFN0cmluZz4gdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiUHJlZmxpZ2h0IHJl
c3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zKTsKIAogICAgIGF1dG8gYWNjZXNzQ29udHJvbENo
ZWNrUmVzdWx0ID0gcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGNoZWNrRGlzYWJsZXIpOwotICAgIGlmICgh
YWNjZXNzQ29udHJvbENoZWNrUmVzdWx0KQorICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVz
dWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0
OwogCiAgICAgYXV0byByZXN1bHQgPSBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRl
bTo6Y3JlYXRlKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCByZXNwb25zZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmlu
ZGV4IDU4MGNkNzk5ZDFkMGFiNzAxOWVjM2VjZDk0YzFkNTlkMzM3ZTE4ZjkuLmMzY2EwMzc1ZDVh
MTFjYjNiMzI2ODI3ZTlmYWMwZjZhMGU3OGM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGF0ZVByZWZsaWdodFJl
c3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvCiAgICAgQVNTRVJUKGZyYW1lKTsKIAogICAgIGF1
dG8gcmVzdWx0ID0gV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShyZXF1ZXN0LCBy
ZXNwb25zZSwgbG9hZGVyLm9wdGlvbnMoKS5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbG9hZGVy
LnNlY3VyaXR5T3JpZ2luKCksICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVy
OjpzaW5nbGV0b24oKSk7Ci0gICAgaWYgKCFyZXN1bHQpIHsKKyAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgcmVzdWx0LmVycm9yKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDliNjNlNDY4ODAxYTBkZmJlODVkMDA5MGQ2ZDk1YjcyMDM1NDEwZTEuLmY3NmIxODc1ODUy
MjRhY2Q5YWM5M2VhYmI2YTk3Y2ZlNGYyMDY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02NDEsNyArNjQxLDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICAgICAgICAgICAgICBBU1NFUlQobV9vcHRpb25z
Lm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKICAgICAgICAgICAgICAgICByZXNw
b25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6Q29ycyk7CiAgICAg
ICAgICAgICAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBwYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2socmVzcG9uc2UsIG1fb3B0aW9ucy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
c2VjdXJpdHlPcmlnaW4oKSwgJkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6
OnNpbmdsZXRvbigpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jl
c3VsdCkgeworICAgICAgICAgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0Lmhh
c192YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yQW5kRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBhY2Nl
c3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNz
Q29udHJvbCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODcx
OTJkZjdlYTRkOThlOWVkNDM0NDU4ODIyZTE5NGViNzA2ZWE5OS4uMGI5Y2UyYWM0ZDdiM2I4ZTlk
NjA1NGQ4MTk3NDY4MjhiZGUxYjdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwg
Y28KICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0ID0g
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChyZXF1ZXN0KCksIHJlZGly
ZWN0UmVzcG9uc2UsIG5ld1JlcXVlc3QpOwotICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVj
a1Jlc3VsdCkgeworICAgICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5oYXNfdmFs
dWUoKSkgewogICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9z
cy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBk
ZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3ND
b250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBt
X2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UpOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29tCiAgICAgfQogCiAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBj
aGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJlc3BvbnNlKTsKLSAgICBpZiAo
IWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkgeworICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNr
UmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgYWNjZXNz
Q29udHJvbENoZWNrUmVzdWx0LmVycm9yKCkpOwogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mg
b3JpZ2luIGFjY2VzcyBjb250cm9sIik7CkBAIC02NDcsNyArNjQ3LDcgQEAgRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBTdWJyZXNvdXJjZUxvYWRlcjo6Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2lu
QWNjZXNzQ29udHIKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsKICAgICAgICAgaWYgKGNyb3Nz
T3JpZ2luRmxhZykgewogICAgICAgICAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQg
PSBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVkaXJlY3RSZXNwb25zZSwgb3B0aW9ucygpLnN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKSk7Ci0gICAgICAgICAgICBpZiAoIWFjY2Vzc0Nv
bnRyb2xDaGVja1Jlc3VsdCkKKyAgICAgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVz
dWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBhY2Nlc3NDb250cm9sQ2hl
Y2tSZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBjMTJlNzM3ZDlkYjUwNjczMGY1MjFkNGQyZTE1
OGZlMWM2MWQ5MTJlLi4yZDNjZTZlYWZhYjc0Yzg0YWQ3MWU0M2M5ZWY0OTExZjU5ZTAxY2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTMwNiw3ICszMDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW4oKSAmJiBtX29wdGlv
bnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKICAgICAgICAgQVNTRVJUKG1f
b3JpZ2luKTsKICAgICAgICAgYXV0byBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQgPSBXZWJDb3Jl
OjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzb3VyY2UucmVzcG9uc2UoKSwgbV9vcHRpb25z
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sICZDcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKSk7Ci0gICAgICAgIGlmICghYWNjZXNzQ29u
dHJvbENoZWNrUmVzdWx0KSB7CisgICAgICAgIGlmICghYWNjZXNzQ29udHJvbENoZWNrUmVzdWx0
Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBzZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJy
b3IoU3RyaW5nKCksIDAsIHVybCgpLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4YWVmNDM2MmVhYmEyNmNiMTNhOTM3NDA3MjQ0MDUy
ZDNlMTg2M2U2Li45MzNiNzgxZmQyNTViMTE5MWRlOTM5MGJjNzNmYjI4ZWUxZDZlMTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyB1bnVzZWRQcmVs
b2FkVGltZW91dCB7IDNfcyB9OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiBz
dGF0aWMgaW5saW5lIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxUPj4gY2Fz
dENhY2hlZFJlc291cmNlVG8oUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPFU+
PiYmIGNhY2hlZFJlc291cmNlKQogewotICAgIGlmIChjYWNoZWRSZXNvdXJjZSkKKyAgICBpZiAo
Y2FjaGVkUmVzb3VyY2UuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxUPiB7IHN0YXRpY19jYXN0PFQqPihjYWNoZWRSZXNvdXJjZS52YWx1ZSgpLmdldCgp
KSB9OwogICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsK
IH0KQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAg
IHJlcXVlc3Quc2V0Q2hhcnNldChtX2RvY3VtZW50LT5jaGFyc2V0KCkpOwogCiAgICAgYXV0byBy
ZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBGb3JQcmVs
b2FkOjpZZXMpOwotICAgIGlmIChyZXNvdXJjZSAmJiAoIW1fcHJlbG9hZHMgfHwgIW1fcHJlbG9h
ZHMtPmNvbnRhaW5zKHJlc291cmNlLnZhbHVlKCkuZ2V0KCkpKSkgeworICAgIGlmIChyZXNvdXJj
ZS5oYXNfdmFsdWUoKSAmJiAoIW1fcHJlbG9hZHMgfHwgIW1fcHJlbG9hZHMtPmNvbnRhaW5zKHJl
c291cmNlLnZhbHVlKCkuZ2V0KCkpKSkgewogICAgICAgICBhdXRvIHJlc291cmNlVmFsdWUgPSBy
ZXNvdXJjZS52YWx1ZSgpOwogICAgICAgICAvLyBGb250cyBuZWVkIHNwZWNpYWwgdHJlYXRtZW50
IHNpbmNlIGp1c3QgY3JlYXRpbmcgdGhlIHJlc291cmNlIGRvZXNuJ3QgdHJpZ2dlciBhIGxvYWQu
CiAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggNGFmNDAxZDZhZDJk
MTYxZjc1MmU0MjgyMDUzZTAwNmM1YjlkMWUwOS4uZWFhNzBkMTIxY2EzNTA2ZDMxNTQwZWFkYzFj
YTM0ZGIyZjhlNGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAgICAgfSBlbHNlIGlmIChu
YW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsK
LSAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdl
cih2YWx1ZSkpCisgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9IHBhcnNl
SFRNTEludGVnZXIodmFsdWUpOyBvcHRpb25hbFRhYkluZGV4Lmhhc192YWx1ZSgpKQogICAgICAg
ICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYgZXZlbnROYW1lID0gSFRNTEVsZW1lbnQ6OmV2ZW50
TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggYTM2MTJmMWZmMjgzODkwYmZkMzQ4YmYzNDFjYmIxNmZhOGM1YTQyMy4uNGFmMzgxNjBjZmFh
MGI5OWU5MjA0NmFhMTE4OWM0ZDczOWNlOTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTY5
OCw3ICs2OTgsNyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+
dXJsKCksIHNjcmlwdC5hbGxvd2xpc3QoKSwgc2NyaXB0LmJsb2NrbGlzdCgpKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGlmICghbV9zY3JpcHQtPnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygq
ZG9jdW1lbnQpKQorICAgIGlmICghbV9zY3JpcHQtPnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0
cygqZG9jdW1lbnQpLmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBkb2N1bWVu
dC0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlw
ZWxpbmVNZXRhbC5tbQppbmRleCA0MDdlZTRhYTMwNjdiZjEyYTlhMGIyOTE3ZWY0NDMyZWQwNjFi
Y2Y0Li4zNWQ0YjdlOGMxYWJhNTc4ODk3MGJkZjI5NjVjYjY5MDZkZTlkOTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBp
cGVsaW5lTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRp
YyBPcHRpb25hbDxXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnM+IHRyeVNldEZ1bmN0aW9ucyhjb25z
dCBHUFVQcm9ncmFtbWFibGVTCiAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+ZW50cnlQb2ludE5h
bWUgPSBjb21wdXRlU3RhZ2UuZW50cnlQb2ludDsKIAogICAgICAgICBhdXRvIHdobHNsQ29tcGls
ZVJlc3VsdCA9IFdITFNMOjpwcmVwYXJlKCpjb21wdXRlU3RhZ2UubW9kdWxlLT53aGxzbE1vZHVs
ZSgpLCAqd2hsc2xEZXNjcmlwdG9yKTsKLSAgICAgICAgaWYgKCF3aGxzbENvbXBpbGVSZXN1bHQp
IHsKKyAgICAgICAgaWYgKCF3aGxzbENvbXBpbGVSZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAg
ICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3RyaW5nKCJXSExT
TCBjb21waWxlIGVycm9yOiAiLCB3aGxzbENvbXBpbGVSZXN1bHQuZXJyb3IoKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbQppbmRleCAxNTk5ZjBiYTIyOWQ0YWZiZGFiYTdkZmNiYmJiZjgz
OTk5NTNhZTE3Li5hNjk1ODQzMmFkNzY1Yjg0YTJlMzY0NGY2YmUzZGFkMTE1NTIxNTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQpAQCAtMzkyLDcgKzM5Miw3IEBA
IHN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3ImIHZlcnRleFN0YWdlLCBjCiAgICAgICAgICAgICB3aGxzbERlc2NyaXB0b3ItPmZy
YWdtZW50RW50cnlQb2ludE5hbWUgPSBmcmFnbWVudFN0YWdlLT5lbnRyeVBvaW50OwogCiAgICAg
ICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0ID0gV0hMU0w6OnByZXBhcmUoKnZlcnRleFN0YWdl
Lm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgZnJhZ21lbnRTdGFnZSA/IGZyYWdtZW50U3RhZ2UtPm1v
ZHVsZS0+d2hsc2xNb2R1bGUoKSA6IG51bGxwdHIsICp3aGxzbERlc2NyaXB0b3IpOwotICAgICAg
ICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgeworICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJl
c3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVm
aXhlZEVycm9yKG1ha2VTdHJpbmcoIldITFNMIGNvbXBpbGUgZXJyb3I6ICIsIHdobHNsQ29tcGls
ZVJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCA1Mjk2OTVmNzFjNmFiMWY0M2NjZTRmYjEzMGI4
NDQyMmU2MGY1ZjE5Li40YTc3MGMwOTg4OTJmNTdjMjRjNjNmODllYjM4MzQ1ZDhjNDZmNWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC00NjcsNyArNDY3LDcgQEAgTlNfQVNTVU1FX05P
Tk5VTExfRU5ECiAgICAgICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLmdldCgpLCBbc2Vs
Ziwgc3Ryb25nU2VsZiA9IFdURk1vdmUoc3Ryb25nU2VsZiksIHBvbmdIYW5kbGVyID0gV1RGTW92
ZShwb25nSGFuZGxlcildIChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCA9IDA7CiAg
ICAgICAgICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3I7Ci0gICAgICAgICAgICBpZiAocmVz
dWx0KQorICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBpbnRlcnZhbCA9IHJlc3VsdC52YWx1ZSgpLnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgZXJyb3IgPSByZXN1bHQuZXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCA1YzJkZjJlOGQ5NThiOWI0ZGM2ZDYwYWZmNDFlN2NlNmQxMzJjZmY2Li5l
MjgwOGEyYmYxOWQ3OWY4OWIwNTZhMTc1MDQ1ZGZmMTJmODZhYzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWwK
ICAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnRhYmluZGV4QXR0cikgewogICAgICAgICBpZiAo
dmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6
bnVsbG9wdCk7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9IHBhcnNl
SFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5k
ZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKTsgb3B0aW9uYWxUYWJJbmRleC5oYXNfdmFsdWUo
KSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZh
bHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmlu
ZGV4IDM4NTQ2ZTQwM2E0NGQwMDNiYzFhODc5MzU2MTU5YWNiMTg1MzUwNmUuLjUwYTFkY2U4Zjc2
ZjI2NjE5NTQ1MTYyYzQ0MWQ3MTljYWY3ZTQ3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcgogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZENvbXBsZXRlIGh0dHBfc3RhdHVzX2NvZGU9JWQiLCBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVByZWZs
aWdodFJlc3BvbnNlKG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1f
cGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9y
aWdpbiwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIuZ2V0KCkpOwotICAgIGlmICghcmVzdWx0KSB7
CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkQ29tcGxldGUsIEFjY2Vzc0NvbnRyb2wgZXJyb3I6ICVzIiwgcmVzdWx0LmVy
cm9yKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFJlc291
cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0LnVybCgpLCByZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGJjYjkxNzFkOGY5
MjFiYTIyNDMzZGZiN2EyMzg3Mzg2YWE0ZjI0ODcuLmQzYmFmY2VhOGU4Mzk3NzYxZDVhOTllMGJm
YzRhNmY0MTk3MTMwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBSZXNvdXJjZUVycm9y
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlcwogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byByZXN1bHQgPSBwYXNz
ZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
ICptX29yaWdpbiwgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXIuZ2V0KCkpOwotICAgIGlmICghcmVz
dWx0KQorICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvciB7IFN0cmluZyB7IH0sIDAsIG1fdXJsLCBXVEZNb3ZlKHJlc3VsdC5lcnJvcigpKSwg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9OwogCiAgICAgcmVzcG9uc2Uuc2V0
VGFpbnRpbmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6OkNvcnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDYzM2JlMzMxZGIwOGZmODMwOTM4M2NkYTVkOGU2YTAwYWYxMTI2YWQuLjIyYzZmOWY5ODMw
ZGEzMDk3MzQzZGI3ZDMyNzRiZmI5NTQ0NGVmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgyMyw3ICs4
MjMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogCiAgICAgT3B0aW9uYWw8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpCisg
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0
dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpOyByZXN1bHQuaGFzX3ZhbHVl
KCkpCiAgICAgICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEgPSByZXN1bHQudmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoIXJlc3VsdC5lcnJvcigp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCByZXN1bHQuZXJy
b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbQppbmRleCAyOWRjMTc0OThhNTZkNDE1NzlmZDIzMjVkMzA1OTBlOGViODVhNjNkLi40
OWRhMTcwY2IxMjVmMTI2YTgwNzgzOTM1ODg1MDE2YWVkOTgxZjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KQEAgLTIyNiw3ICsy
MjYsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRy
b2xsZXIoKS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJv
dGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewotICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewog
ICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVy
ZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0
LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI0
OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lv
bkNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQs
IFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0KSB7Cisg
ICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3Bl
Y3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IGQ3NDIwNDU5
N2M3OWY1MGI2YTNlY2FkZWZiYjljZmM1MDA3M2U2MGMuLjE3NDQ4MDg3ZDIzODY1ZGU5NjQ1YWM4
MDI0MDEzZDEwOTdjOTIzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtNzIsNyArNzIsNyBA
QAogLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZTooTlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25V
Ukw6KE5TVVJMICopdGFiSWNvblVSTCBzb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNTdHJpbmcgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICAgICBfZXh0ZW5zaW9uLT5jcmVhdGVUYWIodGFiTmFtZSwgdGFiSWNvblVSTCwg
c291cmNlVVJMLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9j
ayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxJbnNwZWN0b3I6
OkV4dGVuc2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkgewogICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxp
emVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJp
bmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTg2LDEzICs4NiwxMyBAQAogICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxGcmFtZVVS
TCA9IGZyYW1lVVJMID8gbWFrZU9wdGlvbmFsKFVSTChmcmFtZVVSTCkpIDogV1RGOjpudWxsb3B0
OwogICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlPcmlnaW4gPSBjb250
ZXh0U2VjdXJpdHlPcmlnaW4gPyBtYWtlT3B0aW9uYWwoVVJMKGNvbnRleHRTZWN1cml0eU9yaWdp
bikpIDogV1RGOjpudWxsb3B0OwogICAgIF9leHRlbnNpb24tPmV2YWx1YXRlU2NyaXB0KHNjcmlw
dFNvdXJjZSwgb3B0aW9uYWxGcmFtZVVSTCwgb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlPcmlnaW4s
IHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSldIChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkgewogICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxp
emVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJp
bmcocmVzdWx0LmVycm9yKCkpfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGF1dG8gdmFsdWVPckV4Y2VwdGlvbiA9IHJlc3VsdC52YWx1
ZSgpOwotICAgICAgICBpZiAoIXZhbHVlT3JFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKCF2YWx1
ZU9yRXhjZXB0aW9uLmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5z
RXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyh2YWx1ZU9yRXhjZXB0aW9uLmVycm9yKCkpLmdldCgp
LCBuaWwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDcsMTMgKzEwNywx
MyBAQAogICAgIE9wdGlvbmFsPFN0cmluZz4gb3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQg
PyBtYWtlT3B0aW9uYWwoU3RyaW5nKHVzZXJBZ2VudCkpIDogV1RGOjpudWxsb3B0OwogICAgIE9w
dGlvbmFsPFN0cmluZz4gb3B0aW9uYWxJbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0ID8g
bWFrZU9wdGlvbmFsKFN0cmluZyhpbmplY3RlZFNjcmlwdCkpIDogV1RGOjpudWxsb3B0OwogICAg
IF9leHRlbnNpb24tPnJlbG9hZElnbm9yaW5nQ2FjaGUoaWdub3JlQ2FjaGUsIG9wdGlvbmFsVXNl
ckFnZW50LCBvcHRpb25hbEluamVjdGVkU2NyaXB0LCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSldIChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkgewogICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5T
TG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9y
VG9TdHJpbmcocmVzdWx0LmVycm9yKCkpIH1dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZh
bHVlKCk7Ci0gICAgICAgIGlmICghdmFsdWVPckV4Y2VwdGlvbikgeworICAgICAgICBpZiAoIXZh
bHVlT3JFeGNlcHRpb24uaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2so
bnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKHZhbHVlT3JFeGNlcHRpb24uZXJyb3IoKSkuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYzEzMDM5OWNmOWYzMDYzZjVhMmRjYzM5
MmUxOWVlZmQ3NjNjMTUzYS4uYmRiZDRkZTgwZWFmYTI1NTg3ZTgxYzFmN2Q3YmNkNTY1ZmVjZTJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAt
MTc0LDcgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQ
cm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25J
RCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJldGFpblB0cihleHRlbnNp
b25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6SW5z
cGVjdG9yRXh0ZW5zaW9uPiwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2Fs
aXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKSB9XSwgbmlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLT51bnJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBO
U0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJv
clRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKSB9XSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwCmluZGV4IGI5ZmRhMjhlYTkwNzI0YWM2ZjVkY2Q1ZmQ5M2YzODQyNmQ3NDIwZTQuLjJlZjRm
ODJiYTdkNjI4NjAxZDIyN2I2ODY2YTdiYzgwMzgxZjA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3I6OgogICAgICAgICB9CiAKICAgICAgICAgd2Vha1RoaXMtPm1f
aW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIGRp
c3BsYXlOYW1lIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vha1RoaXMuZ2V0KCkpLCBleHRl
bnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvcgogICAgICAgICB9CiAKICAgICAgICAgd2Vha1RoaXMt
Pm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25J
RCB9LCBbc3Ryb25nVGhpcyA9IG1ha2VSZWYoKndlYWtUaGlzLmdldCgpKSwgZXh0ZW5zaW9uSUQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEV4cGVjdGVk
PGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcAppbmRleCBhNDc0ZmEyOTIyYWE2YzcyZGExMTg0NGU0YWVjYjJkMTVi
NDc5MzFlLi40ZTExMzVhYWU1ODY3YzU1MGRkYjZhYzBmYzUzOTVmZjE1ZjBhYzM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcigpCiAKIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VFeHRlbnNpb25FcnJvckZy
b21FdmFsdWF0aW9uUmVzdWx0KEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCByZXN1bHQpCiB7Ci0gICAgaWYgKCFyZXN1bHQpIHsKKyAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkgewogICAgICAgICBzd2l0Y2ggKHJlc3VsdC5lcnJvcigpKSB7CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0
aW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ6CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjpFeHRlbgogICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3Bs
YXlOYW1lKSwKICAgICB9OwogICAgIG1fZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24i
X3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXJlc3VsdCkgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJl
Z2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0CiAKICAgICBWZWN0b3I8UmVmPEpT
T046OlZhbHVlPj4gYXJndW1lbnRzIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCkg
fTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRj
aENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInVucmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUo
YXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXJlc3VsdCkgeworICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8ICFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0CiAKIEpTQzo6SlNPYmplY3QqIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6dW53cmFwRXZhbHVhdGlvblJlc3VsdEFzT2JqZWN0KEluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCiB7Ci0g
ICAgaWYgKCFyZXN1bHQpCisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVl
KCk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmNyZWF0ZVRhYkZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkUKICAgICAgICAg
SlNPTjo6VmFsdWU6OmNyZWF0ZShzb3VyY2VVUkwuc3RyaW5nKCkpLAogICAgIH07CiAgICAgbV9m
cm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0
aFJlc3VsdEFzeW5jKCJjcmVhdGVUYWJGb3JFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRz
KSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIXJlc3VsdCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQuaGFzX3Zh
bHVlKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdC52YWx1ZSgpLmhhc192YWx1ZSgpKTsKIAogICAgICAgICBKU0M6OkpT
VmFsdWUgZXJyb3JQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmpl
Y3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0o
KSwgImVycm9yIl9zKSk7CiAgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzVW5kZWZpbmVkKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MTRiMTA5YzlkMDU4NDNkNjg2NGJmM2UwYzU0OWRhZDZlMjg0YjM5My4uNjIxZWNiODdlYmVmYmM2
ODI1ZTg1NjE4ZDJkMjY5NTdkNTAzZGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2NDYsNyArMzY0Niw3IEBAIHZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVyCiAKICAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFt3b3JsZCA9IG1ha2VSZWYo
KndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Lmhhc192
YWx1ZSgpKSB7CiAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29ybGQod29ybGQucHRyKCkp
LAogICAgICAgICAgICAgICAgIHRvUmVmKGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xv
YmFsT2JqZWN0KHdvcmxkLT5jb3JlV29ybGQoKSksIHJlc3VsdC52YWx1ZSgpKSwgbnVsbHB0cik7
CiAgICAgICAgIH0KQEAgLTM2NTYsNyArMzY1Niw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
CiAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRh
KCk7CiAKICAgICAgICAgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlsczsKLSAgICAg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAg
ICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ5ZGU5N2U2NjhiYjQwMDI1N2M4YzJkNWE3YzdlNjUw
MTk3MjUzNjQuLmFlY2U2MDE3YzdkNjYxNTc4MTQ4NWUwOGIyMzYyMWY2ZDI5YWVhZGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAyMS0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIENvbnNpZGVyIHJlbW92aW5nIEV4cGVjdGVkOjpvcGVyYXRvciBib29s
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ3MDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnBhcnNlSFRNTEludGVnZXJGYWlscyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckZhaWxzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpk
dW1wVG9TdGRFcnIpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6b3V0cHV0VGV4dCk6
CisKIDIwMjEtMDQtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEaXNhYmxlIEFwcGxpY2F0aW9uQ2FjaGUgd2l0aCBsaW5rZWRPbk9yQWZ0
ZXIgY2hlY2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9I
VE1MUGFyc2VySWRpb21zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA0MTg2MDdhMzdlY2I5OTE3Yzc0ZjBkYzcwNmU2MzBi
YzNiNTkzNmI1Li5kNDQ0ZWM3ZWNmNGVmODc5ZjdmMTdjMzgwMjA3MmNiYzU0NTUxOTI3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9t
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
c3RhdGljIGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewog
ICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKLSAgICBF
WFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKKyAgICBFWFBFQ1RfVFJVRShvcHRpb25hbFJl
c3VsdC5oYXNfdmFsdWUoKSk7CiAgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDAp
OwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBp
bnB1dCkKIHsKLSAgICByZXR1cm4gIXBhcnNlSFRNTEludGVnZXIoaW5wdXQpOworICAgIHJldHVy
biAhcGFyc2VIVE1MSW50ZWdlcihpbnB1dCkuaGFzX3ZhbHVlKCk7CiB9CiAKIFRFU1QoV2ViQ29y
ZUhUTUxQYXJzZXJJZGlvbXMsIHBhcnNlSFRNTEludGVnZXIpCkBAIC0xMDAsMTMgKzEwMCwxMyBA
QCBURVNUKFdlYkNvcmVIVE1MUGFyc2VySWRpb21zLCBwYXJzZUhUTUxJbnRlZ2VyKQogc3RhdGlj
IHVuc2lnbmVkIHRlc3RQYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBp
bnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKGlucHV0KTsKLSAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKKyAgICBF
WFBFQ1RfVFJVRShvcHRpb25hbFJlc3VsdC5oYXNfdmFsdWUoKSk7CiAgICAgcmV0dXJuIG9wdGlv
bmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIHJldHVybiAhcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGlucHV0KTsKKyAgICByZXR1cm4gIXBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihpbnB1dCkuaGFzX3ZhbHVlKCk7CiB9CiAKIFRFU1QoV2ViQ29yZUhU
TUxQYXJzZXJJZGlvbXMsIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcikKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuY3BwCmluZGV4IGU2NDcxOGZiNjAzMmNiNWNiYTU1NThlMzIyNGQyM2ZiNGRlZmM3
NDUuLjQ3NWE3NGY2ZjU3YjBkNTdjMjY5NDFhYzU4ZWNkOTIwYzAxMDYzMWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcApAQCAtOTIsMzQgKzkyLDM0IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIFZhbGlkQ29udmVyc2lvblVSTHMpCiB7CiAgICAgY29uc3QgVVJMIGNvbnZlcnNp
b25VUkxXaXRob3V0UHJpb3JpdHkgeyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcvLndlbGwta25v
d24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEwIl9zIH07
CiAgICAgYXV0byBvcHRpb25hbENvbnZlcnNpb24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29udmVyc2lvblVSTFdpdGhvdXRQcmlvcml0eSk7Ci0g
ICAgQVNTRVJUX1RSVUUob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBBU1NFUlRfVFJVRShvcHRp
b25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwogICAgIEFTU0VSVF9FUShvcHRpb25hbENvbnZl
cnNpb24tPmRhdGEsICh1aW50MzJfdCkxMCk7CiAKICAgICBjb25zdCBVUkwgY29udmVyc2lvblVS
TFdpdGhvdXRQcmlvcml0eU1heEVudHJvcHkgeyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcvLndl
bGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzE1
Il9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRob3V0UHJpb3JpdHlNYXhF
bnRyb3B5KTsKLSAgICBBU1NFUlRfVFJVRShvcHRpb25hbENvbnZlcnNpb24pOworICAgIEFTU0VS
VF9UUlVFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNfdmFsdWUoKSk7CiAgICAgQVNTRVJUX0VRKG9w
dGlvbmFsQ29udmVyc2lvbi0+ZGF0YSwgKHVpbnQzMl90KTE1KTsKICAgICAKICAgICBjb25zdCBV
UkwgY29udmVyc2lvblVSTFdpdGhvdXRQcmlvcml0eUFuZExlYWRpbmdaZXJvIHsgeyB9LCAiaHR0
cHM6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJp
Z2dlci1hdHRyaWJ1dGlvbi8wMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJM
V2l0aG91dFByaW9yaXR5QW5kTGVhZGluZ1plcm8pOwotICAgIEFTU0VSVF9UUlVFKG9wdGlvbmFs
Q29udmVyc2lvbik7CisgICAgQVNTRVJUX1RSVUUob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1
ZSgpKTsKICAgICBBU1NFUlRfRVEob3B0aW9uYWxDb252ZXJzaW9uLT5kYXRhLCAodWludDMyX3Qp
Mik7CiAKICAgICBjb25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhQcmlvcml0eSB7IHsgfSwgImh0
dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3Ry
aWdnZXItYXR0cmlidXRpb24vMTAvMTIiX3MgfTsKICAgICBvcHRpb25hbENvbnZlcnNpb24gPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29udmVyc2lv
blVSTFdpdGhQcmlvcml0eSk7Ci0gICAgQVNTRVJUX1RSVUUob3B0aW9uYWxDb252ZXJzaW9uKTsK
KyAgICBBU1NFUlRfVFJVRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwogICAgIEFT
U0VSVF9FUShvcHRpb25hbENvbnZlcnNpb24tPmRhdGEsICh1aW50MzJfdCkxMCk7CiAgICAgQVNT
RVJUX0VRKG9wdGlvbmFsQ29udmVyc2lvbi0+cHJpb3JpdHksICh1aW50MzJfdCkxMik7CiAKICAg
ICBjb25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhQcmlvcml0eU1heEVudHJvcHkgeyB7IH0sICJo
dHRwczovL3dlYmtpdC5vcmcvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90
cmlnZ2VyLWF0dHJpYnV0aW9uLzE1LzYzIl9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNp
b25VUkxXaXRoUHJpb3JpdHlNYXhFbnRyb3B5KTsKLSAgICBBU1NFUlRfVFJVRShvcHRpb25hbENv
bnZlcnNpb24pOworICAgIEFTU0VSVF9UUlVFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNfdmFsdWUo
KSk7CiAgICAgQVNTRVJUX0VRKG9wdGlvbmFsQ29udmVyc2lvbi0+ZGF0YSwgKHVpbnQzMl90KTE1
KTsKICAgICBBU1NFUlRfRVEob3B0aW9uYWxDb252ZXJzaW9uLT5wcmlvcml0eSwgKHVpbnQzMl90
KTYzKTsKICAgICAKICAgICBjb25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhQcmlvcml0eUFuZExl
YWRpbmdaZXJvIHsgeyB9LCAiaHR0cHM6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUt
Y2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xMC8wMiJfcyB9OwogICAgIG9w
dGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0
aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0aFByaW9yaXR5QW5kTGVhZGluZ1plcm8pOwotICAg
IEFTU0VSVF9UUlVFKG9wdGlvbmFsQ29udmVyc2lvbik7CisgICAgQVNTRVJUX1RSVUUob3B0aW9u
YWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKICAgICBBU1NFUlRfRVEob3B0aW9uYWxDb252ZXJz
aW9uLT5kYXRhLCAodWludDMyX3QpMTApOwogICAgIEFTU0VSVF9FUShvcHRpb25hbENvbnZlcnNp
b24tPnByaW9yaXR5LCAodWludDMyX3QpMik7CiB9CkBAIC0xOTAsNTUgKzE5MCw1NSBAQCBURVNU
KFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlkQ29udmVyc2lvblVSTHMpCiB7CiAgICAg
Y29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoU2luZ2xlRGlnaXRDb252ZXJzaW9uRGF0YSB7IHsg
fSwgImh0dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVt
ZW50L3RyaWdnZXItYXR0cmlidXRpb24vMiJfcyB9OwogICAgIGF1dG8gb3B0aW9uYWxDb252ZXJz
aW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNv
bnZlcnNpb25VUkxXaXRoU2luZ2xlRGlnaXRDb252ZXJzaW9uRGF0YSk7Ci0gICAgQVNTRVJUX0ZB
TFNFKG9wdGlvbmFsQ29udmVyc2lvbik7CisgICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVy
c2lvbi5oYXNfdmFsdWUoKSk7CiAgICAgCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRo
Tm9uTnVtZXJhbENvbnZlcnNpb25EYXRhIHsgeyB9LCAiaHR0cHM6Ly93ZWJraXQub3JnLy53ZWxs
LWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8ycyJf
cyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpw
YXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0aE5vbk51bWVyYWxDb252ZXJz
aW9uRGF0YSk7Ci0gICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbik7CisgICAgQVNT
RVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNfdmFsdWUoKSk7CiAKICAgICBjb25zdCBV
UkwgY29udmVyc2lvblVSTFdpdGhOZWdhdGl2ZUNvbnZlcnNpb25EYXRhIHsgeyB9LCAiaHR0cHM6
Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dl
ci1hdHRyaWJ1dGlvbi8tMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0
aE5lZ2F0aXZlQ29udmVyc2lvbkRhdGEpOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZl
cnNpb24pOworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkp
OwogCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoVG9vTGFyZ2VDb252ZXJzaW9uRGF0
YSB7IHsgfSwgImh0dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1l
YXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vMTYiX3MgfTsKICAgICBvcHRpb25hbENvbnZl
cnNpb24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3Qo
Y29udmVyc2lvblVSTFdpdGhUb29MYXJnZUNvbnZlcnNpb25EYXRhKTsKLSAgICBBU1NFUlRfRkFM
U0Uob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJz
aW9uLmhhc192YWx1ZSgpKTsKIAogICAgIGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aFNpbmds
ZURpZ2l0UHJpb3JpdHkgeyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcvLndlbGwta25vd24vcHJp
dmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEwLzIiX3MgfTsKICAg
ICBvcHRpb25hbENvbnZlcnNpb24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRy
aWJ1dGlvblJlcXVlc3QoY29udmVyc2lvblVSTFdpdGhTaW5nbGVEaWdpdFByaW9yaXR5KTsKLSAg
ICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBBU1NFUlRfRkFMU0Uob3B0
aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKICAgICAKICAgICBjb25zdCBVUkwgY29udmVy
c2lvblVSTFdpdGhOb25OdW1lcmFsUHJpb3JpdHkgeyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcv
LndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9u
LzEwLzJzIl9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRoTm9uTnVtZXJh
bFByaW9yaXR5KTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBB
U1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKICAgICAKICAgICBj
b25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhOZWdhdGl2ZVByaW9yaXR5IHsgeyB9LCAiaHR0cHM6
Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dl
ci1hdHRyaWJ1dGlvbi8xMC8tMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJM
V2l0aE5lZ2F0aXZlUHJpb3JpdHkpOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNp
b24pOworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwog
ICAgIAogICAgIGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aFRvb0xhcmdlUHJpb3JpdHkgeyB7
IH0sICJodHRwczovL3dlYmtpdC5vcmcvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJl
bWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEwLzY0Il9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJz
aW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNv
bnZlcnNpb25VUkxXaXRoVG9vTGFyZ2VQcmlvcml0eSk7Ci0gICAgQVNTRVJUX0ZBTFNFKG9wdGlv
bmFsQ29udmVyc2lvbik7CisgICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNf
dmFsdWUoKSk7CiAKICAgICBjb25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhUb29MYXJnZUNvbnZl
cnNpb25EYXRhQW5kUHJpb3JpdHkgeyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcvLndlbGwta25v
d24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzE2LzIyIl9z
IH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBh
cnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRoVG9vTGFyZ2VDb252ZXJzaW9u
RGF0YUFuZFByaW9yaXR5KTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uKTsK
KyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKIAogICAg
IGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aFRvb0xhcmdlQ29udmVyc2lvbkRhdGFBbmRUb29M
YXJnZVByaW9yaXR5IHsgeyB9LCAiaHR0cHM6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZh
dGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xNi82NCJfcyB9OwogICAg
IG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJp
YnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0aFRvb0xhcmdlQ29udmVyc2lvbkRhdGFBbmRU
b29MYXJnZVByaW9yaXR5KTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uKTsK
KyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKIAogICAg
IGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aEV4dHJhTGVhZGluZ1NsYXNoID0geyB7IH0sICJo
dHRwczovL3dlYmtpdC5vcmcvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90
cmlnZ2VyLWF0dHJpYnV0aW9uLy8xMC8xMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJz
aW9uVVJMV2l0aEV4dHJhTGVhZGluZ1NsYXNoKTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxD
b252ZXJzaW9uKTsKKyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1
ZSgpKTsKIAogICAgIGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aEV4dHJhVHJhaWxpbmdTbGFz
aCA9IHsgeyB9LCAiaHR0cHM6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2st
bWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xMC8xMi8iX3MgfTsKICAgICBvcHRpb25h
bENvbnZlcnNpb24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJl
cXVlc3QoY29udmVyc2lvblVSTFdpdGhFeHRyYVRyYWlsaW5nU2xhc2gpOwotICAgIEFTU0VSVF9G
QUxTRShvcHRpb25hbENvbnZlcnNpb24pOworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZl
cnNpb24uaGFzX3ZhbHVlKCkpOwogCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoVHJh
aWxpbmdRdWVzdGlvbk1hcmsgPSB7IHsgfSwgImh0dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93
bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vMTAvMTI/Il9z
IH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBh
cnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRoVHJhaWxpbmdRdWVzdGlvbk1h
cmspOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24pOworICAgIEFTU0VSVF9G
QUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwogfQogCiBURVNUKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBJbnZhbGlkQ29udmVyc2lvbldpdGhEaXNhbGxvd2VkVVJMQ29tcG9u
ZW50cykKQEAgLTI0Niw0NiArMjQ2LDQ2IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IEludmFsaWRDb252ZXJzaW9uV2l0aERpc2FsbG93ZWRVUkxDb21wb25lbnRzKQogICAgIC8vIFBy
b3RvY29sLgogICAgIGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aEh0dHBQcm90b2NvbCB7IHsg
fSwgImh0dHA6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1l
bnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8yIl9zIH07CiAgICAgYXV0byBvcHRpb25hbENvbnZlcnNp
b24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29u
dmVyc2lvblVSTFdpdGhIdHRwUHJvdG9jb2wpOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENv
bnZlcnNpb24pOworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVl
KCkpOwogCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoV3NzUHJvdG9jb2wgeyB7IH0s
ICJ3c3M6Ly93ZWJraXQub3JnLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQv
dHJpZ2dlci1hdHRyaWJ1dGlvbi8yIl9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25V
UkxXaXRoV3NzUHJvdG9jb2wpOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24p
OworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwogCiAg
ICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoRmlsZVByb3RvY29sIHsgeyB9LCAiZmlsZTov
Ly8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRp
b24vMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0aEZpbGVQcm90b2Nv
bCk7Ci0gICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbik7CisgICAgQVNTRVJUX0ZB
TFNFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNfdmFsdWUoKSk7CiAKICAgICAvLyBVc2VybmFtZSBh
bmQgcGFzc3dvcmQuCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoVXNlck5hbWUgeyB7
IH0sICJodHRwczovL3VzZXJAd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1l
YXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vMiJfcyB9OwogICAgIG9wdGlvbmFsQ29udmVy
c2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChj
b252ZXJzaW9uVVJMV2l0aFVzZXJOYW1lKTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252
ZXJzaW9uKTsKKyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgp
KTsKIAogICAgIGNvbnN0IFVSTCBjb252ZXJzaW9uVVJMV2l0aFBhc3N3b3JkID0geyB7IH0sICJo
dHRwczovLzpwd2RAd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVt
ZW50L3RyaWdnZXItYXR0cmlidXRpb24vMTAvMTIiX3MgfTsKICAgICBvcHRpb25hbENvbnZlcnNp
b24gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29u
dmVyc2lvblVSTFdpdGhQYXNzd29yZCk7Ci0gICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVy
c2lvbik7CisgICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbi5oYXNfdmFsdWUoKSk7
CiAKICAgICBjb25zdCBVUkwgY29udmVyc2lvblVSTFdpdGhVc2VybmFtZUFuZFBhc3N3b3JkID0g
eyB7IH0sICJodHRwczovL3VzZXI6cHdkQHdlYmtpdC5vcmcvLndlbGwta25vd24vcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEwLzEyIl9zIH07CiAgICAgb3B0
aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRp
b25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRoVXNlcm5hbWVBbmRQYXNzd29yZCk7Ci0gICAgQVNT
RVJUX0ZBTFNFKG9wdGlvbmFsQ29udmVyc2lvbik7CisgICAgQVNTRVJUX0ZBTFNFKG9wdGlvbmFs
Q29udmVyc2lvbi5oYXNfdmFsdWUoKSk7CiAKICAgICAvLyBRdWVyeSBzdHJpbmcuCiAgICAgY29u
c3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoVHJhaWxpbmdRdWVzdGlvbk1hcmsgPSB7IHsgfSwgImh0
dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3Ry
aWdnZXItYXR0cmlidXRpb24vMTAvMTI/Il9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNp
b25VUkxXaXRoVHJhaWxpbmdRdWVzdGlvbk1hcmspOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25h
bENvbnZlcnNpb24pOworICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3Zh
bHVlKCkpOwogCiAgICAgY29uc3QgVVJMIGNvbnZlcnNpb25VUkxXaXRoUXVlcnlTdHJpbmcgPSB7
IHsgfSwgImh0dHBzOi8vd2Via2l0Lm9yZy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1
cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vMTAvMTI/ZXh0cmE9ZGF0YSJfcyB9OwogICAgIG9w
dGlvbmFsQ29udmVyc2lvbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0
aW9uUmVxdWVzdChjb252ZXJzaW9uVVJMV2l0aFF1ZXJ5U3RyaW5nKTsKLSAgICBBU1NFUlRfRkFM
U0Uob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJz
aW9uLmhhc192YWx1ZSgpKTsKICAgICAKICAgICAvLyBGcmFnbWVudC4KICAgICBjb25zdCBVUkwg
Y29udmVyc2lvblVSTFdpdGhUcmFpbGluZ0hhc2ggPSB7IHsgfSwgImh0dHBzOi8vd2Via2l0Lm9y
Zy8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRp
b24vMTAvMTIjIl9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRoVHJhaWxp
bmdIYXNoKTsKLSAgICBBU1NFUlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uKTsKKyAgICBBU1NF
UlRfRkFMU0Uob3B0aW9uYWxDb252ZXJzaW9uLmhhc192YWx1ZSgpKTsKIAogICAgIGNvbnN0IFVS
TCBjb252ZXJzaW9uVVJMV2l0aEZyYWdtZW50ID0geyB7IH0sICJodHRwczovL3dlYmtpdC5vcmcv
LndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9u
LzEwLzEyI2ZyYWdtZW50Il9zIH07CiAgICAgb3B0aW9uYWxDb252ZXJzaW9uID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRpb25SZXF1ZXN0KGNvbnZlcnNpb25VUkxXaXRo
RnJhZ21lbnQpOwotICAgIEFTU0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24pOworICAgIEFT
U0VSVF9GQUxTRShvcHRpb25hbENvbnZlcnNpb24uaGFzX3ZhbHVlKCkpOwogfQogCiBURVNUKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlkU291cmNlTm9uY2UpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CmluZGV4IDBhNGQ0Y2ZmZTVhNjQyNjI5MjUzZDkwZDE2MDEwMjE5YmUwMDEwM2YuLmYzOWIxMWQ4
MmVlZWY2NGMwNTc0YzFmOTI1OWIwMTY0NWE4NjA2MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC01
ODYsNyArNTg2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZHVtcFRvU3RkRXJyKGNvbnN0IFN0
cmluZyYgb3V0cHV0KQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IERvIHdlIHJlYWxs
eSBoYXZlIHRvIGNvbnZlcnQgdG8gVVRGLTggaW5zdGVhZCBvZiB1c2luZyB0b1dLPwogICAgIGF1
dG8gc3RyaW5nID0gb3V0cHV0LnRyeUdldFV0ZjgoKTsKLSAgICBwb3N0UGFnZU1lc3NhZ2UoIkR1
bXBUb1N0ZEVyciIsIHN0cmluZyA/IHN0cmluZy0+ZGF0YSgpIDogIk91dCBvZiBtZW1vcnlcbiIp
OworICAgIHBvc3RQYWdlTWVzc2FnZSgiRHVtcFRvU3RkRXJyIiwgc3RyaW5nLmhhc192YWx1ZSgp
ID8gc3RyaW5nLT5kYXRhKCkgOiAiT3V0IG9mIG1lbW9yeVxuIik7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6Om91dHB1dFRleHQoY29uc3QgU3RyaW5nJiBvdXRwdXQpCkBAIC02MDAsNyArNjAw
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6b3V0cHV0VGV4dChjb25zdCBTdHJpbmcmIG91dHB1
dCkKICAgICAvLyBXZSB1c2UgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3lu
Y2hyb25vdXNNb2RlKCkgaW5zdGVhZCBvZiBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZSgpIHRvIG1h
a2Ugc3VyZSB0aGF0IGFsbCB0ZXh0IG91dHB1dAogICAgIC8vIGlzIGRvbmUgdmlhIGFzeW5jaHJv
bm91cyBJUEMsIGV2ZW4gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW4gZnVsbHkgc3luY2hyb25vdXMg
bW9kZSBkdWUgdG8gYSBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGlu
ZygpCiAgICAgLy8gY2FsbC4gT3RoZXJ3aXNlLCBtZXNzYWdlcyBsb2dnZWQgdmlhIHN5bmMgYW5k
IGFzeW5jIElQQyBtYXkgZW5kIHVwIG91dCBvZiBvcmRlciBhbmQgY2F1c2UgZmxha2luZXNzLgot
ICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlSWdub3JpbmdGdWxseVN5bmNocm9ub3VzTW9kZShw
YWdlKCktPnBhZ2UoKSwgdG9XSygiVGV4dE91dHB1dCIpLmdldCgpLCB0b1dLKHN0cmluZyA/IHN0
cmluZy0+ZGF0YSgpIDogIk91dCBvZiBtZW1vcnlcbiIpLmdldCgpKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUocGFnZSgpLT5wYWdlKCks
IHRvV0soIlRleHRPdXRwdXQiKS5nZXQoKSwgdG9XSyhzdHJpbmcuaGFzX3ZhbHVlKCkgPyBzdHJp
bmctPmRhdGEoKSA6ICJPdXQgb2YgbWVtb3J5XG4iKS5nZXQoKSk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnBvc3ROZXdCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKQo=
</data>
<flag name="review"
          id="446535"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>