<?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>197394</bug_id>
          
          <creation_ts>2019-04-29 16:49:09 -0700</creation_ts>
          <short_desc>Make JITType an enum class</short_desc>
          <delta_ts>2019-04-29 20:28:16 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>196943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1531371</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-29 16:49:09 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531399</commentid>
    <comment_count>1</comment_count>
      <attachid>368526</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-29 18:35:46 -0700</bug_when>
    <thetext>Created attachment 368526
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531400</commentid>
    <comment_count>2</comment_count>
      <attachid>368526</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-29 18:37:14 -0700</bug_when>
    <thetext>Comment on attachment 368526
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531418</commentid>
    <comment_count>3</comment_count>
      <attachid>368526</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-29 20:27:46 -0700</bug_when>
    <thetext>Comment on attachment 368526
patch

Clearing flags on attachment: 368526

Committed r244764: &lt;https://trac.webkit.org/changeset/244764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531419</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-29 20:27:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531420</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-29 20:28:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/50322508&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368526</attachid>
            <date>2019-04-29 18:35:46 -0700</date>
            <delta_ts>2019-04-29 20:27:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>76781</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ0NzYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBA
QAorMjAxOS0wNC0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYWtlIEpJVFR5cGUgYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Mzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyB0aGUgY29kZSBtb3JlIGVhc2lseSBzZWFy
Y2hhYmxlLgorCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQXNzdW1pbmdKSVRU
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9j
a09yTnVsbCk6CisgICAgICAgIChKU0M6OnRpbWVUb0xpdmUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
YXNlbGluZUFsdGVybmF0aXZlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZl
cnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNldE9wdGltaXphdGlvblRocmVzaG9sZEJhc2VkT25Db21waWxh
dGlvblJlc3VsdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRT
aXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZnJhbWVSZWdpc3RlckNvdW50KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpqaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNCYXNlbGluZUpJ
VFByb2ZpbGluZyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5
cGUuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrV2l0aEpJVFR5cGU6OkNvZGVCbG9ja1dpdGhK
SVRUeXBlKToKKyAgICAgICAgKiBieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuY3BwOgorICAg
ICAgICAoSlNDOjpEZWZlcnJlZFNvdXJjZUR1bXA6OkRlZmVycmVkU291cmNlRHVtcCk6CisgICAg
ICAgICogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmg6CisgICAgICAgICogYnl0ZWNvZGUv
RXhpdGluZ0pJVFR5cGUuaDoKKyAgICAgICAgKEpTQzo6ZXhpdGluZ0pJVFR5cGVGb3IpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpiYXNlbGlu
ZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVyKToKKyAgICAgICAgKiBk
ZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmNoZWNrSWZPcHRpbWl6
YXRpb25UaHJlc2hvbGRSZWFjaGVkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpvcHRp
bWl6ZU5leHRJbnZvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpkb250T3B0
aW1pemVBbnl0aW1lU29vbik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6b3B0aW1pemVB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6b3B0aW1pemVTb29uKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpmb3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29u
Y3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpzZXRPcHRpbWl6YXRpb25U
aHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdKSVRG
aW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJl
T1NSRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
ZXhlY3V0ZU9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFt
ZXMpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxs
RnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDoKKyAgICAgICAgKEpTQzo6REZH
OjphZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJUaHVuayk6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpW
YXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCBjb25zdCk6CisgICAgICAgICogZnRsL0ZU
TENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjpKSVRDb2RlKToK
KyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpK
SVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZUZUTE9TUkV4aXQpOgorICAgICAg
ICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0
aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXJlQnl0ZWNvZGVPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FyZUNvZGVPcmln
aW5JbmRleCBjb25zdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAg
ICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OkFzc2VtYmx5SGVscGVycyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpK
SVRDb2RlOjp0eXBlTmFtZSk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmJvdHRvbVRpZXJKSVQp
OgorICAgICAgICAoSlNDOjpKSVRDb2RlOjp0b3BUaWVySklUKToKKyAgICAgICAgKEpTQzo6SklU
Q29kZTo6bmV4dFRpZXJKSVQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0V4ZWN1dGFibGVT
Y3JpcHQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpjb3VsZEJlSW50ZXJwcmV0ZWQpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKToKKyAg
ICAgICAgKEpTQzo6SklUQ29kZTo6aml0VHlwZUZvcik6CisgICAgICAgICogaml0L0pJVERpc2Fz
c2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcEhlYWRlcik6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgorICAg
ICAgICAqIGppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA6CisgICAg
ICAgIChKU0M6OkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlv
bkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAg
ICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNv
bXBpbGVMYXRlcik6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTm93KToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxUYXJn
ZXQpOgorICAgICAgICAoSlNDOjpmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwpOgorICAgICAgICAq
IGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRGdW5j
dGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RXZhbEVudHJ5cG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2V0UHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENvbXBpbGVBbmRT
ZXRIZXVyaXN0aWNzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlND
OjpTYW1wbGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKToKKyAgICAg
ICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6aml0Q29kZUZvckNhbGxUcmFtcG9saW5lKToKKyAgICAgICAgKEpT
Qzo6aml0Q29kZUZvckNvbnN0cnVjdFRyYW1wb2xpbmUpOgorICAgICAgICAqIHRvb2xzL0NvZGVQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZVByb2ZpbGU6OnNhbXBsZSk6CisgICAgICAg
ICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxlckZyYW1lSklUVHlw
ZUZ1bmN0b3I6OkNhbGxlckZyYW1lSklUVHlwZUZ1bmN0b3IpOgorICAgICAgICAoSlNDOjpDYWxs
ZXJGcmFtZUpJVFR5cGVGdW5jdG9yOjpqaXRUeXBlKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25M
TGludFRydWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkpJVFRydWUpOgorCiAyMDE5LTA0LTI5
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgbm9ybWFsaXpl
TWFwS2V5IHNob3VsZCBub3JtYWxpemUgTmFOIHRvIG9uZSBQdXJlTmFOIGJpdCBwYXR0ZXJuIHRv
IG1ha2UgTWFwSGFzaCBzYW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0Miw3ICszNDIsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvCiAgICAgICAgIC8vIGZhc3QtcGF0aC1zbG93LXBhdGggY29udHJvbC1mbG93LWRpYW1vbmQg
c3R5bGUgb2YgSUMgaW5saW5pbmcuIEl0J3MgZWl0aGVyIGFsbCBmYXN0CiAgICAgICAgIC8vIHBh
dGggb3IgaXQncyBhIGZ1bGwgSUMuIFNvLCBmb3IgdGhlbSwgaWYgdGhlcmUgaXMgYW4gSUMgc3Rh
dHVzIHRoZW4gaXQgbWVhbnMgY2FzZSAoMSkuCiAgICAgICAgIAotICAgICAgICBib29sIGNoZWNr
U3RhdHVzRmlyc3QgPSBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpGVExKSVQ7CisgICAgICAgIGJvb2wgY2hlY2tTdGF0dXNGaXJzdCA9IGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVDsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKENhbGxMaW5rU3RhdHVzJiByZXN1bHQpIHsK
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgQ1N0cmluZyBDb2RlQmxvY2s6Omhh
c2hBc1N0cmluZ0lmUG9zc2libAogICAgIHJldHVybiAiPG5vLWhhc2g+IjsKIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRTdHJlYW0mIG91dCwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKSBjb25zdAordm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5
cGUoUHJpbnRTdHJlYW0mIG91dCwgSklUVHlwZSBqaXRUeXBlKSBjb25zdAogewogICAgIG91dC5w
cmludChpbmZlcnJlZE5hbWUoKSwgIiMiLCBoYXNoQXNTdHJpbmdJZlBvc3NpYmxlKCkpOwogICAg
IG91dC5wcmludCgiOlsiLCBSYXdQb2ludGVyKHRoaXMpLCAiLT4iKTsKQEAgLTE5MSw3ICsxOTEs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmluCiAgICAgaWYgKGNv
ZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBvdXQucHJpbnQoc3BlY2lhbGl6YXRp
b25LaW5kKCkpOwogICAgIG91dC5wcmludCgiLCAiLCBpbnN0cnVjdGlvbkNvdW50KCkpOwotICAg
IGlmICh0aGlzLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgJiYgbV9zaG91bGRB
bHdheXNCZUlubGluZWQpCisgICAgaWYgKHRoaXMtPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNl
bGluZUpJVCAmJiBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCkKICAgICAgICAgb3V0LnByaW50KCIg
KFNob3VsZEFsd2F5c0JlSW5saW5lZCkiKTsKICAgICBpZiAob3duZXJFeGVjdXRhYmxlKCktPm5l
dmVySW5saW5lKCkpCiAgICAgICAgIG91dC5wcmludCgiIChOZXZlcklubGluZSkiKTsKQEAgLTIw
NSw5ICsyMDUsOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmluCiAg
ICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIGlmIChtX2RpZEZhaWxKSVRD
b21waWxhdGlvbikKICAgICAgICAgb3V0LnByaW50KCIgKEpJVEZhaWwpIik7Ci0gICAgaWYgKHRo
aXMtPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCAmJiBtX2RpZEZhaWxGVExDb21w
aWxhdGlvbikKKyAgICBpZiAodGhpcy0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklU
ICYmIG1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKQogICAgICAgICBvdXQucHJpbnQoIiAoRlRMRmFp
bCkiKTsKLSAgICBpZiAodGhpcy0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUICYm
IG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTCkKKyAgICBpZiAodGhpcy0+aml0VHlwZSgpID09IEpJ
VFR5cGU6OkJhc2VsaW5lSklUICYmIG1faGFzQmVlbkNvbXBpbGVkV2l0aEZUTCkKICAgICAgICAg
b3V0LnByaW50KCIgKEhhZEZUTFJlcGxhY2VtZW50KSIpOwogICAgIG91dC5wcmludCgiXSIpOwog
fQpAQCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXROdW1QYXJhbWV0ZXJzKGlu
dCBuZXcKIENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgp
CiB7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgaWYgKGppdFR5cGUoKSAhPSBKSVRDb2RlOjpE
RkdKSVQpCisgICAgaWYgKGppdFR5cGUoKSAhPSBKSVRUeXBlOjpERkdKSVQpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IG1faml0Q29kZS0+ZGZnKCk7CiAg
ICAgcmV0dXJuIGppdENvZGUtPm9zckVudHJ5QmxvY2soKTsKQEAgLTEwMDIsMTcgKzEwMDIsMTcg
QEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZEpldHRpc29uRHVlVG9XZWFrUgogICAgIHJldHVybiAh
dm0uaGVhcC5pc01hcmtlZCh0aGlzKTsKIH0KIAotc3RhdGljIFNlY29uZHMgdGltZVRvTGl2ZShK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCitzdGF0aWMgU2Vjb25kcyB0aW1lVG9MaXZlKEpJVFR5
cGUgaml0VHlwZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRWFnZXJDb2RlQmxv
Y2tKZXR0aXNvblRpbWluZygpKSkgewogICAgICAgICBzd2l0Y2ggKGppdFR5cGUpIHsKLSAgICAg
ICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICBjYXNlIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bms6CiAgICAgICAgICAgICByZXR1cm4gMTBfbXM7Ci0gICAgICAgIGNh
c2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIGNhc2UgSklUVHlwZTo6QmFzZWxpbmVK
SVQ6CiAgICAgICAgICAgICByZXR1cm4gMzBfbXM7Ci0gICAgICAgIGNhc2UgSklUQ29kZTo6REZH
SklUOgorICAgICAgICBjYXNlIEpJVFR5cGU6OkRGR0pJVDoKICAgICAgICAgICAgIHJldHVybiA0
MF9tczsKLSAgICAgICAgY2FzZSBKSVRDb2RlOjpGVExKSVQ6CisgICAgICAgIGNhc2UgSklUVHlw
ZTo6RlRMSklUOgogICAgICAgICAgICAgcmV0dXJuIDEyMF9tczsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBTZWNvbmRzOjppbmZpbml0eSgpOwpAQCAtMTAyMCwxNSArMTAy
MCwxNSBAQCBzdGF0aWMgU2Vjb25kcyB0aW1lVG9MaXZlKEpJVENvZGU6OkpJVFR5CiAgICAgfQog
CiAgICAgc3dpdGNoIChqaXRUeXBlKSB7Ci0gICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rOgorICAgIGNhc2UgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazoKICAgICAgICAgcmV0dXJu
IDVfczsKLSAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgIGNhc2UgSklUVHlwZTo6
QmFzZWxpbmVKSVQ6CiAgICAgICAgIC8vIEVmZmVjdGl2ZWx5IDEwIGFkZGl0aW9uYWwgc2Vjb25k
cywgc2luY2UgQmFzZWxpbmVKSVQgYW5kCiAgICAgICAgIC8vIEludGVycHJldGVyVGh1bmsgc2hh
cmUgYSBDb2RlQmxvY2suCiAgICAgICAgIHJldHVybiAxNV9zOwotICAgIGNhc2UgSklUQ29kZTo6
REZHSklUOgorICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgogICAgICAgICByZXR1cm4gMjBfczsK
LSAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDoKKyAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDoKICAg
ICAgICAgcmV0dXJuIDYwX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFNlY29uZHM6
OmluZmluaXR5KCk7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFn
YXRlVHJhbnNpdGlvbnMoY29uCiAKICAgICBWTSYgdm0gPSAqbV92bTsKIAotICAgIGlmIChqaXRU
eXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgIGlmIChqaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBWZWN0b3I8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zID0gbV91
bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAgICAgIGNvbnN0
IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGluc3RydWN0aW9ucygpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
LnNpemUoKTsgKytpKSB7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBDb2RlQmxvY2sqIENvZGVCbG9j
azo6YmFzZWxpbmVBbHRlcm5hdGl2CiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkK
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
cmVzdWx0LT5qaXRUeXBlKCkpIHx8IHJlc3VsdC0+aml0VHlwZSgpID09IEpJVENvZGU6Ok5vbmUp
OworICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+aml0
VHlwZSgpKSB8fCByZXN1bHQtPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpOb25lKTsKICAgICByZXR1
cm4gcmVzdWx0OwogI2Vsc2UKICAgICByZXR1cm4gdGhpczsKQEAgLTE2NDAsNyArMTY0MCw3IEBA
IENvZGVCbG9jayogQ29kZUJsb2NrOjpiYXNlbGluZUFsdGVybmF0aXYKIENvZGVCbG9jayogQ29k
ZUJsb2NrOjpiYXNlbGluZVZlcnNpb24oKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgSklUQ29k
ZTo6SklUVHlwZSBzZWxmSklUVHlwZSA9IGppdFR5cGUoKTsKKyAgICBKSVRUeXBlIHNlbGZKSVRU
eXBlID0gaml0VHlwZSgpOwogICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShzZWxmSklU
VHlwZSkpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIENvZGVCbG9jayogcmVzdWx0ID0gcmVw
bGFjZW1lbnQoKTsKQEAgLTE2NTQsNyArMTY1NCw3IEBAIENvZGVCbG9jayogQ29kZUJsb2NrOjpi
YXNlbGluZVZlcnNpb24oKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBj
YW4gaGFwcGVuIGlmIHdlJ3JlIGNyZWF0aW5nIHRoZSBvcmlnaW5hbCBDb2RlQmxvY2sgZm9yIGFu
IGV4ZWN1dGFibGUuCiAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB3ZSdyZSB0aGUgYmFzZWxp
bmUgQ29kZUJsb2NrLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VsZkpJVFR5cGUgPT0g
SklUQ29kZTo6Tm9uZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzZWxmSklUVHlwZSA9
PSBKSVRUeXBlOjpOb25lKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgQ29kZUJsb2NrKiBDb2RlQmxvY2s6OmJhc2VsaW5l
VmVyc2lvbigpCiB9CiAKICNpZiBFTkFCTEUoSklUKQotYm9vbCBDb2RlQmxvY2s6Omhhc09wdGlt
aXplZFJlcGxhY2VtZW50KEpJVENvZGU6OkpJVFR5cGUgdHlwZVRvUmVwbGFjZSkKK2Jvb2wgQ29k
ZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudChKSVRUeXBlIHR5cGVUb1JlcGxhY2UpCiB7
CiAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IHRoaXMtPnJlcGxhY2VtZW50KCk7CiAgICAg
cmV0dXJuIHJlcGxhY2VtZW50ICYmIEpJVENvZGU6OmlzSGlnaGVyVGllcihyZXBsYWNlbWVudC0+
aml0VHlwZSgpLCB0eXBlVG9SZXBsYWNlKTsKQEAgLTIxNDcsNyArMjE0Nyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoRXhlY1MKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSB7CisgICAgaWYgKGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5
cGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBzdGls
bCBpbiB0aGUgaW50ZXJwcmV0ZXIsIHRoZW4gd2UgY2FuJ3QgZXhwZWN0IGlubGluaW5nIHRvCiAg
ICAgICAgIC8vIGhhcHBlbiBhbnl0aW1lIHNvb24uIEFzc3VtZSBpdCdzIHByb2ZpdGFibGUgdG8g
b3B0aW1pemUgaXQgc2VwYXJhdGVseS4gVGhpcwogICAgICAgICAvLyBlbnN1cmVzIHRoYXQgYSBm
dW5jdGlvbiBpcyBTQUJJIG9ubHkgaWYgaXQgaXMgY2FsbGVkIG5vIG1vcmUgZnJlcXVlbnRseSB0
aGFuCkBAIC0yNDg5LDEwICsyNDg5LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JjZU9wdGltaXph
dGlvblNsb3dQYXQKICNpZiBFTkFCTEUoREZHX0pJVCkKIHZvaWQgQ29kZUJsb2NrOjpzZXRPcHRp
bWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoQ29tcGlsYXRpb25SZXN1
bHQgcmVzdWx0KQogewotICAgIEpJVENvZGU6OkpJVFR5cGUgdHlwZSA9IGppdFR5cGUoKTsKLSAg
ICBpZiAodHlwZSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCkgeworICAgIEpJVFR5cGUgdHlwZSA9
IGppdFR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgewogICAg
ICAgICBkYXRhTG9nKCp0aGlzLCAiOiBleHBlY3RlZCB0byBoYXZlIGJhc2VsaW5lIGNvZGUgYnV0
IGhhdmUgIiwgdHlwZSwgIlxuIik7Ci0gICAgICAgIENSQVNIX1dJVEhfSU5GTyhiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihqaXRDb2RlKCkuZ2V0KCkpLCB0eXBlKTsKKyAgICAgICAgQ1JBU0hfV0lU
SF9JTkZPKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGppdENvZGUoKS5nZXQoKSksIHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHR5cGUpKTsKICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCA9IHRoaXMtPnJlcGxhY2VtZW50KCk7CkBAIC0yNzIzLDEyICsyNzIzLDEyIEBAIGJvb2wg
Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVx
dWVudEV4aXRTaXRlcygpCiB7CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChq
aXRUeXBlKCkpKTsKLSAgICBBU1NFUlQoYWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoYWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2sgPSBhbHRlcm5hdGl2ZSgpOwogICAgIAogICAgIHN3aXRjaCAoaml0VHlwZSgpKSB7Ci0gICAg
Y2FzZSBKSVRDb2RlOjpERkdKSVQ6IHsKKyAgICBjYXNlIEpJVFR5cGU6OkRGR0pJVDogewogICAg
ICAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBtX2ppdENvZGUtPmRmZygpOwogICAgICAgICBm
b3IgKGF1dG8mIGV4aXQgOiBqaXRDb2RlLT5vc3JFeGl0KQogICAgICAgICAgICAgZXhpdC5jb25z
aWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZEJsb2NrKTsKQEAgLTI3MzYsNyAr
MjczNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkKICAgICB9
CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDogeworICAg
IGNhc2UgSklUVHlwZTo6RlRMSklUOiB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGVhc3kgd2F5
IHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoaXMgY29kZSBzaW5jZSB0aGUgRlRMOjpKSVRDb2RlOjpv
c3JFeGl0CiAgICAgICAgIC8vIHZlY3RvciBjb250YWlucyBhIHRvdGFsbHkgZGlmZmVyZW50IHR5
cGUsIHRoYXQganVzdCBzbyBoYXBwZW5zIHRvIGJlaGF2ZSBsaWtlCiAgICAgICAgIC8vIERGRzo6
SklUQ29kZTo6b3NyRXhpdC4KQEAgLTI4MjQsMTcgKzI4MjQsMTcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHVuc2lnbmVkIENvZGVCbG9jazo6ZnJhbWVSZWdpc3RlckNv
dW50KCkKIHsKICAgICBzd2l0Y2ggKGppdFR5cGUoKSkgewotICAgIGNhc2UgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuazoKKyAgICBjYXNlIEpJVFR5cGU6OkludGVycHJldGVyVGh1bms6CiAgICAg
ICAgIHJldHVybiBMTEludDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKHRoaXMpOwogCiAjaWYgRU5B
QkxFKEpJVCkKLSAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgIGNhc2UgSklUVHlw
ZTo6QmFzZWxpbmVKSVQ6CiAgICAgICAgIHJldHVybiBKSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZv
cih0aGlzKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6Ci0gICAgY2FzZSBKSVRDb2RlOjpGVExKSVQ6CisgICAg
Y2FzZSBKSVRUeXBlOjpERkdKSVQ6CisgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CiAgICAgICAg
IHJldHVybiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5mcmFtZVJlZ2lzdGVyQ291bnQ7CiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCiAgICAgICAgIApAQCAtMzE3NSwxNSArMzE3NSwxNSBAQCBP
cHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2CiBPcHRpb25hbDx1bnNpZ25l
ZD4gQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCkKIHsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZz
ZXQ7Ci0gICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlID0gdGhpcy0+aml0VHlwZSgpOwotICAg
IGlmIChqaXRUeXBlID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCkgeworICAgIEpJVFR5cGUgaml0VHlwZSA9IHRoaXMtPmppdFR5
cGUoKTsKKyAgICBpZiAoaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGpp
dFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxTaXRlSW5kZXguYml0cygpOwogI2Vsc2UKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
Y2FsbFNpdGVJbmRleC5iaXRzKCkpOwogICAgICAgICBieXRlY29kZU9mZnNldCA9IHRoaXMtPmJ5
dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKICNlbmRpZgotICAgIH0gZWxzZSBpZiAoaml0VHlw
ZSA9PSBKSVRDb2RlOjpERkdKSVQgfHwgaml0VHlwZSA9PSBKSVRDb2RlOjpGVExKSVQpIHsKKyAg
ICB9IGVsc2UgaWYgKGppdFR5cGUgPT0gSklUVHlwZTo6REZHSklUIHx8IGppdFR5cGUgPT0gSklU
VHlwZTo6RlRMSklUKSB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNhbkdldENvZGVPcmlnaW4oY2FsbFNpdGVJbmRleCkpOwogICAgICAgICBDb2RlT3JpZ2lu
IG9yaWdpbiA9IGNvZGVPcmlnaW4oY2FsbFNpdGVJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgQ1N0cmluZyBoYXNoQXNTdHJpbmdJZlBvc3Np
YmxlKCkgY29uc3Q7CiAgICAgQ1N0cmluZyBzb3VyY2VDb2RlRm9yVG9vbHMoKSBjb25zdDsgLy8g
Tm90IHF1aXRlIHRoZSBhY3R1YWwgc291cmNlIHdlIHBhcnNlZDsgdGhpcyB3aWxsIGRvIHRoaW5n
cyBsaWtlIHByZWZpeCB0aGUgc291cmNlIGZvciBhIGZ1bmN0aW9uIHdpdGggYSByZWlmaWVkIHNp
Z25hdHVyZS4KICAgICBDU3RyaW5nIHNvdXJjZUNvZGVPbk9uZUxpbmUoKSBjb25zdDsgLy8gQXMg
c291cmNlQ29kZUZvclRvb2xzKCksIGJ1dCByZXBsYWNlcyBhbGwgd2hpdGVzcGFjZSBydW5zIHdp
dGggYSBzaW5nbGUgc3BhY2UuCi0gICAgdm9pZCBkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3Ry
ZWFtJiwgSklUQ29kZTo6SklUVHlwZSkgY29uc3Q7CisgICAgdm9pZCBkdW1wQXNzdW1pbmdKSVRU
eXBlKFByaW50U3RyZWFtJiwgSklUVHlwZSkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBpbnQgbnVtUGFyYW1ldGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQpAQCAtNDAyLDE4ICs0MDIsMTggQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENv
ZGU7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGppdENvZGVPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdENvZGUpOyB9Ci0gICAgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKCkgY29uc3QKKyAgICBKSVRUeXBlIGppdFR5cGUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgSklUQ29kZSogaml0Q29kZSA9IG1faml0Q29kZS5nZXQoKTsKICAgICAgICAgV1RGOjps
b2FkTG9hZEZlbmNlKCk7Ci0gICAgICAgIEpJVENvZGU6OkpJVFR5cGUgcmVzdWx0ID0gSklUQ29k
ZTo6aml0VHlwZUZvcihqaXRDb2RlKTsKKyAgICAgICAgSklUVHlwZSByZXN1bHQgPSBKSVRDb2Rl
OjpqaXRUeXBlRm9yKGppdENvZGUpOwogICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsgLy8g
VGhpcyBwcm9iYWJseSBpc24ndCBuZWVkZWQuIE9oIHdlbGwsIHBhcmFub2lhIGlzIGdvb2QuCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgYm9vbCBoYXNCYXNlbGluZUpJVFBy
b2ZpbGluZygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaml0VHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUOworICAgICAgICByZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJh
c2VsaW5lSklUOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQpAQCAtNDIzLDcgKzQyMyw3
IEBAIHB1YmxpYzoKICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoKTsK
ICAgICBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxTdGF0ZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PERGRzo6Q2FwYWJpbGl0eUxldmVsPihtX2NhcGFiaWxpdHlMZXZlbFN0YXRl
KTsgfQogCi0gICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudChKSVRDb2RlOjpKSVRUeXBl
IHR5cGVUb1JlcGxhY2UpOworICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoSklUVHlw
ZSB0eXBlVG9SZXBsYWNlKTsKICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCk7IC8v
IHRoZSB0eXBlVG9SZXBsYWNlIGlzIG15IEpJVFR5cGUKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5cGUu
aAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja1dpdGhKSVRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9ja1dpdGhKSVRUeXBlIHsKIHB1YmxpYzoKLSAg
ICBDb2RlQmxvY2tXaXRoSklUVHlwZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQorICAgIENvZGVCbG9ja1dpdGhKSVRUeXBlKENvZGVCbG9jayogY29kZUJs
b2NrLCBKSVRUeXBlIGppdFR5cGUpCiAgICAgICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQog
ICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIH0KIHByaXZhdGU6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBK
SVRDb2RlOjpKSVRUeXBlIG1faml0VHlwZTsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlZmVycmVkU291cmNlRHVtcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIERlZmVy
cmVkU291cmNlRHVtcDo6RGVmZXJyZWRTb3VyY2VEdW1wKENvZGVCbG9jayogY29kZUJsb2NrKQog
ICAgIDogbV9jb2RlQmxvY2soKmNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrKQotICAgICwgbV9y
b290SklUVHlwZShKSVRDb2RlOjpOb25lKQorICAgICwgbV9yb290SklUVHlwZShKSVRUeXBlOjpO
b25lKQogewogfQogCi1EZWZlcnJlZFNvdXJjZUR1bXA6OkRlZmVycmVkU291cmNlRHVtcChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiByb290Q29kZUJsb2NrLCBKSVRDb2RlOjpKSVRU
eXBlIHJvb3RKSVRUeXBlLCB1bnNpZ25lZCBjYWxsZXJCeXRlY29kZUluZGV4KQorRGVmZXJyZWRT
b3VyY2VEdW1wOjpEZWZlcnJlZFNvdXJjZUR1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVC
bG9jayogcm9vdENvZGVCbG9jaywgSklUVHlwZSByb290SklUVHlwZSwgdW5zaWduZWQgY2FsbGVy
Qnl0ZWNvZGVJbmRleCkKICAgICA6IG1fY29kZUJsb2NrKCpjb2RlQmxvY2stPnZtKCksIGNvZGVC
bG9jaykKICAgICAsIG1fcm9vdENvZGVCbG9jaygqY29kZUJsb2NrLT52bSgpLCByb290Q29kZUJs
b2NrKQogICAgICwgbV9yb290SklUVHlwZShyb290SklUVHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmgJKHJldmlz
aW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZFNv
dXJjZUR1bXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBAIGNsYXNzIENvZGVC
bG9jazsKIGNsYXNzIERlZmVycmVkU291cmNlRHVtcCB7CiBwdWJsaWM6CiAgICAgRGVmZXJyZWRT
b3VyY2VEdW1wKENvZGVCbG9jayopOwotICAgIERlZmVycmVkU291cmNlRHVtcChDb2RlQmxvY2sq
LCBDb2RlQmxvY2sqIHJvb3RDb2RlQmxvY2ssIEpJVENvZGU6OkpJVFR5cGUgcm9vdEpJVFR5cGUs
IHVuc2lnbmVkIGNhbGxlckJ5dGVjb2RlSW5kZXgpOworICAgIERlZmVycmVkU291cmNlRHVtcChD
b2RlQmxvY2sqLCBDb2RlQmxvY2sqIHJvb3RDb2RlQmxvY2ssIEpJVFR5cGUgcm9vdEpJVFR5cGUs
IHVuc2lnbmVkIGNhbGxlckJ5dGVjb2RlSW5kZXgpOwogCiAgICAgdm9pZCBkdW1wKCk7CiAKIHBy
aXZhdGU6CiAgICAgU3Ryb25nPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgU3Ryb25nPENv
ZGVCbG9jaz4gbV9yb290Q29kZUJsb2NrOwotICAgIEpJVENvZGU6OkpJVFR5cGUgbV9yb290SklU
VHlwZTsKKyAgICBKSVRUeXBlIG1fcm9vdEpJVFR5cGU7CiAgICAgdW5zaWduZWQgbV9jYWxsZXJC
eXRlY29kZUluZGV4IHsgVUlOVF9NQVggfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGl0aW5nSklUVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSklUVHlwZS5oCShyZXZpc2lvbiAyNDQ3NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0pJVFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDEyIEBAIGVudW0gRXhpdGluZ0pJVFR5cGUgOiB1aW50OF90
IHsKICAgICBFeGl0RnJvbUZUTAogfTsKIAotaW5saW5lIEV4aXRpbmdKSVRUeXBlIGV4aXRpbmdK
SVRUeXBlRm9yKEpJVENvZGU6OkpJVFR5cGUgdHlwZSkKK2lubGluZSBFeGl0aW5nSklUVHlwZSBl
eGl0aW5nSklUVHlwZUZvcihKSVRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6CiAgICAg
ICAgIHJldHVybiBFeGl0RnJvbURGRzsKLSAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDoKKyAgICBj
YXNlIEpJVFR5cGU6OkZUTEpJVDoKICAgICAgICAgcmV0dXJuIEV4aXRGcm9tRlRMOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCShyZXZp
c2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2Fs
bEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBpbmxpbmUgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckluCiAKIGlubGluZSBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQo
YmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxp
bmVKSVQpOwogICAgIGF1dG8qIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKCk7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwOTQsNyArNzA5NCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cFNvdXJjZUF0REZHVGltZSgpKSkgewogICAgICAgICBWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1w
PiYgZGVmZXJyZWRTb3VyY2VEdW1wID0gbV9ncmFwaC5tX3BsYW4uY2FsbGJhY2soKS0+ZW5zdXJl
RGVmZXJyZWRTb3VyY2VEdW1wKCk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgewot
ICAgICAgICAgICAgRGVmZXJyZWRTb3VyY2VEdW1wIGR1bXAoY29kZUJsb2NrLT5iYXNlbGluZVZl
cnNpb24oKSwgbV9jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCwgaW5saW5lQ2FsbEZyYW1lKCkt
PmRpcmVjdENhbGxlci5ieXRlY29kZUluZGV4KCkpOworICAgICAgICAgICAgRGVmZXJyZWRTb3Vy
Y2VEdW1wIGR1bXAoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSwgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkRGR0pJVCwgaW5saW5lQ2FsbEZyYW1lKCktPmRpcmVjdENhbGxlci5ieXRlY29kZUlu
ZGV4KCkpOwogICAgICAgICAgICAgZGVmZXJyZWRTb3VyY2VEdW1wLmFwcGVuZChkdW1wKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkZWZlcnJlZFNvdXJjZUR1bXAuYXBwZW5kKERlZmVy
cmVkU291cmNlRHVtcChjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKSk7CkBAIC03MTA0LDcg
KzcxMDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAg
IGRhdGFMb2coIlBhcnNpbmcgIiwgKmNvZGVCbG9jayk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgewogICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICAgICAiIGZvciBp
bmxpbmluZyBhdCAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUQ29kZTo6
REZHSklUKSwKKyAgICAgICAgICAgICAgICAiIGZvciBpbmxpbmluZyBhdCAiLCBDb2RlQmxvY2tX
aXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6REZHSklUKSwKICAgICAgICAgICAgICAg
ICAiICIsIGlubGluZUNhbGxGcmFtZSgpLT5kaXJlY3RDYWxsZXIpOwogICAgICAgICB9CiAgICAg
ICAgIGRhdGFMb2coCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNh
c3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBEaXNhc3NlbWJsZXI6OnJlcG9ydFRvUHJvZmlsZXIoUHJvZgogCiB2b2lkIERpc2Fzc2Vt
Ymxlcjo6ZHVtcEhlYWRlcihQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogewotICAgIG91dC5wcmludCgiR2VuZXJhdGVkIERGRyBKSVQgY29kZSBmb3IgIiwgQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSwgIiwg
aW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCksICI6XG4iKTsKKyAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBERkcgSklUIGNvZGUgZm9y
ICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fZ3JhcGgubV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRG
R0pJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9ncmFwaC5tX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpLCAiOlxuIik7CiAgICAgb3V0LnByaW50KCIgICAgT3B0aW1pemVkIHdp
dGggZXhlY3V0aW9uIGNvdW50ZXIgPSAiLCBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+aml0RXhl
Y3V0ZUNvdW50ZXIoKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICAgQ29kZSBhdCBbIiwgUmF3
UG9pbnRlcihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLnNp
emUoKSksICIpOlxuIik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2
ZXIuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDggQEAgc3RhdGljIENvbXBp
bGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIAogICAgIEFTU0VSVChjb2RlQmxvY2spOwog
ICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwotICAgIEFTU0VSVChjb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0g
ICAgQVNTRVJUKCFwcm9maWxlZERGR0NvZGVCbG9jayB8fCBwcm9maWxlZERGR0NvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0
ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoIXByb2ZpbGVkREZHQ29kZUJsb2NrIHx8IHByb2ZpbGVkREZHQ29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6REZHSklUKTsKICAgICAKICAgICBpZiAobG9nQ29tcGlsYXRpb25DaGFu
Z2VzKG1vZGUpKQogICAgICAgICBkYXRhTG9nKCJERkcoRHJpdmVyKSBjb21waWxpbmcgIiwgKmNv
ZGVCbG9jaywgIiB3aXRoICIsIG1vZGUsICIsIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgPSAiLCBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNSw3ICs1MjUs
NyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgICAgIGNv
bnRleHQgPSAmbXlDb250ZXh0OwogICAgIAogICAgIG91dC5wcmludCgiXG4iKTsKLSAgICBvdXQu
cHJpbnQoIkRGRyBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENv
ZGU6OkRGR0pJVCksICI6XG4iKTsKKyAgICBvdXQucHJpbnQoIkRGRyBmb3IgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVFR5cGU6OkRGR0pJVCksICI6XG4iKTsKICAgICBv
dXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTog
IiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAi
OyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1f
Zm9ybSA9PSBTU0EpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBlbnRyeXBvaW50SW5kZXggPSAw
OyBlbnRyeXBvaW50SW5kZXggPCBtX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrZW50cnlwb2lu
dEluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShy
ZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKIEpJVENvZGU6OkpJVENvZGUoKQotICAgIDogRGlyZWN0SklUQ29kZShE
RkdKSVQpCisgICAgOiBEaXJlY3RKSVRDb2RlKEpJVFR5cGU6OkRGR0pJVCkKICNpZiBFTkFCTEUo
RlRMX0pJVCkKICAgICAsIG9zckVudHJ5UmV0cnkoMCkKICAgICAsIGFiYW5kb25PU1JFbnRyeShm
YWxzZSkKQEAgLTEyMywxMyArMTIzLDEzIEBAIFJlZ2lzdGVyU2V0IEpJVENvZGU6OmxpdmVSZWdp
c3RlcnNUb1ByZXMKICNpZiBFTkFCTEUoRlRMX0pJVCkKIGJvb2wgSklUQ29kZTo6Y2hlY2tJZk9w
dGltaXphdGlvblRocmVzaG9sZFJlYWNoZWQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAg
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgQVNT
RVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7CiAgICAgcmV0dXJu
IHRpZXJVcENvdW50ZXIuY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoY29kZUJsb2NrKTsK
IH0KIAogdm9pZCBKSVRDb2RlOjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpE
RkdKSVQpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdK
SVQpOwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2coKmNv
ZGVCbG9jaywgIjogRlRMLW9wdGltaXppbmcgbmV4dCBpbnZvY2F0aW9uLlxuIik7CiAgICAgdGll
clVwQ291bnRlci5zZXROZXdUaHJlc2hvbGQoMCwgY29kZUJsb2NrKTsKQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEpJVENvZGU6Om9wdGltaXplTmV4dEludm9jYXRpb24oQ29kCiAKIHZvaWQgSklU
Q29kZTo6ZG9udE9wdGltaXplQW55dGltZVNvb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0g
ICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAg
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7CiAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBO
b3QgRlRMLW9wdGltaXppbmcgYW55dGltZSBzb29uLlxuIik7CiAgICAgdGllclVwQ291bnRlci5k
ZWZlckluZGVmaW5pdGVseSgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSklUQ29kZTo6ZG9u
dE9wdGltaXplQW55dGltZVNvb24oQ28KIAogdm9pZCBKSVRDb2RlOjpvcHRpbWl6ZUFmdGVyV2Fy
bVVwKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRUeXBlOjpERkdKSVQpOwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAg
ICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRlRMLW9wdGltaXppbmcgYWZ0ZXIgd2FybS11
cC5cbiIpOwogICAgIENvZGVCbG9jayogYmFzZWxpbmUgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSklUQ29kZTo6b3B0aW1pemVBZnRlcldh
cm1VcChDb2RlQmwKIAogdm9pZCBKSVRDb2RlOjpvcHRpbWl6ZVNvb24oQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJ
VCk7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygqY29k
ZUJsb2NrLCAiOiBGVEwtb3B0aW1pemluZyBzb29uLlxuIik7CiAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZSA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBKSVRDb2RlOjpvcHRpbWl6ZVNvb24oQ29kZUJsb2NrKiBjbwogCiB2b2lkIEpJVENvZGU6
OmZvcmNlT3B0aW1pemF0aW9uU2xvd1BhdGhDb25jdXJyZW50bHkoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJ
VCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7
CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZygqY29kZUJs
b2NrLCAiOiBGb3JjaW5nIHNsb3cgcGF0aCBjb25jdXJyZW50bHkgZm9yIEZUTCBlbnRyeS5cbiIp
OwogICAgIHRpZXJVcENvdW50ZXIuZm9yY2VTbG93UGF0aENvbmN1cnJlbnRseSgpOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgSklUQ29kZTo6Zm9yY2VPcHRpbWl6YXRpb25TbG93UGF0aEMKIHZv
aWQgSklUQ29kZTo6c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVz
dWx0KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb21waWxhdGlvblJlc3VsdCByZXN1bHQp
CiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7CiAg
ICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKICAg
ICAgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbihjb2RlQmxvY2spOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMjQ0NzYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHNpemVfdCBKSVRGaW5hbGl6ZXI6OmNvZGVTaXpl
KCkKIAogYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKIHsKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xp
bmtCdWZmZXIsIEpTRW50cnlQdHJUYWcsICJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2soKSwgSklUQ29kZTo6REZHSklU
KSkuZGF0YSgpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29k
ZVJlZiA9IEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIsIEpTRW50cnlQdHJUYWcsICJE
RkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxh
bi5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklUKSkuZGF0YSgpKTsKICAgICBtX2ppdENvZGUt
PmluaXRpYWxpemVDb2RlUmVmRm9yREZHKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpKTsKIAogICAg
IG1fcGxhbi5jb2RlQmxvY2soKS0+c2V0SklUQ29kZShtX2ppdENvZGUuY29weVJlZigpKTsKQEAg
LTcwLDcgKzcwLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dpdGhBcml0eUNoZWNrLmlzRW1wdHlWYWx1ZSgpKTsKICAg
ICBtX2ppdENvZGUtPmluaXRpYWxpemVDb2RlUmVmRm9yREZHKAotICAgICAgICBGSU5BTElaRV9E
RkdfQ09ERSgqbV9saW5rQnVmZmVyLCBKU0VudHJ5UHRyVGFnLCAiREZHIEpJVCBjb2RlIGZvciAl
cyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrKCksIEpJ
VENvZGU6OkRGR0pJVCkpLmRhdGEoKSksCisgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xp
bmtCdWZmZXIsIEpTRW50cnlQdHJUYWcsICJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
KSkuZGF0YSgpKSwKICAgICAgICAgbV93aXRoQXJpdHlDaGVjayk7CiAgICAgbV9wbGFuLmNvZGVC
bG9jaygpLT5zZXRKSVRDb2RlKG1faml0Q29kZS5jb3B5UmVmKCkpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjQ0NzYxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywg
QwogewogICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRU
eXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKLSAgICBBU1NF
UlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7CiAgICAgQVNTRVJUKCFjb2RlQmxvY2stPmppdENvZGVN
YXAoKSk7CiAKICAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKQEAgLTExNSw4
ICsxMTUsOCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAg
aWYgKGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PnNldERpZFRyeVRvRW50ZXJJbkxvb3AodHJ1ZSk7CiAgICAgCi0gICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpGVExKSVQpOworICAgIGlmIChjb2RlQmxv
Y2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpERkdKSVQpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklUKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFdoZW4gd2lsbCB0aGlzIGhhcHBlbj8gV2UgY291bGQgaGF2ZToKICAgICAgICAg
Ly8KQEAgLTM0MSwxMSArMzQxLDExIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIEMKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7IAotICAgIEFTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklU
Q29kZTo6RlRMSklUKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlw
ZTo6REZHSklUIHx8IGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCk7CiAK
LSAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSAmJiBjb2RlQmxvY2stPmppdENv
ZGUoKS0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCkKKyAgICBpZiAoIU9wdGlvbnM6OnVz
ZU9TUkVudHJ5VG9ERkcoKSAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+aml0VHlwZSgpID09IEpJ
VFR5cGU6OkRGR0pJVCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFPcHRpb25z
Ojp1c2VPU1JFbnRyeVRvRlRMKCkgJiYgY29kZUJsb2NrLT5qaXRDb2RlKCktPmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpGVExKSVQpCisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRMKCkg
JiYgY29kZUJsb2NrLT5qaXRDb2RlKCktPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjQ0NzYx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQoQ29u
dGV4dCYgY28KIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgp
ID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09
IEpJVFR5cGU6OkRGR0pJVCk7CiAKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0
IHdlIGRvbid0IEdDIHdoaWxlIGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAg
ICAgLy8gcmVhbGx5IGJlIHByb2ZpdGFibGUuCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBPU1JF
eGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjbwogICAgICAgICBwcmVwYXJlQ29kZU9yaWdp
bkZvck9TUkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwogCiAgICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKTsK
LSAgICAgICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgICAgICBBU1NFUlQoYmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7CiAKICAgICAgICAgU3BlY3VsYXRpb25SZWNvdmVy
eSogcmVjb3ZlcnkgPSBudWxscHRyOwogICAgICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXgg
IT0gVUlOVF9NQVgpIHsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIE9TUkV4aXQ6OmV4ZWN1dGVP
U1JFeGl0KENvbnRleHQmIGNvCiAKICAgICBPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSA9ICpleGl0
LmV4aXRTdGF0ZS5nZXQoKTsKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhp
dFN0YXRlLmJhc2VsaW5lQ29kZUJsb2NrOwotICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoYmFzZWxpbmVD
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7CiAKICAgICBPcGVy
YW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMgPSBleGl0U3RhdGUub3BlcmFuZHM7CiAgICAg
VmVjdG9yPFVuZGVmaW5lZE9wZXJhbmRTcGFuPiYgdW5kZWZpbmVkT3BlcmFuZFNwYW5zID0gZXhp
dFN0YXRlLnVuZGVmaW5lZE9wZXJhbmRTcGFuczsKQEAgLTc1Miw3ICs3NTIsNyBAQCBzdGF0aWMg
dm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENvbnRlCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZG4ndCBsZWF2ZSBob2xlcyBvbiB0aGUgc3RhY2sgd2hlbiBwZXJmb3JtaW5nIGFuIE9TUiBleGl0
CiAgICAgLy8gaW4gcHJlc2VuY2Ugb2YgaW5saW5lZCB0YWlsIGNhbGxzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1MTEKLSAgICBBU1NFUlQob3V0
ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgQVNTRVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUVHlwZTo6QmFzZWxpbmVKSVQpOwogICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2NrKj4o
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CiAK
ICAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwpAQCAtMTAzNSw3ICsxMDM1LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeAogCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsK
LSAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAg
ICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKIAogICAg
IC8vIEl0J3Mgc29ydCBvZiBwcmVmZXJhYmxlIHRoYXQgd2UgZG9uJ3QgR0Mgd2hpbGUgaW4gaGVy
ZS4gQW55d2F5cywgZG9pbmcgc28gd291bGRuJ3QKICAgICAvLyByZWFsbHkgYmUgcHJvZml0YWJs
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDEwICsxMTYsMTAgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYg
aml0LAogICAgICAgICBhY3RpdmVUaHJlc2hvbGQsIGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsK
ICAgICBpbnQzMl90IGNsaXBwZWRWYWx1ZTsKICAgICBzd2l0Y2ggKGppdC5jb2RlQmxvY2soKS0+
aml0VHlwZSgpKSB7Ci0gICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgY2FzZSBKSVRUeXBl
OjpERkdKSVQ6CiAgICAgICAgIGNsaXBwZWRWYWx1ZSA9IEJhc2VsaW5lRXhlY3V0aW9uQ291bnRl
cjo6Y2xpcHBlZFRocmVzaG9sZChqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLCB0YXJn
ZXRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSklUQ29kZTo6RlRMSklUOgorICAg
IGNhc2UgSklUVHlwZTo6RlRMSklUOgogICAgICAgICBjbGlwcGVkVmFsdWUgPSBVcHBlclRpZXJF
eGVjdXRpb25Db3VudGVyOjpjbGlwcGVkVGhyZXNob2xkKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0KCksIHRhcmdldFZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJz
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBsZWF2ZSBob2xlcyBvbiB0aGUgc3RhY2sgd2hl
biBwZXJmb3JtaW5nIGFuIE9TUiBleGl0CiAgICAgLy8gaW4gcHJlc2VuY2Ugb2YgaW5saW5lZCB0
YWlsIGNhbGxzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDc1MTEKLSAgICBBU1NFUlQoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKGppdC5iYXNlbGluZUNvZGVCbG9j
aygpLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwogICAgIGppdC5zdG9yZVB0
cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkp
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spKTsKIAogICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CkBA
IC0zMTAsNyArMzEwLDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2Fs
bAogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGl0ID0gaml0LmJhc2VsaW5lQ29kZUJs
b2NrRm9yKGV4aXQubV9jb2RlT3JpZ2luKTsKICAgICBBU1NFUlQoY29kZUJsb2NrRm9yRXhpdCA9
PSBjb2RlQmxvY2tGb3JFeGl0LT5iYXNlbGluZVZlcnNpb24oKSk7Ci0gICAgQVNTRVJUKGNvZGVC
bG9ja0ZvckV4aXQtPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKGNvZGVCbG9ja0ZvckV4aXQtPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gY29kZUxvY2F0aW9uID0gY29k
ZUJsb2NrRm9yRXhpdC0+aml0Q29kZU1hcCgpLmZpbmQoZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKTsKICAgICBBU1NFUlQoY29kZUxvY2F0aW9uKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCShy
ZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTEgQEAgdm9pZCBy
ZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogdm9pZCBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+Ci12b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4
aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQordm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJU
aHVuayhNYWNyb0Fzc2VtYmxlciYgaml0LCBWTSogdm0sIEpJVFR5cGUgaml0VHlwZSkKIHsKLSAg
ICBBU1NFUlQoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQgfHwgaml0VHlwZSA9PSBKSVRDb2Rl
OjpGVExKSVQpOworICAgIEFTU0VSVChqaXRUeXBlID09IEpJVFR5cGU6OkRGR0pJVCB8fCBqaXRU
eXBlID09IEpJVFR5cGU6OkZUTEpJVCk7CiAKLSAgICBib29sIGlzRlRMT1NSRXhpdCA9IGppdFR5
cGUgPT0gSklUQ29kZTo6RlRMSklUOworICAgIGJvb2wgaXNGVExPU1JFeGl0ID0gaml0VHlwZSA9
PSBKSVRUeXBlOjpGVExKSVQ7CiAgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9QcmVzZXJ2ZTsK
ICAgICByZWdpc3RlcnNUb1ByZXNlcnZlLnNldChHUFJJbmZvOjpyZWdUMCk7CiAgICAgaWYgKGlz
RlRMT1NSRXhpdCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTY3LDcgKzMxNjcsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vdyhFeGVjCiAgICAgCiAgICAgc2FuaXRp
emVTdGFja0ZvclZNKHZtKTsKIAotICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRD
b2RlOjpERkdKSVQpIHsKKyAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6
REZHSklUKSB7CiAgICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWQgY29kZSBibG9jayBpbiBERkct
PkZUTCB0aWVyLXVwOiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0zNDMzLDcgKzM0MzMsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vd0luTG9vCiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
dm0pOwogCi0gICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkg
eworICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpERkdKSVQpIHsKICAg
ICAgICAgZGF0YUxvZygiVW5leHBlY3RlZCBjb2RlIGJsb2NrIGluIERGRy0+RlRMIHRyaWdnZXIg
dGllciB1cCBub3cgaW4gbG9vcDogIiwgKmNvZGVCbG9jaywgIlxuIik7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMzQ2Nyw3ICszNDY3LDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50cnlOb3coRQogCiAgICAgc2FuaXRpemVTdGFj
a0ZvclZNKHZtKTsKIAotICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpE
RkdKSVQpIHsKKyAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6REZHSklU
KSB7CiAgICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWQgY29kZSBibG9jayBpbiBERkctPkZUTCB0
aWVyLXVwOiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKIAog
ICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB3ZSB1c2UgdGhlIHNjcmF0Y2ggYnVm
ZmVyIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBhbHNvIHVzZXMgdGhlIHNjcmF0Y2ggYnVmZmVyLgot
ICAgIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlclRodW5rPERGRzo6SklUQ29k
ZT4oaml0LCB2bSwgSklUQ29kZTo6REZHSklUKTsKKyAgICBhZGp1c3RGcmFtZUFuZFN0YWNrSW5P
U1JFeGl0Q29tcGlsZXJUaHVuazxERkc6OkpJVENvZGU+KGppdCwgdm0sIEpJVFR5cGU6OkRGR0pJ
VCk7CiAgICAgCiAgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAkocmV2aXNpb24gMjQ0NzYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHVuc2lnbmVkIFZhcmlhYmxlRXZlbnRT
dHJlYW06OnJlY29uc3RydWMKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBNaW5pZmllZEdyYXBoJiBncmFwaCwKICAgICB1bnNpZ25lZCBpbmRleCwgT3Bl
cmFuZHM8VmFsdWVSZWNvdmVyeT4mIHZhbHVlUmVjb3ZlcmllcywgVmVjdG9yPFVuZGVmaW5lZE9w
ZXJhbmRTcGFuPiogdW5kZWZpbmVkT3BlcmFuZFNwYW5zKSBjb25zdAogewotICAgIEFTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIEFTU0VSVChjb2Rl
QmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwogICAgIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpOwogCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgY29t
cGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9CiAgICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAg
ICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2Rl
QmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUo
Y29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4i
KTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RGTW92ZShyZWdpc3Rl
ck9mZnNldHMpKTsKICAgICBBU1NFUlQoIShzdGF0ZS5wcm9jLT5mcmFtZVNpemUoKSAlIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpKTsKICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdp
c3RlckNvdW50ID0gc3RhdGUucHJvYy0+ZnJhbWVTaXplKCkgLyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmUKICAgICBpZiAoQjM6OkFpcjo6RGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBz
dGF0ZS5wcm9jLT5jb2RlKCkuZGlzYXNzZW1ibGVyKCkpIHsKICAgICAgICAgUHJpbnRTdHJlYW0m
IG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKIAotICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCAi
LCBzdGF0ZS5ncmFwaC5tX3BsYW4ubW9kZSgpLCAiIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhK
SVRUeXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiLCBpbnN0
cnVjdGlvbiBjb3VudCA9ICIsIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCksICI6XG4iKTsKKyAgICAgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgIiwgc3RhdGUuZ3Jh
cGgubV9wbGFuLm1vZGUoKSwgIiBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShzdGF0
ZS5ncmFwaC5tX2NvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291
bnQgPSAiLCBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxu
Iik7CiAKICAgICAgICAgTGlua0J1ZmZlciYgbGlua0J1ZmZlciA9ICpzdGF0ZS5maW5hbGl6ZXIt
PmIzQ29kZUxpbmtCdWZmZXI7CiAgICAgICAgIEIzOjpWYWx1ZSogY3VycmVudEIzVmFsdWUgPSBu
dWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShy
ZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAogSklUQ29kZTo6SklUQ29kZSgpCi0g
ICAgOiBKU0M6OkpJVENvZGUoRlRMSklUKQorICAgIDogSlNDOjpKSVRDb2RlKEpJVFR5cGU6OkZU
TEpJVCkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5h
bGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
RmluYWxpemVyLmNwcAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMSArNzUsMTEg
QEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29tbW9uKCkKICAgICAKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gYjNDb2RlUmVmID0KICAgICAgICAgRklOQUxJ
WkVfQ09ERV9JRihkdW1wRGlzYXNzZW1ibHksICpiM0NvZGVMaW5rQnVmZmVyLCBKU0VudHJ5UHRy
VGFnLAotICAgICAgICAgICAgIkZUTCBCMyBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxv
Y2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrKCksIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEo
KSk7CisgICAgICAgICAgICAiRlRMIEIzIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9j
a1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklUKSkuZGF0YSgp
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBhcml0eUNoZWNr
Q29kZVJlZiA9IGVudHJ5cG9pbnRMaW5rQnVmZmVyCiAgICAgICAgID8gRklOQUxJWkVfQ09ERV9J
RihkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZlciwgSlNFbnRyeVB0clRhZywK
LSAgICAgICAgICAgICJGVEwgZW50cnlwb2ludCB0aHVuayBmb3IgJXMgd2l0aCBCMyBnZW5lcmF0
ZWQgY29kZSBhdCAlcCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29k
ZUJsb2NrKCksIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pCisgICAgICAgICAg
ICAiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggQjMgZ2VuZXJhdGVkIGNvZGUgYXQg
JXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpGVExKSVQpKS5kYXRhKCksIGZ1bmN0aW9uKQogICAgICAgICA6IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGIzQ29k
ZVJlZi5jb2RlKCkpOwogCiAgICAgaml0Q29kZS0+aW5pdGlhbGl6ZUIzQ29kZShiM0NvZGVSZWYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyNDQ3
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKFVO
TElLRUxZKGNvbXBpbGF0aW9uKSkgewogICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVzY3JpcHRp
b24oCiAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKLSAgICAgICAgICAgIHRv
Q1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5
cGUoY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIs
IGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CisgICAgICAg
ICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dp
dGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291
bnQgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIikpOwog
ICAgICAgICAKICAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICBn
cmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA2LDcgKzUwNiw3IEBAIGV4dGVybiAiQyIgdm9pZCogY29tcGlsZUZUTE9T
UkV4aXQoRXhlY1MKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OwogICAgIAogICAgIEFTU0VSVChjb2RlQmxvY2spOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpGVExKSVQpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpOwogICAgIAogICAgIC8vIEl0J3Mgc29ydCBvZiBwcmVm
ZXJhYmxlIHRoYXQgd2UgZG9uJ3QgR0Mgd2hpbGUgaW4gaGVyZS4gQW55d2F5cywgZG9pbmcgc28g
d291bGRuJ3QKICAgICAvLyByZWFsbHkgYmUgcHJvZml0YWJsZS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAKICAgICBp
ZiAoZnJhbWVBbmRTdGFja0FkanVzdG1lbnRSZXF1aXJlbWVudCA9PSBGcmFtZUFuZFN0YWNrQWRq
dXN0bWVudFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBo
YXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0
aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgICAgIGFkanVzdEZyYW1lQW5k
U3RhY2tJbk9TUkV4aXRDb21waWxlclRodW5rPEZUTDo6SklUQ29kZT4oaml0LCB2bSwgSklUQ29k
ZTo6RlRMSklUKTsKKyAgICAgICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVy
VGh1bms8RlRMOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRUeXBlOjpGVExKSVQpOwogICAgIH0KICAg
ICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVzcyIgd2lsbCBiZSB0aGUgSUQg
dGhhdCB3ZSBwYXNzIHRvIHRoZSBnZW5lcmF0aW9uIGZ1bmN0aW9uLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI0
NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTEgQEAgYm9vbCBDYWxsRnJhbWU6OmNhbGxT
aXRlQml0c0FyZUJ5dGVjb2RlTwogewogICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CiAgICAgc3dp
dGNoIChjb2RlQmxvY2soKS0+aml0VHlwZSgpKSB7Ci0gICAgY2FzZSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rOgotICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgY2FzZSBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rOgorICAgIGNhc2UgSklUVHlwZTo6QmFzZWxpbmVKSVQ6CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgSklUQ29kZTo6Tm9uZToKLSAgICBjYXNlIEpJ
VENvZGU6Okhvc3RDYWxsVGh1bms6CisgICAgY2FzZSBKSVRUeXBlOjpOb25lOgorICAgIGNhc2Ug
SklUVHlwZTo6SG9zdENhbGxUaHVuazoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CkBAIC03MSwxMSArNzEs
MTEgQEAgYm9vbCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FyZUNvZGVPcmlnaQogewogICAgIEFT
U0VSVChjb2RlQmxvY2soKSk7CiAgICAgc3dpdGNoIChjb2RlQmxvY2soKS0+aml0VHlwZSgpKSB7
Ci0gICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6Ci0gICAgY2FzZSBKSVRDb2RlOjpGVExKSVQ6Cisg
ICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6CisgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgSklUQ29kZTo6Tm9uZToKLSAgICBjYXNlIEpJVENv
ZGU6Okhvc3RDYWxsVGh1bms6CisgICAgY2FzZSBKSVRUeXBlOjpOb25lOgorICAgIGNhc2UgSklU
VHlwZTo6SG9zdENhbGxUaHVuazoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkocmV2aXNp
b24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlz
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Miw4ICs0OTIsOCBAQCB2b2lkIFN0YWNrVmlz
aXRvcjo6RnJhbWU6OmR1bXAoUHJpbnRTdHJlCiAgICAgICAgICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCA9IGNhbGxGcmFtZS0+Y2FsbFNpdGVJbmRleCgpOwogICAgICAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoaW5kZW50LCAiY2FsbFNpdGVJbmRleDogIiwgY2FsbFNp
dGVJbmRleC5iaXRzKCksICIgb2YgIiwgY29kZUJsb2NrLT5jb2RlT3JpZ2lucygpLnNpemUoKSwg
IlxuIik7CiAKLSAgICAgICAgICAgICAgICAgICAgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlID0g
Y29kZUJsb2NrLT5qaXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChqaXRUeXBlICE9
IEpJVENvZGU6OkZUTEpJVCkgeworICAgICAgICAgICAgICAgICAgICBKSVRUeXBlIGppdFR5cGUg
PSBjb2RlQmxvY2stPmppdFR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGppdFR5cGUg
IT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb2RlKiBq
aXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoaW5kZW50LCAiaml0Q29kZTogIiwgUmF3UG9pbnRlcihqaXRDb2RlKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0YXJ0ICIsIFJhd1BvaW50ZXIoaml0Q29k
ZS0+c3RhcnQoKSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgICAgICBpZiAobV9jb2RlQmxvY2spIHsKICAgICAgICAgICAgIEFTU0VSVChtX2Jhc2Vs
aW5lQ29kZUJsb2NrKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9iYXNlbGluZUNvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYXNlbGluZUNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVENvZGU6Ok5vbmUgfHwgSklUQ29kZTo6aXNCYXNlbGluZUNvZGUobV9i
YXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgICAgICAgICBBU1NFUlQobV9iYXNl
bGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6Ok5vbmUgfHwgSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUobV9iYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI0NDc2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTAzLDcgKzkwMyw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgCiAg
ICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAogICAgICAg
ICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKLSAgICAgICAgIkJhc2VsaW5lIEpJVCBjb2Rl
IGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklU
Q29kZTo6QmFzZWxpbmVKSVQpKS5kYXRhKCkpOworICAgICAgICAiQmFzZWxpbmUgSklUIGNvZGUg
Zm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCkpLmRhdGEoKSk7CiAgICAgCiAgICAgbV92bS0+bWFjaGluZUNvZGVC
eXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCiAgICAgICAgIHN0YXRpY19j
YXN0PGRvdWJsZT4ocmVzdWx0LnNpemUoKSkgLwpAQCAtOTExLDcgKzkxMSw3IEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoQ29k
ZUJsb2NrOjpMYXRlU2hyaW5rKTsKICAgICBtX2NvZGVCbG9jay0+c2V0SklUQ29kZSgKLSAgICAg
ICAgYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0aEFyaXR5Q2hlY2ssIEpJ
VENvZGU6OkJhc2VsaW5lSklUKSkpOworICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENv
ZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUVHlwZTo6QmFzZWxpbmVKSVQpKSk7CiAKICAg
ICBpZiAoSklUSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2dGKCJKSVQgZ2VuZXJh
dGVkIGNvZGUgZm9yICVwIGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVj
dXRhYmxlTWVtb3J5KCktPnN0YXJ0KCkudW50YWdnZWRQdHIoKSwgcmVzdWx0LmV4ZWN1dGFibGVN
ZW1vcnkoKS0+ZW5kKCkudW50YWdnZWRQdHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwxNyBAQCBKSVRD
b2RlOjp+SklUQ29kZSgpCiBjb25zdCBjaGFyKiBKSVRDb2RlOjp0eXBlTmFtZShKSVRUeXBlIGpp
dFR5cGUpCiB7CiAgICAgc3dpdGNoIChqaXRUeXBlKSB7Ci0gICAgY2FzZSBOb25lOgorICAgIGNh
c2UgSklUVHlwZTo6Tm9uZToKICAgICAgICAgcmV0dXJuICJOb25lIjsKLSAgICBjYXNlIEhvc3RD
YWxsVGh1bms6CisgICAgY2FzZSBKSVRUeXBlOjpIb3N0Q2FsbFRodW5rOgogICAgICAgICByZXR1
cm4gIkhvc3QiOwotICAgIGNhc2UgSW50ZXJwcmV0ZXJUaHVuazoKKyAgICBjYXNlIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bms6CiAgICAgICAgIHJldHVybiAiTExJbnQiOwotICAgIGNhc2UgQmFz
ZWxpbmVKSVQ6CisgICAgY2FzZSBKSVRUeXBlOjpCYXNlbGluZUpJVDoKICAgICAgICAgcmV0dXJu
ICJCYXNlbGluZSI7Ci0gICAgY2FzZSBERkdKSVQ6CisgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6
CiAgICAgICAgIHJldHVybiAiREZHIjsKLSAgICBjYXNlIEZUTEpJVDoKKyAgICBjYXNlIEpJVFR5
cGU6OkZUTEpJVDoKICAgICAgICAgcmV0dXJuICJGVEwiOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IENSQVNIKCk7CkBAIC0yNDEsNyArMjQxLDcgQEAgUmVnaXN0ZXJTZXQgSklUQ29kZTo6bGl2ZVJl
Z2lzdGVyc1RvUHJlcwogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6SklUQ29kZTo6SklUVHlwZSB0eXBlKQordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SklUVHlwZSB0eXBlKQogewogICAgIG91dC5w
cmludChKU0M6OkpJVENvZGU6OnR5cGVOYW1lKHR5cGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNTAgKzUxLDUwIEBAIHN0
cnVjdCBQcm90b0NhbGxGcmFtZTsKIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwogY2xhc3MgVk07
CiAKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgeworICAgIE5vbmUsCisgICAgSG9zdENh
bGxUaHVuaywKKyAgICBJbnRlcnByZXRlclRodW5rLAorICAgIEJhc2VsaW5lSklULAorICAgIERG
R0pJVCwKKyAgICBGVExKSVQKK307CisKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogcHVibGljOgogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+
IHVzaW5nIENvZGVQdHIgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjsKICAgICB0ZW1wbGF0
ZTxQdHJUYWcgdGFnPiB1c2luZyBDb2RlUmVmID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz47
CiAKLSAgICBlbnVtIEpJVFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAg
SG9zdENhbGxUaHVuaywKLSAgICAgICAgSW50ZXJwcmV0ZXJUaHVuaywKLSAgICAgICAgQmFzZWxp
bmVKSVQsCi0gICAgICAgIERGR0pJVCwKLSAgICAgICAgRlRMSklUCi0gICAgfTsKLSAgICAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogdHlwZU5hbWUoSklUVHlwZSk7CiAKICAgICBzdGF0aWMgSklU
VHlwZSBib3R0b21UaWVySklUKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlbGluZUpJVDsK
KyAgICAgICAgcmV0dXJuIEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KICAgICAKICAgICBz
dGF0aWMgSklUVHlwZSB0b3BUaWVySklUKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBGVExKSVQ7
CisgICAgICAgIHJldHVybiBKSVRUeXBlOjpGVExKSVQ7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBKSVRUeXBlIG5leHRUaWVySklUKEpJVFR5cGUgaml0VHlwZSkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAoaml0VHlwZSkgewotICAgICAgICBjYXNlIEJhc2VsaW5lSklUOgotICAgICAgICAgICAg
cmV0dXJuIERGR0pJVDsKLSAgICAgICAgY2FzZSBERkdKSVQ6Ci0gICAgICAgICAgICByZXR1cm4g
RlRMSklUOworICAgICAgICBjYXNlIEpJVFR5cGU6OkJhc2VsaW5lSklUOgorICAgICAgICAgICAg
cmV0dXJuIEpJVFR5cGU6OkRGR0pJVDsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6Cisg
ICAgICAgICAgICByZXR1cm4gSklUVHlwZTo6RlRMSklUOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biBOb25lOworICAgICAgICAgICAgcmV0dXJuIEpJVFR5cGU6Ok5vbmU7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgc3RhdGljIGJvb2wgaXNFeGVjdXRhYmxlU2NyaXB0KEpJVFR5cGUgaml0
VHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoaml0VHlwZSkgewotICAgICAgICBjYXNlIE5v
bmU6Ci0gICAgICAgIGNhc2UgSG9zdENhbGxUaHVuazoKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpO
b25lOgorICAgICAgICBjYXNlIEpJVFR5cGU6Okhvc3RDYWxsVGh1bms6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY291bGRCZUludGVy
cHJldGVkKEpJVFR5cGUgaml0VHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoaml0VHlwZSkg
ewotICAgICAgICBjYXNlIEludGVycHJldGVyVGh1bms6Ci0gICAgICAgIGNhc2UgQmFzZWxpbmVK
SVQ6CisgICAgICAgIGNhc2UgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgY2Fz
ZSBKSVRUeXBlOjpCYXNlbGluZUpJVDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDkgKzExNSw5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0pJVChKSVRUeXBlIGppdFR5cGUpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKGppdFR5cGUpIHsKLSAgICAgICAgY2FzZSBCYXNlbGluZUpJVDoKLSAg
ICAgICAgY2FzZSBERkdKSVQ6Ci0gICAgICAgIGNhc2UgRlRMSklUOgorICAgICAgICBjYXNlIEpJ
VFR5cGU6OkJhc2VsaW5lSklUOgorICAgICAgICBjYXNlIEpJVFR5cGU6OkRGR0pJVDoKKyAgICAg
ICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0OCwxMiArMTQ4LDEy
IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlw
ZSBqaXRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUIHx8IGpp
dFR5cGUgPT0gRlRMSklUOworICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpERkdK
SVQgfHwgaml0VHlwZSA9PSBKSVRUeXBlOjpGVExKSVQ7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJ
VDsKKyAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8
fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KIAogICAgIHZpcnR1YWwg
Y29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpJVFR5cGUgaml0
VHlwZUZvcihQb2ludGVyVHlwZSBqaXRDb2RlKQogICAgIHsKICAgICAgICAgaWYgKCFqaXRDb2Rl
KQotICAgICAgICAgICAgcmV0dXJuIE5vbmU7CisgICAgICAgICAgICByZXR1cm4gSklUVHlwZTo6
Tm9uZTsKICAgICAgICAgcmV0dXJuIGppdENvZGUtPmppdFR5cGUoKTsKICAgICB9CiAgICAgCkBA
IC0yNzgsNiArMjc4LDYgQEAgcHJpdmF0ZToKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQcmlu
dFN0cmVhbTsKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SklUQ29kZTo6
SklUVHlwZSk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkpJVFR5cGUp
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6cmVwb3J0VG9Qcm9maWxlcihQCiAKIHZv
aWQgSklURGlzYXNzZW1ibGVyOjpkdW1wSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUgSklU
IGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpC
YXNlbGluZUpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9uQ291bnQoKSwgIlxuIik7CisgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUg
SklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICBTb3VyY2U6ICIsIG1f
Y29kZUJsb2NrLT5zb3VyY2VDb2RlT25PbmVMaW5lKCksICJcbiIpOwogICAgIG91dC5wcmludCgi
ICAgQ29kZSBhdCBbIiwgUmF3UG9pbnRlcihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwg
IiwgUmF3UG9pbnRlcihzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3Mo
KSkgKyBsaW5rQnVmZmVyLnNpemUoKSksICIpOlxuIik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MjcsNyArMTQyNyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBpZiAoVU5MSUtF
TFkoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpKSB7CisgICAg
aWYgKFVOTElLRUxZKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgewogICAgICAgICBkYXRhTG9nKCJVbmV4cGVjdGVkIGNvZGUgYmxvY2sgaW4gQmFzZWxpbmUt
PkRGRyB0aWVyLXVwOiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0xNjYwLDggKzE2NjAsOCBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpKSB7Ci0gICAgY2Fz
ZSBKSVRDb2RlOjpERkdKSVQ6Ci0gICAgY2FzZSBKSVRDb2RlOjpGVExKSVQ6IHsKKyAgICBjYXNl
IEpJVFR5cGU6OkRGR0pJVDoKKyAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDogewogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZW50cnkgPSBERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29k
ZUluZGV4KTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OwogICAgIH0KQEAgLTE2ODIsOCArMTY4Miw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHJ5T1NSRW50ZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKG9w
dGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkpIHsKLSAgICBjYXNlIEpJVENvZGU6OkRGR0pJ
VDoKLSAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDogeworICAgIGNhc2UgSklUVHlwZTo6REZHSklU
OgorICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFyZUNhdGNoT1NS
RW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICByZXR1cm4gZW50cnkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkocmV2aXNpb24gMjQ0NzYxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjQsMTMgKzEyNCwxMyBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RG
dW5jdGlvCiAgICAgUmVmUHRyPEpJVENvZGU+IGZvckNhbGw7CiAgICAgaWYgKGdlbmVyYXRvcikg
ewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZW50cnkgPSBn
ZW5lcmF0b3Iodm0pLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgICAgIGZvckNhbGwg
PSBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShlbnRyeSwgZW50cnkuY29kZSgpLCBKSVRDb2Rl
OjpIb3N0Q2FsbFRodW5rLCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVm
KG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5LCBlbnRyeS5jb2RlKCksIEpJVFR5cGU6Okhvc3RDYWxs
VGh1bmssIGludHJpbnNpYykpOwogICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlKQotICAgICAgICBm
b3JDYWxsID0gYWRvcHRSZWYobmV3IE5hdGl2ZURPTUpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ2Fs
bCh2bSkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmss
IGludHJpbnNpYywgc2lnbmF0dXJlKSk7CisgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcg
TmF0aXZlRE9NSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxKU0VudHJ5
UHRyVGFnPigpKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljLCBzaWduYXR1cmUp
KTsKICAgICBlbHNlCi0gICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29k
ZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihjdGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklU
Q29kZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljKSk7CisgICAgICAgIGZvckNhbGwgPSBhZG9w
dFJlZihuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxK
U0VudHJ5UHRyVGFnPigpKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljKSk7CiAg
ICAgCi0gICAgUmVmPEpJVENvZGU+IGZvckNvbnN0cnVjdCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZl
SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qodm0pLnJldGFnZ2VkPEpTRW50cnlQdHJU
YWc+KCkpLCBKSVRDb2RlOjpIb3N0Q2FsbFRodW5rLCBOb0ludHJpbnNpYykpOworICAgIFJlZjxK
SVRDb2RlPiBmb3JDb25zdHJ1Y3QgPSBhZG9wdFJlZigqbmV3IE5hdGl2ZUpJVENvZGUoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
Y3RpTmF0aXZlQ29uc3RydWN0KHZtKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUVHlw
ZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMpKTsKICAgICAKICAgICBOYXRpdmVFeGVjdXRh
YmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCp2bSwgZm9y
Q2FsbC5yZWxlYXNlTm9uTnVsbCgpLCBmdW5jdGlvbiwgV1RGTW92ZShmb3JDb25zdHJ1Y3QpLCBj
b25zdHJ1Y3RvciwgbmFtZSk7CiAgICAgd2Vha0FkZCgqbV9ob3N0RnVuY3Rpb25TdHViTWFwLCBz
dGQ6Om1ha2VfdHVwbGUoZnVuY3Rpb24sIGNvbnN0cnVjdG9yLCBuYW1lKSwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPihuYXRpdmVFeGVjdXRhYmxlLCB0aGlzKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjawogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVk
REZHQ29kZUJsb2NrKQogewogICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZWRERkdDb2RlQmxvY2ss
ICFwcm9maWxlZERGR0NvZGVCbG9jayk7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRp
dmUoKS0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQp
OwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2co
Ik9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiBkaWQgYmVjb21lIHJl
YWR5LlxuIik7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2sKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxl
ZERGR0NvZGVCbG9jaywgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIEFTU0VSVCgh
cHJvZmlsZWRERkdDb2RlQmxvY2spOwotICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZl
KCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKGNvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsK
ICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICBkYXRhTG9nKCJP
cHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgcmVzdWx0OiAiLCByZXN1
bHQsICJcbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5j
cHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29y
a2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBKSVRXb3Jr
bGlzdDo6cG9sbChWTSYgdm0pCiB2b2lkIEpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGxvb3BPU1JFbnRyeUJ5dGVjb2RlT2Zmc2V0KQogewog
ICAgIERlZmVyR0MgZGVmZXJHQyhjb2RlQmxvY2stPnZtKCktPmhlYXApOwotICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmspOwogICAgIAogICAgIGlmIChjb2RlQmxvY2stPm1fZGlkRmFpbEpJVENv
bXBpbGF0aW9uKSB7CiAgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CkBA
IC0yODQsNyArMjg0LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZU5vdyhDb2RlQmxvY2sq
IAogewogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKICAgICBEZWZlckdDIGRlZmVyR0Mo
dm0tPmhlYXApOwotICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKQorICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBpc1BsYW5u
ZWQ7CkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZU5vdyhDb2Rl
QmxvY2sqIAogICAgIH0KICAgICAKICAgICAvLyBOb3cgaXQgbWlnaHQgYmUgY29tcGlsZWQhCi0g
ICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
CisgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmspCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBXZSBkbyB0aGlzIGluIGNhc2Ugd2Ug
aGFkIHByZXZpb3VzbHkgYXR0ZW1wdGVkLCBhbmQgdGhlbiBmYWlsZWQsIHRvIGNvbXBpbGUgd2l0
aCB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24g
MjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiByZWFkCiB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiB0YXJnZXQgPSBN
YWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8T3BlcmF0aW9uUHRyVGFnPihjYWxsKTsKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29k
ZTo6RlRMSklUKSB7CisgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZU
TEpJVCkgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+IHRo
dW5rID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9wZXJhdGlvblB0clRhZz46OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyh0YXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkucmV0YWdnZWQ8SklU
VGh1bmtQdHJUYWc+KCk7CiAgICAgICAgIHJldHVybiBjb2RlQmxvY2stPnZtKCktPmZ0bFRodW5r
cy0+a2V5Rm9yU2xvd1BhdGhDYWxsVGh1bmsodGh1bmspLmNhbGxUYXJnZXQoKS5yZXRhZ2dlZDxD
RnVuY3Rpb25QdHJUYWc+KCk7CiAgICAgfQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkCiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFn
PiBjYWxsLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKQog
ewogI2lmIEVOQUJMRShGVExfSklUKQotICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpGVExKSVQpIHsKKyAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlw
ZTo6RlRMSklUKSB7CiAgICAgICAgIFZNJiB2bSA9ICpjb2RlQmxvY2stPnZtKCk7CiAgICAgICAg
IEZUTDo6VGh1bmtzJiB0aHVua3MgPSAqdm0uZnRsVGh1bmtzOwogICAgICAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdl
dDxPcGVyYXRpb25QdHJUYWc+KGNhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2Rl
QmwKICAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBjYWxsUmVmID0gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpLnJldGFnZ2Vk
PEpTRW50cnlQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYXV0byBjYWxsQXJpdHlDaGVja1Jl
ZiA9IGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpLnJldGFnZ2VkQ29kZTxKU0VudHJ5
UHRyVGFnPigpOwotICAgICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShj
YWxsUmVmLCBjYWxsQXJpdHlDaGVja1JlZiwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisgICAgICAgICAgICAgICAgaml0Q29kZSA9
IG5ldyBEaXJlY3RKSVRDb2RlKGNhbGxSZWYsIGNhbGxBcml0eUNoZWNrUmVmLCBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAg
ICAgICAgIH0pOwogCiAgICAgICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigq
aml0Q29kZSkpOwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5
cG9pbnQoQ29kZUJsCiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CiAgICAg
ICAgICAgICBhdXRvIGNvbnN0cnVjdFJlZiA9IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
aygpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgICAgICAgICBhdXRvIGNvbnN0cnVj
dEFyaXR5Q2hlY2tSZWYgPSBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpLnJl
dGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpOwotICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBE
aXJlY3RKSVRDb2RlKGNvbnN0cnVjdFJlZiwgY29uc3RydWN0QXJpdHlDaGVja1JlZiwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7Cisg
ICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoY29uc3RydWN0UmVmLCBjb25z
dHJ1Y3RBcml0eUNoZWNrUmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKQEAgLTc2LDE0ICs3NiwxNCBAQCBzdGF0
aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsCiAgICAgICAgIHN0YXRpYyBEaXJl
Y3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGpp
dENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworICAgICAgICAgICAgaml0
Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CiAgICAgICAgIH0pOwogICAg
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN0YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtl
eSwgWyZdIHsKLSAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShnZXRDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUp
LCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2spLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0
dHJpYnV0ZTo6U2hhcmVkKTsKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29k
ZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtOTcsNyArOTcsNyBA
QCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqCiAgICAgICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0gewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGNvZGVSZWYgPSBldmFsRW50cnlUaHVuaygpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7Ci0g
ICAgICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoY29kZVJlZiwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVB
dHRyaWJ1dGU6OlNoYXJlZCk7CisgICAgICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENv
ZGUoY29kZVJlZiwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJp
bnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CiAgICAgICAgIH0pOwogICAg
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQo
Q29kZUJsb2NrKgogICAgIHN0YXRpYyBOYXRpdmVKSVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7Ci0gICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50
cnlQdHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRy
eVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OwogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7
CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQo
Q29kZUJsbwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBjb2RlUmVmID0gcHJvZ3JhbUVudHJ5VGh1bmsoKS5yZXRh
Z2dlZDxKU0VudHJ5UHRyVGFnPigpOwotICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVK
SVRDb2RlKGNvZGVSZWYsIEpJVENvZGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9J
bnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworICAgICAgICAgICAg
aml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOwogICAgICAgICB9KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VS
ZWYoKmppdENvZGUpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRp
YyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENvZGVCbG8KICAgICBzdGF0aWMgTmF0aXZlSklU
Q29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2
ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisgICAgICAgIGppdENvZGUgPSBuZXcgTmF0
aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBK
SVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICB9KTsKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogfQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KEMKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29k
ZVJlZiA9IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4o
KTsKLSAgICAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShjb2RlUmVmLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZl
SklUQ29kZShjb2RlUmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5v
SW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgfSk7
CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9n
cmFtRW50cnlwb2ludChDCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtl
eSwgWyZdIHsKLSAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8
SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0
dHJpYnV0ZTo6U2hhcmVkKTsKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdl
dENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBK
SVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zODMsMTUgKzM4MywxNSBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlQW5kU2V0SGV1cmlz
dGljcyhDCiAgICAgSklUV29ya2xpc3Q6OmVuc3VyZUdsb2JhbFdvcmtsaXN0KCkucG9sbCh2bSk7
CiAgICAgCiAgICAgc3dpdGNoIChjb2RlQmxvY2stPmppdFR5cGUoKSkgewotICAgIGNhc2UgSklU
Q29kZTo6QmFzZWxpbmVKSVQ6IHsKKyAgICBjYXNlIEpJVFR5cGU6OkJhc2VsaW5lSklUOiB7CiAg
ICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nRigi
ICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKICAgICAgICAgY29kZUJsb2NrLT5q
aXRTb29uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIEpJVENvZGU6
OkludGVycHJldGVyVGh1bms6IHsKKyAgICBjYXNlIEpJVFR5cGU6OkludGVycHJldGVyVGh1bms6
IHsKICAgICAgICAgSklUV29ya2xpc3Q6OmVuc3VyZUdsb2JhbFdvcmtsaXN0KCkuY29tcGlsZUxh
dGVyKGNvZGVCbG9jaywgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICByZXR1
cm4gY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQ7CisgICAgICAg
IHJldHVybiBjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAg
ICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZCBjb2RlIGJsb2Nr
IGluIExMSW50OiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICAKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGNvZGVCbG9jaywgIm9zckVudHJ5IiwgKCJhdCBiYyMiLCBsb29wT1NSRW50cnlCeXRlY29kZU9m
ZnNldCkpOwogCi0gICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6
QmFzZWxpbmVKSVQpOwogCiAgICAgY29uc3QgSklUQ29kZU1hcCYgY29kZU1hcCA9IGNvZGVCbG9j
ay0+aml0Q29kZU1hcCgpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGNv
ZGVMb2NhdGlvbiA9IGNvZGVNYXAuZmluZChsb29wT1NSRW50cnlCeXRlY29kZU9mZnNldCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw3ICs1OTAsNyBA
QCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkCiAgICAgICAgICAgICAg
ICAgLy8gaW5zaWRlIHRoZSBMTEludCdzIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uLiBTbyB3ZSBq
dXN0IHByb3RlY3QgYWdhaW5zdCB0aGlzCiAgICAgICAgICAgICAgICAgLy8gYnkgaWdub3Jpbmcg
aXQuCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRvcENvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmsgfHwgdG9wQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpIHsKKyAgICAgICAgICAgICAgICBpZiAodG9wQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklU
VHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCB0b3BDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRU
eXBlOjpCYXNlbGluZUpJVCkgewogICAgICAgICAgICAgICAgICAgICBib29sIGlzVmFsaWRQQzsK
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYml0czsKICNpZiBVU0UoSlNWQUxVRTY0KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuaAkocmV2aXNpb24gMjQ0NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyIHsgc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIH07CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CiAgICAgICAgICAg
ICBDb2RlQmxvY2tIYXNoIGNvZGVCbG9ja0hhc2g7Ci0gICAgICAgICAgICBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUgeyBKSVRDb2RlOjpOb25lIH07CisgICAgICAgICAgICBKSVRUeXBlIGppdFR5
cGUgeyBKSVRUeXBlOjpOb25lIH07CiAgICAgICAgIH07CiAKICAgICAgICAgQ29kZUxvY2F0aW9u
IHNlbWFudGljTG9jYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw3ICs2ODksNyBAQCBzdGF0aWMgUmVmPE5hdGl2ZUpJ
VENvZGU+IGppdENvZGVGb3JDYWxsCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUqIHJlc3VsdDsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0gewotICAgICAgICByZXN1bHQgPSBuZXcgTmF0aXZlSklUQ29kZShMTEludDo6
Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9uYXRpdmVfY2FsbF90cmFtcG9saW5lKSwg
SklUQ29kZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMpOworICAgICAgICByZXN1bHQgPSBu
ZXcgTmF0aXZlSklUQ29kZShMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9u
YXRpdmVfY2FsbF90cmFtcG9saW5lKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5z
aWMpOwogICAgIH0pOwogICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQpOwogfQpAQCAtNjk5LDcg
KzY5OSw3IEBAIHN0YXRpYyBSZWY8TmF0aXZlSklUQ29kZT4gaml0Q29kZUZvckNvbnMKICAgICBz
dGF0aWMgTmF0aXZlSklUQ29kZSogcmVzdWx0OwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIHJlc3Vs
dCA9IG5ldyBOYXRpdmVKSVRDb2RlKExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxs
aW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSksIEpJVENvZGU6Okhvc3RDYWxsVGh1bmss
IE5vSW50cmluc2ljKTsKKyAgICAgICAgcmVzdWx0ID0gbmV3IE5hdGl2ZUpJVENvZGUoTExJbnQ6
OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9s
aW5lKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMpOwogICAgIH0pOwogICAg
IHJldHVybiBtYWtlUmVmKCpyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyNDQ3NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgQ29kZVByb2ZpbGU6OnNhbXBsZSh2b2lkKiBwYywgdm9pZCoKICAgICAg
ICAgICAgIHR5cGUgPSBSZWdFeHBDb2RlOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4ob3duZXJVSUQpOwot
ICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCkK
KyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQp
CiAgICAgICAgICAgICAgICAgdHlwZSA9IERGR0pJVDsKICAgICAgICAgICAgIGVsc2UgaWYgKCFj
YW5Db21waWxlKGNvZGVCbG9jay0+Y2FwYWJpbGl0eUxldmVsU3RhdGUoKSkpCiAgICAgICAgICAg
ICAgICAgdHlwZSA9IEJhc2VsaW5lT25seTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI0NDc2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMCw3ICsx
MzAwLDcgQEAgY2xhc3MgQ2FsbGVyRnJhbWVKSVRUeXBlRnVuY3RvciB7CiBwdWJsaWM6CiAgICAg
Q2FsbGVyRnJhbWVKSVRUeXBlRnVuY3RvcigpCiAgICAgICAgIDogbV9jdXJyZW50RnJhbWUoMCkK
LSAgICAgICAgLCBtX2ppdFR5cGUoSklUQ29kZTo6Tm9uZSkKKyAgICAgICAgLCBtX2ppdFR5cGUo
SklUVHlwZTo6Tm9uZSkKICAgICB7CiAgICAgfQogCkBAIC0xMzEzLDExICsxMzEzLDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAgICAgfQogICAg
IAotICAgIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSgpIHsgcmV0dXJuIG1faml0VHlwZTsgfQor
ICAgIEpJVFR5cGUgaml0VHlwZSgpIHsgcmV0dXJuIG1faml0VHlwZTsgfQogCiBwcml2YXRlOgog
ICAgIG11dGFibGUgdW5zaWduZWQgbV9jdXJyZW50RnJhbWU7Ci0gICAgbXV0YWJsZSBKSVRDb2Rl
OjpKSVRUeXBlIG1faml0VHlwZTsKKyAgICBtdXRhYmxlIEpJVFR5cGUgbV9qaXRUeXBlOwogfTsK
IAogc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9uKEpT
VmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSkKQEAgLTEzNDQsNyArMTM0NCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBDYWxsZXJGcmFtZUpJVFR5cGVGdW5jdG9yIGZ1bmN0
b3I7CiAgICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmdW5jdG9yLmppdFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rvci5qaXRU
eXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykpOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaXMgYSBiYXNlbGluZSBKSVQgZnJhbWUuCkBAIC0xMzU1
LDcgKzEzNTUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQ2FsbGVy
RnJhbWVKSVRUeXBlRnVuY3RvciBmdW5jdG9yOwogICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rvci5qaXRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmdW5jdG9yLmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCkpOwogfQog
CiAvLyBTZXQgdGhhdCB0aGUgYXJndW1lbnQgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBpbmxpbmVk
Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>