<?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>150011</bug_id>
          
          <creation_ts>2015-10-10 22:46:36 -0700</creation_ts>
          <short_desc>Cleanup and simplification of SVG path-related classes</short_desc>
          <delta_ts>2015-10-11 20:34:48 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>krit</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132214</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 22:46:36 -0700</bug_when>
    <thetext>Cleanup and simplification of SVG path-related classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132218</commentid>
    <comment_count>1</comment_count>
      <attachid>262855</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 22:58:50 -0700</bug_when>
    <thetext>Created attachment 262855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132219</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-10 23:00:00 -0700</bug_when>
    <thetext>This depends on the patch in bug 150007 so EWS will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132233</commentid>
    <comment_count>3</comment_count>
      <attachid>262861</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-11 09:08:38 -0700</bug_when>
    <thetext>Created attachment 262861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132259</commentid>
    <comment_count>4</comment_count>
      <attachid>262861</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-10-11 14:24:34 -0700</bug_when>
    <thetext>Comment on attachment 262861
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132265</commentid>
    <comment_count>5</comment_count>
      <attachid>262861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-11 15:11:09 -0700</bug_when>
    <thetext>Comment on attachment 262861
Patch

Rejecting attachment 262861 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 262861, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 139 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
Authentication realm: &lt;http://svn.webkit.org:80&gt; Mac OS Forge
Password for &apos;commit-queue@webkit.org&apos;: 
Authentication realm: &lt;http://svn.webkit.org:80&gt; Mac OS Forge
Username: error: git-svn died of signal 11

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 139 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/269217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132273</commentid>
    <comment_count>6</comment_count>
      <attachid>262861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-11 20:34:42 -0700</bug_when>
    <thetext>Comment on attachment 262861
Patch

Clearing flags on attachment: 262861

Committed r190849: &lt;http://trac.webkit.org/changeset/190849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132274</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-11 20:34:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262855</attachid>
            <date>2015-10-10 22:58:50 -0700</date>
            <delta_ts>2015-10-11 09:08:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150011-20151010225814.patch</filename>
            <type>text/plain</type>
            <size>94950</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjZDkyMGQwZjQ3ZDJh
NjBjYTU4YTQ0ZDJlM2I1Njk0OGJiZDZhNC4uMTgyNmJmNmQ4NDZkMDc4NWQ4ZTEzNzczZTVjOTc5
ZDk4MzQ4ZTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0NiBAQAogMjAxNS0xMC0xMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbnVwIGFu
ZCBzaW1wbGlmaWNhdGlvbiBvZiBTVkcgcGF0aC1yZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hbnkgU1ZHIHBhdGgtcmVsYXRl
ZCBzdWJjbGFzc2VzIHdlcmUgc3RhdGVmdWwsIGJ1dCBvbmx5IGJlY2F1c2UgY29kZSBpbgorICAg
ICAgICBTVkdQYXRoVXRpbGl0aWVzIGtlcHQgZ2xvYmFsIGNvcGllcyBhcm91bmQgZm9yIG5vIHJl
YXNvbi4gQSBtaWNyb2JlbmNobWFyaworICAgICAgICBzaG93ZWQgdGhhdCB0aGVyZSB3YXMgbm8g
YmVuZWZpdCB0byBrZWVwaW5nIGdsb2JhbCBzaW5nbGV0b25zIG9mIFNWR1BhdGhCdWlsZGVyLAor
ICAgICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIsIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciwg
U1ZHUGF0aFN0cmluZ0J1aWxkZXIsCisgICAgICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIsIFNWR1BhdGhQYXJzZXIgYW5kIFNWR1BhdGhCbGVuZGVyLgorICAgICAgICAKKyAgICAgICAg
TWFraW5nIHRoZXNlIGNsYXNzZXMgbm90IGJlIHJlLXVzYWJsZSBtYWtlcyB0aGUgY29kZSBtdWNo
IHNpbXBsZXIsIGFsbG93aW5nCisgICAgICAgIHRoZWlyIFNWR1BhdGhTb3VyY2VzLCBTVkdQYXRo
Q29uc3VtZXJzLCBTVkdQYXRoQnl0ZVN0cmVhbSBldGMuIHRvIGJlIHN0b3JlZAorICAgICAgICBi
eSByZWZlcmVuY2UsIGFuZCBlbGltaW5hdGluZyB0aGUgY2xlYW51cCgpIGZ1bmN0aW9uIHdoaWNo
IGNyZWF0ZWQgYW5ub3lpbmcKKyAgICAgICAgb3JkZXJpbmcgaXNzdWVzLgorICAgICAgICAKKyAg
ICAgICAgQ29kZSB0aGF0IHVzZXMgU1ZHUGF0aFBhcnNlciBhbmQgU1ZHUGF0aEJsZW5kZXIgaXMg
ZnVydGhlciBzaW1wbGlmaWVkIGJ5IGhhdmluZworICAgICAgICB0aGVzZSBjbGFzc2VzIGV4cG9z
ZSBvbmx5IHN0YXRpYyBmdW5jdGlvbnMsIGhpZGluZyBhbnkgaW50ZXJuYWwgc3RhdGVmdWxuZXNz
LgorCisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcDogUmVtb3ZlIHRoZSBtX3Byb2dy
ZXNzIG1lbWJlciB2YXJpYWJsZSBhbmQgaW5zdGVhZAorICAgICAgICBwYXNzIHByb2dyZXNzIHRv
IHRoZSB2YXJpb3VzIGJsZW5kIGZ1bmN0aW9ucywgYXMgd2UgZG8gZm9yIG90aGVyIGJsZW5kIGZ1
bmN0aW9ucy4KKyAgICAgICAgRXhwb3NlIHR3byBvbmx5IHN0YXRpYyBmdW5jdGlvbnMuIFBvaW50
ZXJzIHRvIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6YWRk
QW5pbWF0ZWRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEFu
aW1hdGVkUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6U1ZHUGF0aEJs
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRE
aW1lbnNvbmFsRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5k
QW5pbWF0ZWRGbG9hdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpi
bGVuZE1vdmVUb1NlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJs
ZW5kTGluZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6Ymxl
bmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxl
bmRlcjo6YmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb0N1YmljU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0
aWNTbW9vdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVu
ZEFyY1RvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6Y2xlYW51
cCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVyLmg6IE1ha2UgdGhlIGNv
bnN0cnVjdG9yIHRha2UgYSByZWYgdG8gdGhlIGRlc3RpbmF0aW9uIFBhdGgsCisgICAgICAgIHdo
aWNoIGlzIHN0b3JlZCBieSByZWZlcmVuY2UuCisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRl
cjo6Y2xvc2VQYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpzZXRDdXJyZW50UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5jcHA6IFJlZmVyZW5jZXMsIGFzc2Vy
dGlvbnMgcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
cjo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1CdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXI6OndyaXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXI6OnNldEN1cnJlbnRCeXRlU3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0
aENvbnN1bWVyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFBhcnNlci5jcHA6IEV4cG9zZSBzb21lIHN0YXRpYyBoZWxwZXIgZnVuY3Rp
b25zIGZvciBwYXJzaW5nCisgICAgICAgIHRvIGJ5dGUgc3RyZWFtcyBhbmQgc3RyaW5ncy4gUmVm
ZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlVG9CeXRlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyOjpwYXJzZUNsb3NlUGF0aFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhQYXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6
OnBhcnNlQXJjVG9TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBh
cnNlUGF0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3Nl
QXJjVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhE
YXRhRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2Vy
OjpjbGVhbnVwKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6c2V0Q3VycmVudENvbnN1bWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnNldEN1cnJlbnRTb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvVmVydGljYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb1F1
YWRyYXRpY1Ntb290aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6
OmFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y2xvc2VQ
YXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OnNldEN1cnJlbnRTVkdQYXRoRWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OnNldEN1
cnJlbnRTVkdQYXRoU2VnTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OnNldEN1cnJlbnRTVkdQYXRoU2VnUm9sZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTdHJpbmdCdWlsZGVyOjpjbGVhbnVwKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjb250aW51ZUNvbnN1bWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjp0b3Rh
bExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
OjpjdXJyZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlcjo6c2V0RGVzaXJlZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXI6OnBhdGhTZWdtZW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6c2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6IFJlbW92ZSBnbG9i
YWxzIGFjY2Vzc29ycywgbWFraW5nIHRoaW5ncyBvbiB0aGUgc3RhY2sKKyAgICAgICAgaW5zdGVh
ZC4gVXNlIFNWR1BhdGhQYXJzZXIgaGVscGVyIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkUGF0aEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjphcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0
cmluZ0Zyb21CeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU3RyaW5nRnJvbVNW
R1BhdGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1G
cm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZGRUb1NWR1BhdGhCeXRlU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0UG9pbnRBdExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9i
YWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnbG9iYWxTVkdQYXRoQmxlbmRlcik6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6IENG
RkJ1aWxkZXIgbm8gbG9uZ2VyIGluaGVyaXRzIGZyb20gU1ZHUGF0aEJ1aWxkZXIuCisgICAgICAg
IEl0IGRpZCBub3RoaW5nIHdpdGggdGhlIFBhdGgsIHJlLWltcGxlbWVudGVkIGFsbCB0aGUgZnVu
Y3Rpb25zLCBhbmQgb25seSBtYWRlIHVzZSBvZgorICAgICAgICB0aGUgbV9jdXJyZW50IG1lbWJl
ciB2YXIsIHNvIGp1c3QgbWFrZSBpdCBpbmhlcml0IGZyb20gU1ZHUGF0aENvbnN1bWVyLCBhbmQg
aGF2ZQorICAgICAgICBpdHMgb3duIG1fY3VycmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyk6CisKKzIwMTUtMTAtMTAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgYW5kIG1vcmUgY29uc3QgaW4gU1ZHUGF0aFV0aWxpdGllcwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDA3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJsZW5kZXIuY3BwCmluZGV4IGMyMWQ1N2YxOGQ0ODI3ZDEyZDBiMWQ1YTExOTQwZWQ0
OTAxNmY2YTguLjdhYTg0ZThmN2EwZjE0YmUyYzU0ZDU5N2Q5MjU4NDFiNWVlNTY5NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywxMyArMjgsMjIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoQmxlbmRlcjo6U1ZHUGF0aEJsZW5kZXIoKQot
ICAgIDogbV9mcm9tU291cmNlKG51bGxwdHIpCi0gICAgLCBtX3RvU291cmNlKG51bGxwdHIpCi0g
ICAgLCBtX2NvbnN1bWVyKG51bGxwdHIpCi0gICAgLCBtX3Byb2dyZXNzKDApCi0gICAgLCBtX2Fk
ZFR5cGVzQ291bnQoMCkKLSAgICAsIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uKGZhbHNlKQor
Ym9vbCBTVkdQYXRoQmxlbmRlcjo6YWRkQW5pbWF0ZWRQYXRoKFNWR1BhdGhTb3VyY2UmIGZyb21T
b3VyY2UsIFNWR1BhdGhTb3VyY2UmIHRvU291cmNlLCBTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVy
LCB1bnNpZ25lZCByZXBlYXRDb3VudCkKK3sKKyAgICBTVkdQYXRoQmxlbmRlciBibGVuZGVyKGZy
b21Tb3VyY2UsIHRvU291cmNlLCBjb25zdW1lcik7CisgICAgcmV0dXJuIGJsZW5kZXIuYWRkQW5p
bWF0ZWRQYXRoKHJlcGVhdENvdW50KTsKK30KKworYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRB
bmltYXRlZFBhdGgoU1ZHUGF0aFNvdXJjZSYgZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSYgdG9T
b3VyY2UsIFNWR1BhdGhDb25zdW1lciYgY29uc3VtZXIsIGZsb2F0IHByb2dyZXNzKQoreworICAg
IFNWR1BhdGhCbGVuZGVyIGJsZW5kZXIoZnJvbVNvdXJjZSwgdG9Tb3VyY2UsIGNvbnN1bWVyKTsK
KyAgICByZXR1cm4gYmxlbmRlci5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcyk7Cit9CisKK1NW
R1BhdGhCbGVuZGVyOjpTVkdQYXRoQmxlbmRlcihTVkdQYXRoU291cmNlJiBmcm9tU291cmNlLCBT
VkdQYXRoU291cmNlJiB0b1NvdXJjZSwgU1ZHUGF0aENvbnN1bWVyJiBjb25zdW1lcikKKyAgICA6
IG1fZnJvbVNvdXJjZShmcm9tU291cmNlKQorICAgICwgbV90b1NvdXJjZSh0b1NvdXJjZSkKKyAg
ICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCiB7CiB9CiAKQEAgLTQzLDcgKzUzLDcgQEAgc3RhdGlj
IGlubGluZSBGbG9hdFBvaW50IGJsZW5kRmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBhLCBj
b25zdCBGbG9hdFBvaW50JgogICAgIHJldHVybiBGbG9hdFBvaW50KGJsZW5kKGEueCgpLCBiLngo
KSwgcHJvZ3Jlc3MpLCBibGVuZChhLnkoKSwgYi55KCksIHByb2dyZXNzKSk7CiB9CiAKLWZsb2F0
IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZsb2F0IGZyb20s
IGZsb2F0IHRvLCBGbG9hdEJsZW5kTW9kZSBibGVuZE1vZGUpCitmbG9hdCBTVkdQYXRoQmxlbmRl
cjo6YmxlbmRBbmltYXRlZERpbWVuc29uYWxGbG9hdChmbG9hdCBmcm9tLCBmbG9hdCB0bywgRmxv
YXRCbGVuZE1vZGUgYmxlbmRNb2RlLCBmbG9hdCBwcm9ncmVzcykKIHsKICAgICBpZiAobV9hZGRU
eXBlc0NvdW50KSB7CiAgICAgICAgIEFTU0VSVChtX2Zyb21Nb2RlID09IG1fdG9Nb2RlKTsKQEAg
LTUxLDIzICs2MSwyMyBAQCBmbG9hdCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRBbmltYXRlZERpbWVu
c29uYWxGbG9hdChmbG9hdCBmcm9tLCBmbG9hdCB0bywgRmxvYXRCbAogICAgIH0KIAogICAgIGlm
IChtX2Zyb21Nb2RlID09IG1fdG9Nb2RlKQotICAgICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8s
IG1fcHJvZ3Jlc3MpOworICAgICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsK
ICAgICAKICAgICBmbG9hdCBmcm9tVmFsdWUgPSBibGVuZE1vZGUgPT0gQmxlbmRIb3Jpem9udGFs
ID8gbV9mcm9tQ3VycmVudFBvaW50LngoKSA6IG1fZnJvbUN1cnJlbnRQb2ludC55KCk7CiAgICAg
ZmxvYXQgdG9WYWx1ZSA9IGJsZW5kTW9kZSA9PSBCbGVuZEhvcml6b250YWwgPyBtX3RvQ3VycmVu
dFBvaW50LngoKSA6IG1fdG9DdXJyZW50UG9pbnQueSgpOwogCiAgICAgLy8gVHJhbnNmb3JtIHRv
WSB0byB0aGUgY29vcmRpbmF0ZSBtb2RlIG9mIGZyb21ZCi0gICAgZmxvYXQgYW5pbVZhbHVlID0g
YmxlbmQoZnJvbSwgbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG8gKyB0b1Zh
bHVlIDogdG8gLSB0b1ZhbHVlLCBtX3Byb2dyZXNzKTsKKyAgICBmbG9hdCBhbmltVmFsdWUgPSBi
bGVuZChmcm9tLCBtX2Zyb21Nb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyB0byArIHRvVmFs
dWUgOiB0byAtIHRvVmFsdWUsIHByb2dyZXNzKTsKICAgICAKICAgICBpZiAobV9pc0luRmlyc3RI
YWxmT2ZBbmltYXRpb24pCiAgICAgICAgIHJldHVybiBhbmltVmFsdWU7CiAgICAgCiAgICAgLy8g
VHJhbnNmb3JtIHRoZSBhbmltYXRlZCBwb2ludCB0byB0aGUgY29vcmRpbmF0ZSBtb2RlLCBuZWVk
ZWQgZm9yIHRoZSBjdXJyZW50IHByb2dyZXNzLgotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSA9IGJs
ZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgbV9wcm9ncmVzcyk7CisgICAgZmxvYXQgY3VycmVudFZh
bHVlID0gYmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIG1f
dG9Nb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBhbmltVmFsdWUgKyBjdXJyZW50VmFsdWUg
OiBhbmltVmFsdWUgLSBjdXJyZW50VmFsdWU7CiB9CiAKLUZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwg
Y29uc3QgRmxvYXRQb2ludCYgdG9Qb2ludCkKK0Zsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJs
ZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwgY29uc3Qg
RmxvYXRQb2ludCYgdG9Qb2ludCwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgaWYgKG1fYWRkVHlw
ZXNDb3VudCkgewogICAgICAgICBBU1NFUlQobV9mcm9tTW9kZSA9PSBtX3RvTW9kZSk7CkBAIC03
Nyw3ICs4Nyw3IEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9h
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwKICAgICB9CiAKICAgICBpZiAobV9m
cm9tTW9kZSA9PSBtX3RvTW9kZSkKLSAgICAgICAgcmV0dXJuIGJsZW5kRmxvYXRQb2ludChmcm9t
UG9pbnQsIHRvUG9pbnQsIG1fcHJvZ3Jlc3MpOworICAgICAgICByZXR1cm4gYmxlbmRGbG9hdFBv
aW50KGZyb21Qb2ludCwgdG9Qb2ludCwgcHJvZ3Jlc3MpOwogCiAgICAgLy8gVHJhbnNmb3JtIHRv
UG9pbnQgdG8gdGhlIGNvb3JkaW5hdGUgbW9kZSBvZiBmcm9tUG9pbnQKICAgICBGbG9hdFBvaW50
IGFuaW1hdGVkUG9pbnQgPSB0b1BvaW50OwpAQCAtODYsMTMgKzk2LDEzIEBAIEZsb2F0UG9pbnQg
U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IGZyb21Qb2ludCwKICAgICBlbHNlCiAgICAgICAgIGFuaW1hdGVkUG9pbnQubW92ZSgtbV90b0N1
cnJlbnRQb2ludC54KCksIC1tX3RvQ3VycmVudFBvaW50LnkoKSk7CiAKLSAgICBhbmltYXRlZFBv
aW50ID0gYmxlbmRGbG9hdFBvaW50KGZyb21Qb2ludCwgYW5pbWF0ZWRQb2ludCwgbV9wcm9ncmVz
cyk7CisgICAgYW5pbWF0ZWRQb2ludCA9IGJsZW5kRmxvYXRQb2ludChmcm9tUG9pbnQsIGFuaW1h
dGVkUG9pbnQsIHByb2dyZXNzKTsKIAogICAgIGlmIChtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlv
bikKICAgICAgICAgcmV0dXJuIGFuaW1hdGVkUG9pbnQ7CiAKICAgICAvLyBUcmFuc2Zvcm0gdGhl
IGFuaW1hdGVkIHBvaW50IHRvIHRoZSBjb29yZGluYXRlIG1vZGUsIG5lZWRlZCBmb3IgdGhlIGN1
cnJlbnQgcHJvZ3Jlc3MuCi0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQgPSBibGVuZEZsb2F0
UG9pbnQobV9mcm9tQ3VycmVudFBvaW50LCBtX3RvQ3VycmVudFBvaW50LCBtX3Byb2dyZXNzKTsK
KyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCA9IGJsZW5kRmxvYXRQb2ludChtX2Zyb21DdXJy
ZW50UG9pbnQsIG1fdG9DdXJyZW50UG9pbnQsIHByb2dyZXNzKTsKICAgICBpZiAobV90b01vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcykKICAgICAgICAgcmV0dXJuIGFuaW1hdGVkUG9pbnQgKyBj
dXJyZW50UG9pbnQ7CiAKQEAgLTEwMCw2MyArMTEwLDYzIEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJs
ZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2lu
dCwKICAgICByZXR1cm4gYW5pbWF0ZWRQb2ludDsKIH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRNb3ZlVG9TZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kTW92ZVRvU2Vn
bWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsK
ICAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhh
c01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VNb3ZlVG9TZWdtZW50KGZyb21UYXJn
ZXRQb2ludCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZU1vdmVUb1NlZ21lbnQodG9U
YXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9yZURhdGEoKSAmJiAhbV9m
cm9tU291cmNlLnBhcnNlTW92ZVRvU2VnbWVudChmcm9tVGFyZ2V0UG9pbnQpKQorICAgICAgICB8
fCAhbV90b1NvdXJjZS5wYXJzZU1vdmVUb1NlZ21lbnQodG9UYXJnZXRQb2ludCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIG1fY29uc3VtZXItPm1vdmVUbyhibGVuZEFuaW1hdGVkRmxv
YXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBmYWxzZSwgbV9pc0luRmly
c3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUpOworICAgIG1fY29uc3Vt
ZXIubW92ZVRvKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJn
ZXRQb2ludCwgcHJvZ3Jlc3MpLCBmYWxzZSwgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBt
X2Zyb21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludCA9IG1fZnJvbU1v
ZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21UYXJnZXRQb2ludCA6IG1fZnJvbUN1cnJl
bnRQb2ludCArIGZyb21UYXJnZXRQb2ludDsKICAgICBtX3RvQ3VycmVudFBvaW50ID0gbV90b01v
ZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvVGFyZ2V0UG9pbnQgOiBtX3RvQ3VycmVudFBv
aW50ICsgdG9UYXJnZXRQb2ludDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRo
QmxlbmRlcjo6YmxlbmRMaW5lVG9TZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5k
TGluZVRvU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJn
ZXRQb2ludDsKICAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKChtX2Zyb21T
b3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VMaW5lVG9TZWdtZW50
KGZyb21UYXJnZXRQb2ludCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUxpbmVUb1Nl
Z21lbnQodG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9yZURhdGEo
KSAmJiAhbV9mcm9tU291cmNlLnBhcnNlTGluZVRvU2VnbWVudChmcm9tVGFyZ2V0UG9pbnQpKQor
ICAgICAgICB8fCAhbV90b1NvdXJjZS5wYXJzZUxpbmVUb1NlZ21lbnQodG9UYXJnZXRQb2ludCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY29uc3VtZXItPmxpbmVUbyhibGVuZEFu
aW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBtX2lzSW5G
aXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25z
dW1lci5saW5lVG8oYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVRhcmdldFBvaW50LCB0b1Rh
cmdldFBvaW50LCBwcm9ncmVzcyksIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9t
TW9kZSA6IG1fdG9Nb2RlKTsKICAgICBtX2Zyb21DdXJyZW50UG9pbnQgPSBtX2Zyb21Nb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBmcm9tVGFyZ2V0UG9pbnQgOiBtX2Zyb21DdXJyZW50UG9p
bnQgKyBmcm9tVGFyZ2V0UG9pbnQ7CiAgICAgbV90b0N1cnJlbnRQb2ludCA9IG1fdG9Nb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMgPyB0b1RhcmdldFBvaW50IDogbV90b0N1cnJlbnRQb2ludCAr
IHRvVGFyZ2V0UG9pbnQ7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQorYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBmbG9h
dCBmcm9tWCA9IDA7CiAgICAgZmxvYXQgdG9YID0gMDsKLSAgICBpZiAoKG1fZnJvbVNvdXJjZS0+
aGFzTW9yZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLT5wYXJzZUxpbmVUb0hvcml6b250YWxTZWdt
ZW50KGZyb21YKSkKLSAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQodG9YKSkKKyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpICYmICFt
X2Zyb21Tb3VyY2UucGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmcm9tWCkpCisgICAgICAg
IHx8ICFtX3RvU291cmNlLnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQodG9YKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+bGluZVRvSG9yaXpvbnRhbChibGVu
ZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZyb21YLCB0b1gsIEJsZW5kSG9yaXpvbnRhbCksIG1f
aXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6IG1fdG9Nb2RlKTsKKyAgICBt
X2NvbnN1bWVyLmxpbmVUb0hvcml6b250YWwoYmxlbmRBbmltYXRlZERpbWVuc29uYWxGbG9hdChm
cm9tWCwgdG9YLCBCbGVuZEhvcml6b250YWwsIHByb2dyZXNzKSwgbV9pc0luRmlyc3RIYWxmT2ZB
bmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2lu
dC5zZXRYKG1fZnJvbU1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21YIDogbV9mcm9t
Q3VycmVudFBvaW50LngoKSArIGZyb21YKTsKICAgICBtX3RvQ3VycmVudFBvaW50LnNldFgobV90
b01vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvWCA6IG1fdG9DdXJyZW50UG9pbnQueCgp
ICsgdG9YKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6Ymxl
bmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKQorYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRMaW5l
VG9WZXJ0aWNhbFNlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgZmxvYXQgZnJvbVkgPSAw
OwogICAgIGZsb2F0IHRvWSA9IDA7Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRh
KCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoZnJvbVkpKQot
ICAgICAgICB8fCAhbV90b1NvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQodG9ZKSkK
KyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UucGFy
c2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoZnJvbVkpKQorICAgICAgICB8fCAhbV90b1NvdXJjZS5w
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCh0b1kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX2NvbnN1bWVyLT5saW5lVG9WZXJ0aWNhbChibGVuZEFuaW1hdGVkRGltZW5zb25hbEZs
b2F0KGZyb21ZLCB0b1ksIEJsZW5kVmVydGljYWwpLCBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlv
biA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25zdW1lci5saW5lVG9WZXJ0aWNh
bChibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZyb21ZLCB0b1ksIEJsZW5kVmVydGljYWws
IHByb2dyZXNzKSwgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90
b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludC5zZXRZKG1fZnJvbU1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcyA/IGZyb21ZIDogbV9mcm9tQ3VycmVudFBvaW50LnkoKSArIGZyb21ZKTsK
ICAgICBtX3RvQ3VycmVudFBvaW50LnNldFkobV90b01vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRl
cyA/IHRvWSA6IG1fdG9DdXJyZW50UG9pbnQueSgpICsgdG9ZKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkKK2Jv
b2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb0N1YmljU2VnbWVudChmbG9hdCBwcm9ncmVz
cykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IGZy
b21Qb2ludDE7CkBAIC0xNjQsNzAgKzE3NCw3MCBAQCBib29sIFNWR1BhdGhCbGVuZGVyOjpibGVu
ZEN1cnZlVG9DdWJpY1NlZ21lbnQoKQogICAgIEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKICAg
ICBGbG9hdFBvaW50IHRvUG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdG9Qb2ludDI7Ci0gICAgaWYg
KChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VDdXJ2
ZVRvQ3ViaWNTZWdtZW50KGZyb21Qb2ludDEsIGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2ludCkp
Ci0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQodG9Qb2lu
dDEsIHRvUG9pbnQyLCB0b1RhcmdldFBvaW50KSkKKyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNN
b3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UucGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KGZyb21Q
b2ludDEsIGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2ludCkpCisgICAgICAgIHx8ICFtX3RvU291
cmNlLnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCh0b1BvaW50MSwgdG9Qb2ludDIsIHRvVGFyZ2V0
UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRv
Q3ViaWMoYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVBvaW50MSwgdG9Qb2ludDEpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tUG9p
bnQyLCB0b1BvaW50MiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9k
ZSA6IG1fdG9Nb2RlKTsKKyAgICBtX2NvbnN1bWVyLmN1cnZlVG9DdWJpYyhibGVuZEFuaW1hdGVk
RmxvYXRQb2ludChmcm9tUG9pbnQxLCB0b1BvaW50MSwgcHJvZ3Jlc3MpLAorICAgICAgICBibGVu
ZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tUG9pbnQyLCB0b1BvaW50MiwgcHJvZ3Jlc3MpLAorICAg
ICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9p
bnQsIHByb2dyZXNzKSwKKyAgICAgICAgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zy
b21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludCA9IG1fZnJvbU1vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21UYXJnZXRQb2ludCA6IG1fZnJvbUN1cnJlbnRQ
b2ludCArIGZyb21UYXJnZXRQb2ludDsKICAgICBtX3RvQ3VycmVudFBvaW50ID0gbV90b01vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvVGFyZ2V0UG9pbnQgOiBtX3RvQ3VycmVudFBvaW50
ICsgdG9UYXJnZXRQb2ludDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoQmxl
bmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAg
ICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IGZyb21Qb2ludDI7
CiAgICAgRmxvYXRQb2ludCB0b1RhcmdldFBvaW50OwogICAgIEZsb2F0UG9pbnQgdG9Qb2ludDI7
Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+
cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2lu
dCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21l
bnQodG9Qb2ludDIsIHRvVGFyZ2V0UG9pbnQpKQorICAgIGlmICgobV9mcm9tU291cmNlLmhhc01v
cmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS5wYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQo
ZnJvbVBvaW50MiwgZnJvbVRhcmdldFBvaW50KSkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UucGFy
c2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KHRvUG9pbnQyLCB0b1RhcmdldFBvaW50KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljU21vb3Ro
KGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDIsIHRvUG9pbnQyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVRh
cmdldFBvaW50LCB0b1RhcmdldFBvaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUp
OworICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljU21vb3RoKGJsZW5kQW5pbWF0ZWRGbG9hdFBv
aW50KGZyb21Qb2ludDIsIHRvUG9pbnQyLCBwcm9ncmVzcyksCisgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCwgcHJvZ3Jlc3MpLAor
ICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9k
ZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDogbV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdl
dFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9pbnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1fdG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZl
VG9RdWFkcmF0aWNTZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgRmxvYXRQb2ludCBmcm9tVGFy
Z2V0UG9pbnQ7CiAgICAgRmxvYXRQb2ludCBmcm9tUG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdG9U
YXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IHRvUG9pbnQxOwotICAgIGlmICgobV9mcm9tU291
cmNlLT5oYXNNb3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1NlZ21lbnQoZnJvbVBvaW50MSwgZnJvbVRhcmdldFBvaW50KSkKLSAgICAgICAgfHwgIW1fdG9T
b3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQodG9Qb2ludDEsIHRvVGFyZ2V0UG9p
bnQpKQorICAgIGlmICgobV9mcm9tU291cmNlLmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJj
ZS5wYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KGZyb21Qb2ludDEsIGZyb21UYXJnZXRQb2lu
dCkpCisgICAgICAgIHx8ICFtX3RvU291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
dG9Qb2ludDEsIHRvVGFyZ2V0UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X2NvbnN1bWVyLT5jdXJ2ZVRvUXVhZHJhdGljKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Q
b2ludDEsIHRvUG9pbnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
QW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/
IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25zdW1lci5jdXJ2ZVRvUXVhZHJhdGlj
KGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDEsIHRvUG9pbnQxLCBwcm9ncmVzcyks
CisgICAgICAgIGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJn
ZXRQb2ludCwgcHJvZ3Jlc3MpLAorICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/
IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50ID0gbV9mcm9t
TW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDogbV9mcm9tQ3Vy
cmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9pbnQgPSBtX3Rv
TW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1fdG9DdXJyZW50
UG9pbnQgKyB0b1RhcmdldFBvaW50OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1Bh
dGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKK2Jvb2wgU1ZH
UGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoZmxvYXQgcHJv
Z3Jlc3MpCiB7CiAgICAgRmxvYXRQb2ludCBmcm9tVGFyZ2V0UG9pbnQ7CiAgICAgRmxvYXRQb2lu
dCB0b1RhcmdldFBvaW50OwotICAgIGlmICgobV9mcm9tU291cmNlLT5oYXNNb3JlRGF0YSgpICYm
ICFtX2Zyb21Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoZnJvbVRh
cmdldFBvaW50KSkKLSAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQodG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFz
TW9yZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNl
Z21lbnQoZnJvbVRhcmdldFBvaW50KSkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UucGFyc2VDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCh0b1RhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+Y3VydmVUb1F1YWRyYXRpY1Ntb290aChibGVuZEFu
aW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBtX2lzSW5G
aXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25z
dW1lci5jdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21U
YXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCwgcHJvZ3Jlc3MpLCBtX2lzSW5GaXJzdEhhbGZPZkFu
aW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50
ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDog
bV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9p
bnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1f
dG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50OwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1RvU2VnbWVudCgpCitib29sIFNWR1BhdGhCbGVu
ZGVyOjpibGVuZEFyY1RvU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBmbG9hdCBmcm9t
UnggPSAwOwogICAgIGZsb2F0IGZyb21SeSA9IDA7CkBAIC0yNDEsMjkgKzI1MSwyOSBAQCBib29s
IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1RvU2VnbWVudCgpCiAgICAgYm9vbCB0b0xhcmdlQXJj
ID0gZmFsc2U7CiAgICAgYm9vbCB0b1N3ZWVwID0gZmFsc2U7CiAgICAgRmxvYXRQb2ludCB0b1Rh
cmdldFBvaW50OwotICAgIGlmICgobV9mcm9tU291cmNlLT5oYXNNb3JlRGF0YSgpICYmICFtX2Zy
b21Tb3VyY2UtPnBhcnNlQXJjVG9TZWdtZW50KGZyb21SeCwgZnJvbVJ5LCBmcm9tQW5nbGUsIGZy
b21MYXJnZUFyYywgZnJvbVN3ZWVwLCBmcm9tVGFyZ2V0UG9pbnQpKQotICAgICAgICB8fCAhbV90
b1NvdXJjZS0+cGFyc2VBcmNUb1NlZ21lbnQodG9SeCwgdG9SeSwgdG9BbmdsZSwgdG9MYXJnZUFy
YywgdG9Td2VlcCwgdG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9y
ZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLnBhcnNlQXJjVG9TZWdtZW50KGZyb21SeCwgZnJvbVJ5
LCBmcm9tQW5nbGUsIGZyb21MYXJnZUFyYywgZnJvbVN3ZWVwLCBmcm9tVGFyZ2V0UG9pbnQpKQor
ICAgICAgICB8fCAhbV90b1NvdXJjZS5wYXJzZUFyY1RvU2VnbWVudCh0b1J4LCB0b1J5LCB0b0Fu
Z2xlLCB0b0xhcmdlQXJjLCB0b1N3ZWVwLCB0b1RhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKG1fYWRkVHlwZXNDb3VudCkgewogICAgICAgICBBU1NFUlQobV9m
cm9tTW9kZSA9PSBtX3RvTW9kZSk7CiAgICAgICAgIEZsb2F0UG9pbnQgc2NhbGVkVG9UYXJnZXRQ
b2ludCA9IHRvVGFyZ2V0UG9pbnQ7CiAgICAgICAgIHNjYWxlZFRvVGFyZ2V0UG9pbnQuc2NhbGUo
bV9hZGRUeXBlc0NvdW50LCBtX2FkZFR5cGVzQ291bnQpOwotICAgICAgICBtX2NvbnN1bWVyLT5h
cmNUbyhmcm9tUnggKyB0b1J4ICogbV9hZGRUeXBlc0NvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcm9tUnkgKyB0b1J5ICogbV9hZGRUeXBlc0NvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tQW5nbGUgKyB0b0FuZ2xlICogbV9hZGRUeXBlc0NvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcm9tTGFyZ2VBcmMgfHwgdG9MYXJnZUFyYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJvbVN3ZWVwIHx8IHRvU3dlZXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyb21UYXJnZXRQb2ludCArIHNjYWxlZFRvVGFyZ2V0UG9pbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZnJvbU1vZGUpOworICAgICAgICBtX2NvbnN1bWVyLmFyY1Rv
KGZyb21SeCArIHRvUnggKiBtX2FkZFR5cGVzQ291bnQsCisgICAgICAgICAgICBmcm9tUnkgKyB0
b1J5ICogbV9hZGRUeXBlc0NvdW50LAorICAgICAgICAgICAgZnJvbUFuZ2xlICsgdG9BbmdsZSAq
IG1fYWRkVHlwZXNDb3VudCwKKyAgICAgICAgICAgIGZyb21MYXJnZUFyYyB8fCB0b0xhcmdlQXJj
LAorICAgICAgICAgICAgZnJvbVN3ZWVwIHx8IHRvU3dlZXAsCisgICAgICAgICAgICBmcm9tVGFy
Z2V0UG9pbnQgKyBzY2FsZWRUb1RhcmdldFBvaW50LAorICAgICAgICAgICAgbV9mcm9tTW9kZSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9jb25zdW1lci0+YXJjVG8oYmxlbmQoZnJvbVJ4LCB0
b1J4LCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQoZnJvbVJ5
LCB0b1J5LCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQoZnJv
bUFuZ2xlLCB0b0FuZ2xlLCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBmcm9tTGFyZ2VBcmMgOiB0b0xhcmdlQXJjLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZy
b21Td2VlcCA6IHRvU3dlZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6
IG1fdG9Nb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5hcmNUbyhibGVuZChmcm9tUngsIHRvUngs
IHByb2dyZXNzKSwKKyAgICAgICAgICAgIGJsZW5kKGZyb21SeSwgdG9SeSwgcHJvZ3Jlc3MpLAor
ICAgICAgICAgICAgYmxlbmQoZnJvbUFuZ2xlLCB0b0FuZ2xlLCBwcm9ncmVzcyksCisgICAgICAg
ICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZyb21MYXJnZUFyYyA6IHRvTGFyZ2VB
cmMsCisgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZyb21Td2VlcCA6
IHRvU3dlZXAsCisgICAgICAgICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0
UG9pbnQsIHRvVGFyZ2V0UG9pbnQsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIG1faXNJbkZpcnN0
SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6IG1fdG9Nb2RlKTsKICAgICB9CiAgICAgbV9m
cm9tQ3VycmVudFBvaW50ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJv
bVRhcmdldFBvaW50IDogbV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAg
IG1fdG9DdXJyZW50UG9pbnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9U
YXJnZXRQb2ludCA6IG1fdG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50OwpAQCAtMjk2LDI4
ICszMDYsMjEgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2VnbWVudEVxdWFsKGNvbnN0IFNWR1Bh
dGhTZWdUeXBlJiBmcm9tVHlwZSwgY29uc3QgU1ZHUGF0aFMKICAgICByZXR1cm4gdG8gPT0gZnJv
bSAtIDE7CiB9CiAKLWJvb2wgU1ZHUGF0aEJsZW5kZXI6OmFkZEFuaW1hdGVkUGF0aChTVkdQYXRo
U291cmNlKiBmcm9tU291cmNlLCBTVkdQYXRoU291cmNlKiB0b1NvdXJjZSwgU1ZHUGF0aENvbnN1
bWVyKiBjb25zdW1lciwgdW5zaWduZWQgcmVwZWF0Q291bnQpCitib29sIFNWR1BhdGhCbGVuZGVy
OjphZGRBbmltYXRlZFBhdGgodW5zaWduZWQgcmVwZWF0Q291bnQpCiB7CiAgICAgVGVtcG9yYXJ5
Q2hhbmdlPHVuc2lnbmVkPiBjaGFuZ2UobV9hZGRUeXBlc0NvdW50LCByZXBlYXRDb3VudCk7Ci0g
ICAgcmV0dXJuIGJsZW5kQW5pbWF0ZWRQYXRoKDAsIGZyb21Tb3VyY2UsIHRvU291cmNlLCBjb25z
dW1lcik7CisgICAgcmV0dXJuIGJsZW5kQW5pbWF0ZWRQYXRoKDApOwogfQogCi1ib29sIFNWR1Bh
dGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBwcm9ncmVzcywgU1ZHUGF0aFNvdXJj
ZSogZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSogdG9Tb3VyY2UsIFNWR1BhdGhDb25zdW1lciog
Y29uc3VtZXIpCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBw
cm9ncmVzcykKIHsKLSAgICBBU1NFUlQoZnJvbVNvdXJjZSk7Ci0gICAgQVNTRVJUKHRvU291cmNl
KTsKLSAgICBBU1NFUlQoY29uc3VtZXIpOwotICAgIG1fZnJvbVNvdXJjZSA9IGZyb21Tb3VyY2U7
Ci0gICAgbV90b1NvdXJjZSA9IHRvU291cmNlOwotICAgIG1fY29uc3VtZXIgPSBjb25zdW1lcjsK
ICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA9IHByb2dyZXNzIDwgMC41ZjsKLSAgICBt
X3Byb2dyZXNzID0gcHJvZ3Jlc3M7CiAKLSAgICBib29sIGZyb21Tb3VyY2VIYWREYXRhID0gbV9m
cm9tU291cmNlLT5oYXNNb3JlRGF0YSgpOwotICAgIHdoaWxlIChtX3RvU291cmNlLT5oYXNNb3Jl
RGF0YSgpKSB7CisgICAgYm9vbCBmcm9tU291cmNlSGFkRGF0YSA9IG1fZnJvbVNvdXJjZS5oYXNN
b3JlRGF0YSgpOworICAgIHdoaWxlIChtX3RvU291cmNlLmhhc01vcmVEYXRhKCkpIHsKICAgICAg
ICAgU1ZHUGF0aFNlZ1R5cGUgZnJvbUNvbW1hbmQ7CiAgICAgICAgIFNWR1BhdGhTZWdUeXBlIHRv
Q29tbWFuZDsKLSAgICAgICAgaWYgKChmcm9tU291cmNlSGFkRGF0YSAmJiAhbV9mcm9tU291cmNl
LT5wYXJzZVNWR1NlZ21lbnRUeXBlKGZyb21Db21tYW5kKSkgfHwgIW1fdG9Tb3VyY2UtPnBhcnNl
U1ZHU2VnbWVudFR5cGUodG9Db21tYW5kKSkKKyAgICAgICAgaWYgKChmcm9tU291cmNlSGFkRGF0
YSAmJiAhbV9mcm9tU291cmNlLnBhcnNlU1ZHU2VnbWVudFR5cGUoZnJvbUNvbW1hbmQpKSB8fCAh
bV90b1NvdXJjZS5wYXJzZVNWR1NlZ21lbnRUeXBlKHRvQ29tbWFuZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV90b01vZGUgPSBjb29yZGluYXRlTW9kZU9mQ29tbWFu
ZCh0b0NvbW1hbmQpOwpAQCAtMzMxLDUwICszMzQsNTAgQEAgYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRBbmltYXRlZFBhdGgoZmxvYXQgcHJvZ3Jlc3MsIFNWR1BhdGhTb3VyY2UqIGZyb21Tb3Vy
Y2UKICAgICAgICAgc3dpdGNoICh0b0NvbW1hbmQpIHsKICAgICAgICAgY2FzZSBQYXRoU2VnTW92
ZVRvUmVsOgogICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6Ci0gICAgICAgICAgICBpZiAo
IWJsZW5kTW92ZVRvU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZE1vdmVUb1NlZ21l
bnQocHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9SZWw6CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb0FiczoKLSAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9TZWdtZW50KCkpCisg
ICAgICAgICAgICBpZiAoIWJsZW5kTGluZVRvU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb0hvcml6b250YWxSZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6
b250YWxBYnM6Ci0gICAgICAgICAgICBpZiAoIWJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQo
KSkKKyAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChwcm9ncmVz
cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsOgogICAgICAgICBjYXNlIFBhdGhT
ZWdMaW5lVG9WZXJ0aWNhbEFiczoKLSAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9WZXJ0aWNh
bFNlZ21lbnQoKSkKKyAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQo
cHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6Ci0gICAgICAgICAgICBtX2NvbnN1
bWVyLT5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXIuY2xvc2VQYXRoKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsOgog
ICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM6Ci0gICAgICAgICAgICBpZiAoIWJs
ZW5kQ3VydmVUb0N1YmljU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZEN1cnZlVG9D
dWJpY1NlZ21lbnQocHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhS
ZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFiczoKLSAgICAgICAg
ICAgIGlmICghYmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkpCisgICAgICAgICAgICBp
ZiAoIWJsZW5kQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNBYnM6Ci0gICAgICAgICAgICBpZiAoIWJsZW5kQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
KSkKKyAgICAgICAgICAgIGlmICghYmxlbmRDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudChwcm9ncmVz
cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6CiAgICAgICAgIGNh
c2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM6Ci0gICAgICAgICAgICBpZiAoIWJs
ZW5kQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSkKKyAgICAgICAgICAgIGlmICghYmxl
bmRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0aFNl
Z0FyY1JlbDoKICAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgotICAgICAgICAgICAgaWYgKCFi
bGVuZEFyY1RvU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZEFyY1RvU2VnbWVudChw
cm9ncmVzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGF0aFNlZ1Vua25vd246CkBAIC0zODMsMjcgKzM4NiwxMyBAQCBi
b29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBwcm9ncmVzcywgU1ZH
UGF0aFNvdXJjZSogZnJvbVNvdXJjZQogCiAgICAgICAgIGlmICghZnJvbVNvdXJjZUhhZERhdGEp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKG1fZnJvbVNvdXJjZS0+aGFzTW9y
ZURhdGEoKSAhPSBtX3RvU291cmNlLT5oYXNNb3JlRGF0YSgpKQorICAgICAgICBpZiAobV9mcm9t
U291cmNlLmhhc01vcmVEYXRhKCkgIT0gbV90b1NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZnJvbVNvdXJjZS0+aGFzTW9yZURh
dGEoKSB8fCAhbV90b1NvdXJjZS0+aGFzTW9yZURhdGEoKSkKKyAgICAgICAgaWYgKCFtX2Zyb21T
b3VyY2UuaGFzTW9yZURhdGEoKSB8fCAhbV90b1NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
U1ZHUGF0aEJsZW5kZXI6OmNsZWFudXAoKQotewotICAgIEFTU0VSVChtX3RvU291cmNlKTsKLSAg
ICBBU1NFUlQobV9mcm9tU291cmNlKTsKLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0KLSAgICBt
X2NvbnN1bWVyLT5jbGVhbnVwKCk7Ci0gICAgbV90b1NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9m
cm9tU291cmNlID0gbnVsbHB0cjsKLSAgICBtX2NvbnN1bWVyID0gbnVsbHB0cjsKLSAgICBtX2Zy
b21DdXJyZW50UG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV90b0N1cnJlbnRQb2ludCA9IEZs
b2F0UG9pbnQoKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCbGVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuaAppbmRleCAw
NmJhYWQxODYwNjIyNGM4ODQ5YWY0ZjI5ZmNkNWE2NTI3ODk2YmRmLi41MDVkMTA4MDcxNDBmNWQ0
MDQ3ZmJiODViNzEwMTU5ZDZjYjViYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJsZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNCwzOCArMzUsNDAgQEAgY2xhc3MgU1ZHUGF0aFNvdXJjZTsKIGNsYXNzIFNWR1BhdGhCbGVu
ZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdQYXRoQmxlbmRlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNWR1BhdGhCbGVuZGVyKCk7CiAKLSAgICBi
b29sIGFkZEFuaW1hdGVkUGF0aChTVkdQYXRoU291cmNlKiwgU1ZHUGF0aFNvdXJjZSosIFNWR1Bh
dGhDb25zdW1lciosIHVuc2lnbmVkIHJlcGVhdENvdW50KTsKLSAgICBib29sIGJsZW5kQW5pbWF0
ZWRQYXRoKGZsb2F0LCBTVkdQYXRoU291cmNlKiwgU1ZHUGF0aFNvdXJjZSosIFNWR1BhdGhDb25z
dW1lciopOwotICAgIHZvaWQgY2xlYW51cCgpOworICAgIHN0YXRpYyBib29sIGFkZEFuaW1hdGVk
UGF0aChTVkdQYXRoU291cmNlJiBmcm9tLCBTVkdQYXRoU291cmNlJiB0bywgU1ZHUGF0aENvbnN1
bWVyJiwgdW5zaWduZWQgcmVwZWF0Q291bnQpOworICAgIHN0YXRpYyBib29sIGJsZW5kQW5pbWF0
ZWRQYXRoKFNWR1BhdGhTb3VyY2UmIGZyb20sIFNWR1BhdGhTb3VyY2UmIHRvLCBTVkdQYXRoQ29u
c3VtZXImLCBmbG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBibGVuZE1vdmVUb1NlZ21lbnQo
KTsKLSAgICBib29sIGJsZW5kTGluZVRvU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRMaW5lVG9I
b3Jpem9udGFsU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQo
KTsKLSAgICBib29sIGJsZW5kQ3VydmVUb0N1YmljU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRD
dXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCk7Ci0gICAgYm9vbCBibGVuZEN1cnZlVG9RdWFkcmF0
aWNTZWdtZW50KCk7Ci0gICAgYm9vbCBibGVuZEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50
KCk7Ci0gICAgYm9vbCBibGVuZEFyY1RvU2VnbWVudCgpOworICAgIFNWR1BhdGhCbGVuZGVyKFNW
R1BhdGhTb3VyY2UmLCBTVkdQYXRoU291cmNlJiwgU1ZHUGF0aENvbnN1bWVyJik7CiAKLSAgICBm
bG9hdCBibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZsb2F0LCBmbG9hdCwgRmxvYXRCbGVu
ZE1vZGUpOwotICAgIEZsb2F0UG9pbnQgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgZnJvbSwgY29uc3QgRmxvYXRQb2ludCYgdG8pOworICAgIGJvb2wgYWRkQW5pbWF0
ZWRQYXRoKHVuc2lnbmVkIHJlcGVhdENvdW50KTsKKyAgICBib29sIGJsZW5kQW5pbWF0ZWRQYXRo
KGZsb2F0IHByb2dyZXNzKTsKIAotICAgIFNWR1BhdGhTb3VyY2UqIG1fZnJvbVNvdXJjZTsKLSAg
ICBTVkdQYXRoU291cmNlKiBtX3RvU291cmNlOwotICAgIFNWR1BhdGhDb25zdW1lciogbV9jb25z
dW1lcjsKKyAgICBib29sIGJsZW5kTW92ZVRvU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAg
Ym9vbCBibGVuZExpbmVUb1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZExp
bmVUb1ZlcnRpY2FsU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZEN1cnZl
VG9DdWJpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTZWdtZW50KGZsb2F0IHByb2dyZXNzKTsKKyAgICBib29sIGJsZW5kQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZEFyY1Rv
U2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisKKyAgICBmbG9hdCBibGVuZEFuaW1hdGVkRGltZW5z
b25hbEZsb2F0KGZsb2F0IGZyb20sIGZsb2F0IHRvLCBGbG9hdEJsZW5kTW9kZSwgZmxvYXQgcHJv
Z3Jlc3MpOworICAgIEZsb2F0UG9pbnQgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgZnJvbSwgY29uc3QgRmxvYXRQb2ludCYgdG8sIGZsb2F0IHByb2dyZXNzKTsKKwor
ICAgIFNWR1BhdGhTb3VyY2UmIG1fZnJvbVNvdXJjZTsKKyAgICBTVkdQYXRoU291cmNlJiBtX3Rv
U291cmNlOworICAgIFNWR1BhdGhDb25zdW1lciYgbV9jb25zdW1lcjsKIAogICAgIEZsb2F0UG9p
bnQgbV9mcm9tQ3VycmVudFBvaW50OwogICAgIEZsb2F0UG9pbnQgbV90b0N1cnJlbnRQb2ludDsK
ICAgICAKLSAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9mcm9tTW9kZTsKLSAgICBQYXRoQ29vcmRp
bmF0ZU1vZGUgbV90b01vZGU7Ci0gICAgZmxvYXQgbV9wcm9ncmVzczsKLSAgICB1bnNpZ25lZCBt
X2FkZFR5cGVzQ291bnQ7Ci0gICAgYm9vbCBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbjsKKyAg
ICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9mcm9tTW9kZSB7IEFic29sdXRlQ29vcmRpbmF0ZXMgfTsK
KyAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV90b01vZGUgeyBBYnNvbHV0ZUNvb3JkaW5hdGVzIH07
CisgICAgdW5zaWduZWQgbV9hZGRUeXBlc0NvdW50IHsgMCB9OworICAgIGJvb2wgbV9pc0luRmly
c3RIYWxmT2ZBbmltYXRpb24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5jcHAKaW5kZXggY2I4ZTc5NGIzNzg0YTZj
MTIxZDY5MDA2MzM1NWI0NjM5YTAwN2E2OC4uZDllMTQxY2I2MjAxNzc1ZTdjMTUxMjdkZDM2NjAw
YjJhMTk5NGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVy
cwogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDQzICsyOCwz
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVp
bGRlcigpCi0gICAgOiBtX3BhdGgobnVsbHB0cikKK1NWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVp
bGRlcihQYXRoJiBwYXRoKQorICAgIDogbV9wYXRoKHBhdGgpCiB7CiB9CiAKIHZvaWQgU1ZHUGF0
aEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCBjbG9z
ZWQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgpOwogICAg
IG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRhcmdldFBvaW50IDog
bV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKGNsb3NlZCAmJiAhbV9wYXRoLT5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7Ci0gICAgbV9wYXRoLT5tb3Zl
VG8obV9jdXJyZW50KTsKKyAgICBpZiAoY2xvc2VkICYmICFtX3BhdGguaXNFbXB0eSgpKQorICAg
ICAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRoLm1vdmVUbyhtX2N1cnJlbnQp
OwogfQogCiB2b2lkIFNWR1BhdGhCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgp
OwogICAgIG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRhcmdldFBv
aW50IDogbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7Ci0gICAgbV9wYXRoLT5hZGRMaW5lVG8obV9j
dXJyZW50KTsKKyAgICBtX3BhdGguYWRkTGluZVRvKG1fY3VycmVudCk7CiB9CiAKIHZvaWQgU1ZH
UGF0aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhD
b29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgpOwogICAgIGlmIChtb2Rl
ID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKLSAgICAgICAgbV9wYXRoLT5hZGRCZXppZXJDdXJ2
ZVRvKG1fY3VycmVudCArIHBvaW50MSwgbV9jdXJyZW50ICsgcG9pbnQyLCBtX2N1cnJlbnQgKyB0
YXJnZXRQb2ludCk7CisgICAgICAgIG1fcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKG1fY3VycmVudCAr
IHBvaW50MSwgbV9jdXJyZW50ICsgcG9pbnQyLCBtX2N1cnJlbnQgKyB0YXJnZXRQb2ludCk7CiAg
ICAgICAgIG1fY3VycmVudCArPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2N1cnJlbnQgPSB0YXJnZXRQb2ludDsKLSAgICAgICAgbV9wYXRoLT5hZGRCZXppZXJDdXJ2ZVRv
KHBvaW50MSwgcG9pbnQyLCBtX2N1cnJlbnQpOworICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3Vy
dmVUbyhwb2ludDEsIHBvaW50MiwgbV9jdXJyZW50KTsKICAgICB9ICAgIAogfQogCiB2b2lkIFNW
R1BhdGhCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIEFTU0VSVChtX3BhdGgpOwotICAgIG1f
cGF0aC0+Y2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCmluZGV4IDdlZmJiNGQ5MzcyNjJjM2UxYjNk
NDhiNzg1MGM5OGI0OGYxYmZiZmYuLjk0ZjMzMmRmZGE4NzRiZjEzODcxODY2MGQzODczOTdiMGE4
N2I5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVycwogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMzLDE3ICszMywxMSBAQCBjbGFz
cyBQYXRoOwogCiBjbGFzcyBTVkdQYXRoQnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIg
ewogcHVibGljOgotICAgIFNWR1BhdGhCdWlsZGVyKCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRQ
YXRoKFBhdGgqIHBhdGgpIHsgbV9wYXRoID0gcGF0aDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgRmxv
YXRQb2ludCBtX2N1cnJlbnQ7CisgICAgU1ZHUGF0aEJ1aWxkZXIoUGF0aCYpOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgb3ZlcnJpZGUgeyBtX3BhdGgg
PSBudWxscHRyOyB9CiAKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcvTm9ybWFsaXpl
ZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CkBAIC01OSw3ICs1
Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWNTbW9vdGgo
Y29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZs
b2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBv
dmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICBQYXRoKiBtX3BhdGg7Cisg
ICAgUGF0aCYgbV9wYXRoOworICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhC
eXRlU3RyZWFtQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyLmNwcAppbmRleCAyZjRkODVjMWEwOTZmZjRkNzIxMDBhZDgzM2U5YjQ1YWU2NTE2
MDkyLi5kMTk1YzI4NzVkYzY1YmRmZjVjZDIxNGQyMGRhZjNlZmE3YjdjNWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw0OCArMjEs
NDIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXIuaCIKIAotI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJTVkdQYXRo
U2VnLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcjo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyKCkKLSAgICA6IG1fYnl0ZVN0cmVhbShudWxscHRyKQorU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJlYW0mIGJ5dGVTdHJl
YW0pCisgICAgOiBtX2J5dGVTdHJlYW0oYnl0ZVN0cmVhbSkKIHsKIH0KIAogdm9pZCBTVkdQYXRo
Qnl0ZVN0cmVhbUJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwg
Ym9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVh
bSk7CiAgICAgd3JpdGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyAg
UGF0aFNlZ01vdmVUb1JlbCA6IFBhdGhTZWdNb3ZlVG9BYnMpOwogICAgIHdyaXRlRmxvYXRQb2lu
dCh0YXJnZXRQb2ludCk7CiB9CiAKIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpsaW5l
VG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2Rl
KQogewotICAgIEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9k
ZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0xpbmVUb1JlbCA6IFBhdGhTZWdMaW5l
VG9BYnMpOwogICAgIHdyaXRlRmxvYXRQb2ludCh0YXJnZXRQb2ludCk7CiB9CiAKIHZvaWQgU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRl
U2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0xpbmVUb0hv
cml6b250YWxSZWwgOiBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFicyk7CiAgICAgd3JpdGVGbG9h
dCh4KTsKIH0KIAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmxpbmVUb1ZlcnRpY2Fs
KGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5dGVT
dHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVz
ID8gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsIDogUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzKTsK
ICAgICB3cml0ZUZsb2F0KHkpOwogfQogCiB2b2lkIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcjo6
Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50VHlw
ZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyBQYXRoU2VnQ3VydmVUb0N1YmljUmVsIDog
UGF0aFNlZ0N1cnZlVG9DdWJpY0Ficyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHBvaW50MSk7CiAg
ICAgd3JpdGVGbG9hdFBvaW50KHBvaW50Mik7CkBAIC03MCw3ICs2NSw2IEBAIHZvaWQgU1ZHUGF0
aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hCiAKIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvQ3Vi
aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJn
ZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0
cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMg
PyBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsIDogUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aEFicyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHBvaW50Mik7CiAgICAgd3JpdGVGbG9hdFBvaW50
KHRhcmdldFBvaW50KTsKQEAgLTc4LDcgKzcyLDYgQEAgdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnMK
IAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENv
b3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3Jp
dGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1JlbCA6IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzKTsKICAgICB3cml0ZUZs
b2F0UG9pbnQocG9pbnQxKTsKICAgICB3cml0ZUZsb2F0UG9pbnQodGFyZ2V0UG9pbnQpOwpAQCAt
ODYsMTQgKzc5LDEyIEBAIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvUXVh
ZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QKIAogdm9pZCBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5
dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5h
dGVzID8gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwgOiBQYXRoU2VnQ3VydmVUb1F1
YWRyYXRpY1Ntb290aEFicyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHRhcmdldFBvaW50KTsKIH0K
IAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCBy
MiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3Qg
RmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAg
IEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxh
dGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0FyY1JlbCA6IFBhdGhTZWdBcmNBYnMpOwogICAgIHdy
aXRlRmxvYXQocjEpOwogICAgIHdyaXRlRmxvYXQocjIpOwpAQCAtMTA1LDcgKzk2LDYgQEAgdm9p
ZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwgZmxv
YXQgYW5nbGUsIGJvb2wgbGFyZ2UKIAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmNs
b3NlUGF0aCgpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50
VHlwZShQYXRoU2VnQ2xvc2VQYXRoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtQnVpbGRlci5oCmluZGV4IDJhMTk3MDEyZmUyZjU1Mjg5YWFiOTc2YTQwYzI5
NzgxZGM4ZDE3ZTMuLmMyOTZiNDdiODBkNGEzMjU3ZGZlNmU3ZTdiM2I5YTMyOGRmNzAzZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMTQg
KzMwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyKCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRCeXRlU3RyZWFtKFNWR1Bh
dGhCeXRlU3RyZWFtKiBieXRlU3RyZWFtKSB7IG1fYnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07IH0K
KyAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJlYW0mKTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIG92ZXJy
aWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIG92ZXJyaWRlIHsgbV9i
eXRlU3RyZWFtID0gbnVsbHB0cjsgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5n
L05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3Qg
RmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwpA
QCAtNTcsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2l6ZV90IHR5cGVTaXpl
ID0gc2l6ZW9mKEJ5dGVUeXBlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBl
U2l6ZTsgKytpKQotICAgICAgICAgICAgbV9ieXRlU3RyZWFtLT5hcHBlbmQodHlwZS5ieXRlc1tp
XSk7CisgICAgICAgICAgICBtX2J5dGVTdHJlYW0uYXBwZW5kKHR5cGUuYnl0ZXNbaV0pOwogICAg
IH0KIAogICAgIHZvaWQgd3JpdGVGbGFnKGJvb2wgdmFsdWUpCkBAIC04Nyw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHdyaXRlVHlwZShkYXRhKTsKICAgICB9CiAKLSAgICBTVkdQYXRoQnl0
ZVN0cmVhbSogbV9ieXRlU3RyZWFtOworICAgIFNWR1BhdGhCeXRlU3RyZWFtJiBtX2J5dGVTdHJl
YW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aENv
bnN1bWVyLmgKaW5kZXggZThlYWFlODJmYzEwODE2NjI2MGEzODc0ZTdkNjkwYzRkOTJjMGY2Ny4u
ODIxZWU2MWEwYzI2YmZjMTg4MzRmZTViMzA5NDk0MWI4M2JkOTcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoQ29uc3VtZXIuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
MiwgMjAwMyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBTVkdQYXRoQ29uc3Vt
ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFudXAoKSA9IDA7CiAKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcv
Tm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBG
bG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggOTkxYjc3NWVhNDQ2ZjgxMGE4OWYwMWFk
NDZhNjE3OTdkYzdmZjA0Zi4uMzNlOWExZjc0NjA2YTU3N2U1MmYzYmQ4YzgwN2Y4N2M0M2Y4NzQw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw2IEBA
CiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIK
LSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG9BYnMuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvUmVsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlci5jcHAKaW5kZXggMjBhZmM5NTU3MThhYjRjNDI2N2JlZGNhODUxMGY4YWI0MTU2MWMyOS4u
MTcyYThiMmYwNmJiZGZiZDkyOGExNzVmNDY2NTQzMDAzNTg2YTA4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoUGFyc2VyLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
MiwgMjAwMyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0yNSwxNSArMjUsNDAgQEAKICNpbmNsdWRlICJTVkdQYXRoUGFyc2Vy
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisjaW5jbHVkZSAi
U1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBz
dGF0aWMgY29uc3QgZmxvYXQgZ09uZU92ZXJUaHJlZSA9IDEgLyAzLmY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHUGF0aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcigpCi0gICAgOiBtX2NvbnN1
bWVyKG51bGxwdHIpCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlKFNWR1BhdGhTb3VyY2UmIHNv
dXJjZSwgU1ZHUGF0aENvbnN1bWVyJiBjb25zdW1lciwgUGF0aFBhcnNpbmdNb2RlIG1vZGUsIGJv
b2wgY2hlY2tGb3JJbml0aWFsTW92ZVRvKQoreworICAgIFNWR1BhdGhQYXJzZXIgcGFyc2VyKGNv
bnN1bWVyLCBzb3VyY2UsIG1vZGUpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VQYXRoRGF0YShj
aGVja0ZvckluaXRpYWxNb3ZlVG8pOworfQorCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlVG9C
eXRlU3RyZWFtKFNWR1BhdGhTb3VyY2UmIHNvdXJjZSwgU1ZHUGF0aEJ5dGVTdHJlYW0mIGJ5dGVT
dHJlYW0sIFBhdGhQYXJzaW5nTW9kZSBtb2RlLCBib29sIGNoZWNrRm9ySW5pdGlhbE1vdmVUbykK
K3sKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIgYnVpbGRlcihieXRlU3RyZWFtKTsKKyAg
ICByZXR1cm4gcGFyc2Uoc291cmNlLCBidWlsZGVyLCBtb2RlLCBjaGVja0ZvckluaXRpYWxNb3Zl
VG8pOworfQorCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlVG9TdHJpbmcoU1ZHUGF0aFNvdXJj
ZSYgc291cmNlLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIG1vZGUsIGJvb2wgY2hl
Y2tGb3JJbml0aWFsTW92ZVRvKQoreworICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgU1ZHUGF0aFBhcnNlciBwYXJzZXIoYnVpbGRlciwgc291cmNlLCBtb2RlKTsKKyAgICBi
b29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGEoY2hlY2tGb3JJbml0aWFsTW92ZVRvKTsKKyAg
ICByZXN1bHQgPSBidWlsZGVyLnJlc3VsdCgpOworICAgIHJldHVybiBvazsKK30KKworU1ZHUGF0
aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVyLCBTVkdQYXRo
U291cmNlJiBzb3VyY2UsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKKyAgICA6IG1fc291
cmNlKHNvdXJjZSkKKyAgICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCisgICAgLCBtX3BhdGhQYXJz
aW5nTW9kZShwYXJzaW5nTW9kZSkKIHsKIH0KIApAQCAtNDMsMTMgKzY4LDEzIEBAIHZvaWQgU1ZH
UGF0aFBhcnNlcjo6cGFyc2VDbG9zZVBhdGhTZWdtZW50KCkKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpCiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gbV9z
dWJQYXRoUG9pbnQ7CiAgICAgbV9jbG9zZVBhdGggPSB0cnVlOwotICAgIG1fY29uc3VtZXItPmNs
b3NlUGF0aCgpOworICAgIG1fY29uc3VtZXIuY2xvc2VQYXRoKCk7CiB9CiAKIGJvb2wgU1ZHUGF0
aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKIHsKICAgICBGbG9hdFBvaW50IHRhcmdldFBv
aW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlTW92ZVRvU2VnbWVudCh0YXJnZXRQb2ludCkp
CisgICAgaWYgKCFtX3NvdXJjZS5wYXJzZU1vdmVUb1NlZ21lbnQodGFyZ2V0UG9pbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFs
aXplZFBhcnNpbmcpIHsKQEAgLTU4LDkgKzgzLDkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJz
ZU1vdmVUb1NlZ21lbnQoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRQb2lu
dCA9IHRhcmdldFBvaW50OwogICAgICAgICBtX3N1YlBhdGhQb2ludCA9IG1fY3VycmVudFBvaW50
OwotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJyZW50UG9pbnQsIG1fY2xvc2VQYXRo
LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25zdW1lci5tb3ZlVG8obV9jdXJy
ZW50UG9pbnQsIG1fY2xvc2VQYXRoLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKHRhcmdldFBvaW50LCBtX2Nsb3NlUGF0aCwgbV9t
b2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5tb3ZlVG8odGFyZ2V0UG9pbnQsIG1fY2xvc2VQYXRo
LCBtX21vZGUpOwogICAgIG1fY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC02OCw3ICs5Myw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50
KCkKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIHsKICAgICBGbG9h
dFBvaW50IHRhcmdldFBvaW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlTGluZVRvU2VnbWVu
dCh0YXJnZXRQb2ludCkpCisgICAgaWYgKCFtX3NvdXJjZS5wYXJzZUxpbmVUb1NlZ21lbnQodGFy
Z2V0UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKQEAgLTc2LDE2ICsxMDEsMTYgQEAgYm9vbCBT
VkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogICAgICAgICAgICAgbV9jdXJyZW50
UG9pbnQgKz0gdGFyZ2V0UG9pbnQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY3VycmVu
dFBvaW50ID0gdGFyZ2V0UG9pbnQ7Ci0gICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1cnJl
bnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIubGluZVRv
KG1fY3VycmVudFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgbV9jb25zdW1lci0+bGluZVRvKHRhcmdldFBvaW50LCBtX21vZGUpOworICAgICAgICBtX2Nv
bnN1bWVyLmxpbmVUbyh0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKIHsK
ICAgICBmbG9hdCB0b1g7Ci0gICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudCh0b1gpKQorICAgIGlmICghbV9zb3VyY2UucGFyc2VMaW5lVG9Ib3Jpem9udGFsU2Vn
bWVudCh0b1gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKQEAgLTkzLDE2ICsxMTgsMTYgQEAgYm9vbCBT
VkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKICAgICAgICAgICAg
IG1fY3VycmVudFBvaW50Lm1vdmUodG9YLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9jdXJyZW50UG9pbnQuc2V0WCh0b1gpOwotICAgICAgICBtX2NvbnN1bWVyLT5saW5lVG8obV9j
dXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICBtX2NvbnN1bWVyLmxp
bmVUbyhtX2N1cnJlbnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fY29uc3VtZXItPmxpbmVUb0hvcml6b250YWwodG9YLCBtX21vZGUpOworICAgICAg
ICBtX2NvbnN1bWVyLmxpbmVUb0hvcml6b250YWwodG9YLCBtX21vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50
KCkKIHsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0
aWNhbFNlZ21lbnQodG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlTGluZVRvVmVydGljYWxT
ZWdtZW50KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQYXJz
aW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTEwLDkgKzEzNSw5IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKQogICAgICAgICAgICAg
bV9jdXJyZW50UG9pbnQubW92ZSgwLCB0b1kpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2N1cnJlbnRQb2ludC5zZXRZKHRvWSk7Ci0gICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1
cnJlbnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIubGlu
ZVRvKG1fY3VycmVudFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgbV9jb25zdW1lci0+bGluZVRvVmVydGljYWwodG9ZLCBtX21vZGUpOworICAgICAgICBt
X2NvbnN1bWVyLmxpbmVUb1ZlcnRpY2FsKHRvWSwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTIxLDcgKzE0Niw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRv
Q3ViaWNTZWdtZW50KCkKICAgICBGbG9hdFBvaW50IHBvaW50MTsKICAgICBGbG9hdFBvaW50IHBv
aW50MjsKICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwotICAgIGlmICghbV9zb3VyY2UtPnBh
cnNlQ3VydmVUb0N1YmljU2VnbWVudChwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQpKQorICAg
IGlmICghbV9zb3VyY2UucGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KHBvaW50MSwgcG9pbnQyLCB0
YXJnZXRQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQYXJz
aW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTMwLDEyICsxNTUsMTIgQEAgYm9v
bCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogICAgICAgICAgICAg
cG9pbnQyICs9IG1fY3VycmVudFBvaW50OwogICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9j
dXJyZW50UG9pbnQ7CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1Ymlj
KHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAg
ICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwg
QWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBwb2ludDI7
CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQs
IG1fbW9kZSk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQy
LCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQzLDcg
KzE2OCw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdt
ZW50KCkKIHsKICAgICBGbG9hdFBvaW50IHBvaW50MjsKICAgICBGbG9hdFBvaW50IHRhcmdldFBv
aW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChw
b2ludDIsIHRhcmdldFBvaW50KSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudChwb2ludDIsIHRhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FicwpAQCAt
MTYxLDEyICsxODYsMTIgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1Nt
b290aFNlZ21lbnQoKQogICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBw
b2ludDIsIHRhcmdldFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25z
dW1lci5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHRhcmdldFBvaW50LCBBYnNvbHV0ZUNv
b3JkaW5hdGVzKTsKIAogICAgICAgICBtX2NvbnRyb2xQb2ludCA9IHBvaW50MjsKICAgICAgICAg
bV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25z
dW1lci0+Y3VydmVUb0N1YmljU21vb3RoKHBvaW50MiwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7Cisg
ICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljU21vb3RoKHBvaW50MiwgdGFyZ2V0UG9pbnQs
IG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3NCw3ICsxOTksNyBAQCBib29s
IFNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQogewogICAgIEZs
b2F0UG9pbnQgcG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKCFt
X3NvdXJjZS0+cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudChwb2ludDEsIHRhcmdldFBvaW50
KSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQocG9pbnQx
LCB0YXJnZXRQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQ
YXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTkwLDIwICsyMTUsMjAgQEAg
Ym9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKICAgICAg
ICAgcG9pbnQxLnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBw
b2ludDIuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9j
b25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwg
cG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAgICAgICAgICAgbV9jb250cm9sUG9p
bnQgKz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9p
bnQ7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMocG9p
bnQxLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5jdXJ2ZVRvUXVh
ZHJhdGljKHBvaW50MSwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVu
dCgpCiB7CiAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKLSAgICBpZiAoIW1fc291cmNlLT5w
YXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KHRhcmdldFBvaW50KSkKKyAgICBpZiAo
IW1fc291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQodGFyZ2V0UG9pbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9sYXN0Q29tbWFuZCAhPSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY0FicwpAQCAtMjI1LDEyICsyNTAsMTIgQEAgYm9vbCBTVkdQYXRo
UGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKICAgICAgICAgcG9p
bnQxLnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBwb2ludDIu
c2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9jb25zdW1l
ci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29y
ZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQy
LCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9s
UG9pbnQgPSBjdWJpY1BvaW50OwogICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50
OwogICAgIH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
KHRhcmdldFBvaW50LCBtX21vZGUpOworICAgICAgICBtX2NvbnN1bWVyLmN1cnZlVG9RdWFkcmF0
aWNTbW9vdGgodGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTI0Miw3ICsyNjcsNyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlQXJjVG9TZWdtZW50KCkK
ICAgICBib29sIGxhcmdlQXJjOwogICAgIGJvb2wgc3dlZXA7CiAgICAgRmxvYXRQb2ludCB0YXJn
ZXRQb2ludDsKLSAgICBpZiAoIW1fc291cmNlLT5wYXJzZUFyY1RvU2VnbWVudChyeCwgcnksIGFu
Z2xlLCBsYXJnZUFyYywgc3dlZXAsIHRhcmdldFBvaW50KSkKKyAgICBpZiAoIW1fc291cmNlLnBh
cnNlQXJjVG9TZWdtZW50KHJ4LCByeSwgYW5nbGUsIGxhcmdlQXJjLCBzd2VlcCwgdGFyZ2V0UG9p
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiByeCA9IDAgb3IgcnkgPSAw
IHRoZW4gdGhpcyBhcmMgaXMgdHJlYXRlZCBhcyBhIHN0cmFpZ2h0IGxpbmUgc2VnbWVudCAoYSAi
bGluZXRvIikgam9pbmluZyB0aGUgZW5kcG9pbnRzLgpAQCAtMjY0LDkgKzI4OSw5IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgICAgICAgICAgICAgIG1fY3Vy
cmVudFBvaW50ICs9IHRhcmdldFBvaW50OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7Ci0gICAgICAgICAgICBtX2NvbnN1bWVy
LT5saW5lVG8obV9jdXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICAg
ICAgbV9jb25zdW1lci5saW5lVG8obV9jdXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyh0YXJnZXRQ
b2ludCwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXIubGluZVRvKHRhcmdldFBvaW50
LCBtX21vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI3NywyOSArMzAy
LDE4IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgICAgICBt
X2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJj
VG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBwb2ludDEsIHRhcmdldFBvaW50LCBsYXJnZUFyYywgc3dl
ZXApOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcmNUbyhyeCwgcnksIGFuZ2xlLCBsYXJnZUFy
Yywgc3dlZXAsIHRhcmdldFBvaW50LCBtX21vZGUpOworICAgIG1fY29uc3VtZXIuYXJjVG8ocngs
IHJ5LCBhbmdsZSwgbGFyZ2VBcmMsIHN3ZWVwLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRhRnJvbVNv
dXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib29sIGNoZWNrRm9ySW5pdGlh
bE1vdmVUbykKK2Jvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YShib29sIGNoZWNrRm9y
SW5pdGlhbE1vdmVUbykKIHsKLSAgICBBU1NFUlQobV9zb3VyY2UpOwotICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKLQotICAgIG1fcGF0aFBhcnNpbmdNb2RlID0gcGF0aFBhcnNpbmdNb2RlOwotCi0g
ICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV9jdXJyZW50UG9pbnQgPSBG
bG9hdFBvaW50KCk7Ci0gICAgbV9zdWJQYXRoUG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV9j
bG9zZVBhdGggPSB0cnVlOwotCiAgICAgLy8gU2tpcCBhbnkgbGVhZGluZyBzcGFjZXMuCi0gICAg
aWYgKCFtX3NvdXJjZS0+bW92ZVRvTmV4dFRva2VuKCkpCisgICAgaWYgKCFtX3NvdXJjZS5tb3Zl
VG9OZXh0VG9rZW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTVkdQYXRoU2VnVHlw
ZSBjb21tYW5kOwotICAgIG1fc291cmNlLT5wYXJzZVNWR1NlZ21lbnRUeXBlKGNvbW1hbmQpOwot
ICAgIG1fbGFzdENvbW1hbmQgPSBQYXRoU2VnVW5rbm93bjsKKyAgICBtX3NvdXJjZS5wYXJzZVNW
R1NlZ21lbnRUeXBlKGNvbW1hbmQpOwogCiAgICAgLy8gUGF0aCBtdXN0IHN0YXJ0IHdpdGggbW92
ZXRvLgogICAgIGlmIChjaGVja0ZvckluaXRpYWxNb3ZlVG8gJiYgY29tbWFuZCAhPSBQYXRoU2Vn
TW92ZVRvQWJzICYmIGNvbW1hbmQgIT0gUGF0aFNlZ01vdmVUb1JlbCkKQEAgLTMwNyw3ICszMjEs
NyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJz
aW5nTW9kZSBwYXRoUGFyc2luZ01vZGUsIGJvbwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgLy8gU2tpcCBzcGFjZXMgYmV0d2VlbiBjb21tYW5kIGFuZCBmaXJzdCBjb29yZGluYXRlLgot
ICAgICAgICBtX3NvdXJjZS0+bW92ZVRvTmV4dFRva2VuKCk7CisgICAgICAgIG1fc291cmNlLm1v
dmVUb05leHRUb2tlbigpOwogICAgICAgICBtX21vZGUgPSBBYnNvbHV0ZUNvb3JkaW5hdGVzOwog
ICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvUmVs
OgpAQCAtMzc5LDE1ICszOTMsMTUgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRh
RnJvbVNvdXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib28KICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoIW1fY29uc3VtZXItPmNvbnRpbnVlQ29uc3VtaW5nKCkpCisgICAgICAgIGlmICghbV9jb25z
dW1lci5jb250aW51ZUNvbnN1bWluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgbV9sYXN0Q29tbWFuZCA9IGNvbW1hbmQ7CiAKLSAgICAgICAgaWYgKCFtX3NvdXJjZS0+
aGFzTW9yZURhdGEoKSkKKyAgICAgICAgaWYgKCFtX3NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgY29tbWFuZCA9IG1fc291cmNlLT5uZXh0
Q29tbWFuZChjb21tYW5kKTsKKyAgICAgICAgY29tbWFuZCA9IG1fc291cmNlLm5leHRDb21tYW5k
KGNvbW1hbmQpOwogCiAgICAgICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRv
Q3ViaWNBYnMKICAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9D
dWJpY1JlbApAQCAtMzk5LDIyICs0MTMsMTIgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBh
dGhEYXRhRnJvbVNvdXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib28KICAg
ICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9v
dGhSZWwpCiAgICAgICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBvaW50OwogCi0g
ICAgICAgIG1fY29uc3VtZXItPmluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKTsKKyAgICAgICAg
bV9jb25zdW1lci5pbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR1BhdGhQYXJzZXI6OmNsZWFudXAoKQotewotICAgIEFT
U0VSVChtX3NvdXJjZSk7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotCi0gICAgbV9jb25zdW1l
ci0+Y2xlYW51cCgpOwotICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICBtX2NvbnN1bWVyID0g
bnVsbHB0cjsKLX0KLQogLy8gVGhpcyB3b3JrcyBieSBjb252ZXJ0aW5nIHRoZSBTVkcgYXJjIHRv
ICJzaW1wbGUiIGJlemllcnMuCiAvLyBQYXJ0bHkgYWRhcHRlZCBmcm9tIE5pa28ncyBjb2RlIGlu
IGtkZWxpYnMva2RlY29yZS9zdmdpY29ucy4KIC8vIFNlZSBhbHNvIFNWRyBpbXBsZW1lbnRhdGlv
biBub3RlczogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ltcGxub3RlLmh0bWwjQXJjQ29udmVy
c2lvbkVuZHBvaW50VG9DZW50ZXIKQEAgLTQ5NSw3ICs0OTksNyBAQCBib29sIFNWR1BhdGhQYXJz
ZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwg
RmxvYXRQbwogICAgICAgICBwb2ludDIgPSB0YXJnZXRQb2ludDsKICAgICAgICAgcG9pbnQyLm1v
dmUodCAqIHNpbkVuZFRoZXRhLCAtdCAqIGNvc0VuZFRoZXRhKTsKIAotICAgICAgICBtX2NvbnN1
bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQxKSwgcG9pbnRU
cmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKSwKKyAgICAgICAgbV9jb25zdW1lci5jdXJ2ZVRvQ3Vi
aWMocG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQxKSwgcG9pbnRUcmFuc2Zvcm0ubWFwUG9p
bnQocG9pbnQyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50VHJhbnNm
b3JtLm1hcFBvaW50KHRhcmdldFBvaW50KSwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgKaW5kZXggODFmYTA5
MThjM2YxYjEzYzRmMTZjYTIwMTc5ODM5NjhhYWQ3OTEzMC4uNTM0YzZhNWYyODE4YjcyNjYxYTBk
ZjM4NmFjOTlmMDc1MDM5NTNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCkBAIC0y
LDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxv
cGVycwogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMwLDIwICsz
MCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogY2xhc3MgU1ZHUGF0aFNvdXJjZTsKIAogY2xhc3MgU1ZHUGF0aFBhcnNlciB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU1ZHUGF0aFBhcnNlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFNWR1BhdGhQYXJzZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZShT
VkdQYXRoU291cmNlJiwgU1ZHUGF0aENvbnN1bWVyJiwgUGF0aFBhcnNpbmdNb2RlID0gTm9ybWFs
aXplZFBhcnNpbmcsIGJvb2wgY2hlY2tGb3JJbml0aWFsTW92ZVRvID0gdHJ1ZSk7CiAKLSAgICBi
b29sIHBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJzaW5nTW9kZSwgYm9vbCBjaGVja0Zv
ckluaXRpYWxNb3ZlVG8gPSB0cnVlKTsKLSAgICB2b2lkIHNldEN1cnJlbnRDb25zdW1lcihTVkdQ
YXRoQ29uc3VtZXIqIGNvbnN1bWVyKSB7IG1fY29uc3VtZXIgPSBjb25zdW1lcjsgfQotICAgIHZv
aWQgc2V0Q3VycmVudFNvdXJjZShTVkdQYXRoU291cmNlKiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBz
b3VyY2U7IH0KLSAgICB2b2lkIGNsZWFudXAoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVRvQnl0
ZVN0cmVhbShTVkdQYXRoU291cmNlJiwgU1ZHUGF0aEJ5dGVTdHJlYW0mLCBQYXRoUGFyc2luZ01v
ZGUgPSBOb3JtYWxpemVkUGFyc2luZywgYm9vbCBjaGVja0ZvckluaXRpYWxNb3ZlVG8gPSB0cnVl
KTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVRvU3RyaW5nKFNWR1BhdGhTb3VyY2UmLCBTdHJpbmcm
IHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlID0gTm9ybWFsaXplZFBhcnNpbmcsIGJvb2wgY2hlY2tG
b3JJbml0aWFsTW92ZVRvID0gdHJ1ZSk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBkZWNvbXBvc2VB
cmNUb0N1YmljKGZsb2F0LCBmbG9hdCwgZmxvYXQsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jiwg
Ym9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKTsKKyAgICBTVkdQYXRoUGFyc2VyKFNW
R1BhdGhDb25zdW1lciYsIFNWR1BhdGhTb3VyY2UmLCBQYXRoUGFyc2luZ01vZGUpOworICAgIGJv
b2wgcGFyc2VQYXRoRGF0YShib29sIGNoZWNrRm9ySW5pdGlhbE1vdmVUbyk7CisKKyAgICBib29s
IGRlY29tcG9zZUFyY1RvQ3ViaWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxv
YXRQb2ludCYsIEZsb2F0UG9pbnQmLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcp
OwogICAgIHZvaWQgcGFyc2VDbG9zZVBhdGhTZWdtZW50KCk7CiAgICAgYm9vbCBwYXJzZU1vdmVU
b1NlZ21lbnQoKTsKICAgICBib29sIHBhcnNlTGluZVRvU2VnbWVudCgpOwpAQCAtNTUsMTUgKzU2
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdt
ZW50KCk7CiAgICAgYm9vbCBwYXJzZUFyY1RvU2VnbWVudCgpOwogCi0gICAgU1ZHUGF0aFNvdXJj
ZSogbV9zb3VyY2U7Ci0gICAgU1ZHUGF0aENvbnN1bWVyKiBtX2NvbnN1bWVyOwotICAgIFBhdGhD
b29yZGluYXRlTW9kZSBtX21vZGU7Ci0gICAgUGF0aFBhcnNpbmdNb2RlIG1fcGF0aFBhcnNpbmdN
b2RlOwotICAgIFNWR1BhdGhTZWdUeXBlIG1fbGFzdENvbW1hbmQ7Ci0gICAgYm9vbCBtX2Nsb3Nl
UGF0aDsKKyAgICBTVkdQYXRoU291cmNlJiBtX3NvdXJjZTsKKyAgICBTVkdQYXRoQ29uc3VtZXIm
IG1fY29uc3VtZXI7CiAgICAgRmxvYXRQb2ludCBtX2NvbnRyb2xQb2ludDsKICAgICBGbG9hdFBv
aW50IG1fY3VycmVudFBvaW50OwogICAgIEZsb2F0UG9pbnQgbV9zdWJQYXRoUG9pbnQ7CisgICAg
UGF0aENvb3JkaW5hdGVNb2RlIG1fbW9kZSB7IEFic29sdXRlQ29vcmRpbmF0ZXMgfTsKKyAgICBj
b25zdCBQYXRoUGFyc2luZ01vZGUgbV9wYXRoUGFyc2luZ01vZGUgeyBOb3JtYWxpemVkUGFyc2lu
ZyB9OworICAgIFNWR1BhdGhTZWdUeXBlIG1fbGFzdENvbW1hbmQgeyBQYXRoU2VnVW5rbm93biB9
OworICAgIGJvb2wgbV9jbG9zZVBhdGggeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCmlu
ZGV4IGNlNjU3MjFlZjIxN2MzZTI3NTNlYTA0MDhlNzA1ZWZlYzQzM2VlMmMuLmRiNTNmOGM2M2Jj
MTZmNTVkNzZjOTgwODFiODc4M2ViMTg4OWViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVycwogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKIAotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1BhdGhT
ZWdBcmNBYnMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQXJjUmVsLmgiCkBAIC00OSwxMDggKzQ4
LDg4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXIoKQotICAgIDogbV9wYXRoRWxlbWVudChudWxscHRyKQotICAg
ICwgbV9wYXRoU2VnTGlzdChudWxscHRyKQotICAgICwgbV9wYXRoU2VnUm9sZShQYXRoU2VnVW5k
ZWZpbmVkUm9sZSkKK1NWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
KFNWR1BhdGhFbGVtZW50JiBwYXRoRWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHBhdGhTZWdMaXN0
LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorICAgIDogbV9wYXRoRWxlbWVudChwYXRoRWxlbWVudCkK
KyAgICAsIG1fcGF0aFNlZ0xpc3QocGF0aFNlZ0xpc3QpCisgICAgLCBtX3BhdGhTZWdSb2xlKHJv
bGUpCiB7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewot
ICAgIEFTU0VSVChtX3BhdGhFbGVtZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAg
ICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlz
dC0+YXBwZW5kKG1fcGF0aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnModGFyZ2V0
UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9w
YXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJz
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRl
U1ZHUGF0aFNlZ01vdmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9w
YXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50
LmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Omxp
bmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1v
ZGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdM
aXN0KTsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0Fi
cyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50
LT5jcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkK
IHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3Qp
OwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNl
Z0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpv
bnRhbEFicyh4LCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5k
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoeCwgbV9w
YXRoU2VnUm9sZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1f
cGF0aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKHgsIG1fcGF0
aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCh4LCBtX3BhdGhTZWdSb2xlKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbChmbG9hdCB5LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0g
ICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVh
dGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAg
ICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbEFicyh5LCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1Zl
cnRpY2FsUmVsKHksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBl
bmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoeSwgbV9w
YXRoU2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1
YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7
Ci0gICAgQVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsK
ICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdM
aXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnko
KSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50
MS55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBw
b2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdS
b2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRo
U2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1Ymlj
U21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGhFbGVt
ZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0aEVsZW1l
bnQtPmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnModGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCks
IHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAg
QVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBp
ZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMo
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCks
IG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgbV9wYXRoU2VnUm9sZSkp
OwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0aEVsZW1lbnQt
PmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBtX3BhdGhTZWdSb2xlKSk7Cisg
ICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBv
aW50MS54KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3Bh
dGhFbGVtZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgaWYgKG1vZGUgPT0g
QWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0
aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1f
cGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0
aFNlZ1JvbGUpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3Bh
dGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBt
X3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3Bh
dGhTZWdSb2xlKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjphcmNUbyhmbG9h
dCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2Vl
cEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUg
bW9kZSkKIHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNl
Z0xpc3QpOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnQXJjQWJz
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFy
Y0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnModGFyZ2V0UG9pbnQu
eCgpLCB0YXJnZXRQb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBG
bGFnLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCh0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZs
YWcsIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2Vn
Um9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y2xvc2VQYXRoKCkKIHsK
LSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwot
ICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2Vn
Q2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKTsKKyAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3Bh
dGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgobV9wYXRoU2VnUm9sZSkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKaW5kZXggNjdm
ZjI2NzAxMDczOTA1MmNmMGE5Yzg4MzJkY2JmNjRlNDMxMTYyNS4uZjgzOTg2Zjk2ZWEwMWRjNzZj
NmU3MGU4NzgyYWI4NDJjOGQyNzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdEJ1aWxkZXIuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMiwgMjAw
MyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIg
S2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0zNCwyMSArMzQsMTEgQEAgY2xhc3MgU1ZHUGF0aEVsZW1lbnQ7CiAKIGNsYXNz
IFNWR1BhdGhTZWdMaXN0QnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGlj
OgotICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlcigpOwotCi0gICAgdm9pZCBzZXRDdXJyZW50U1ZH
UGF0aEVsZW1lbnQoU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KSB7IG1fcGF0aEVsZW1lbnQg
PSBwYXRoRWxlbWVudDsgfQotICAgIHZvaWQgc2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KFNWR1Bh
dGhTZWdMaXN0JiBwYXRoU2VnTGlzdCkgeyBtX3BhdGhTZWdMaXN0ID0gJnBhdGhTZWdMaXN0OyB9
Ci0gICAgdm9pZCBzZXRDdXJyZW50U1ZHUGF0aFNlZ1JvbGUoU1ZHUGF0aFNlZ1JvbGUgcGF0aFNl
Z1JvbGUpIHsgbV9wYXRoU2VnUm9sZSA9IHBhdGhTZWdSb2xlOyB9CisgICAgU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyKFNWR1BhdGhFbGVtZW50JiwgU1ZHUGF0aFNlZ0xpc3QmLCBTVkdQYXRoU2VnUm9s
ZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291
bnQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFudXAoKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgbV9wYXRoRWxlbWVudCA9IG51bGxwdHI7Ci0gICAgICAgIG1f
cGF0aFNlZ0xpc3QgPSBudWxscHRyOwotICAgICAgICBtX3BhdGhTZWdSb2xlID0gUGF0aFNlZ1Vu
ZGVmaW5lZFJvbGU7Ci0gICAgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nL05v
cm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxv
YXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwpAQCAt
NjQsOSArNTQsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJj
RmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpIG92ZXJyaWRlOwogCi0gICAgU1ZHUGF0aEVsZW1lbnQqIG1fcGF0aEVsZW1lbnQ7Ci0gICAg
U1ZHUGF0aFNlZ0xpc3QqIG1fcGF0aFNlZ0xpc3Q7Ci0gICAgU1ZHUGF0aFNlZ1JvbGUgbV9wYXRo
U2VnUm9sZTsKKyAgICBTVkdQYXRoRWxlbWVudCYgbV9wYXRoRWxlbWVudDsKKyAgICBTVkdQYXRo
U2VnTGlzdCYgbV9wYXRoU2VnTGlzdDsKKyAgICBTVkdQYXRoU2VnUm9sZSBtX3BhdGhTZWdSb2xl
IHsgUGF0aFNlZ1VuZGVmaW5lZFJvbGUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGYzMGNl
MDBhMjBkNmQ1MjhkYTFlNzA1MzE5OTIxMjI4NDA3MjA0OTYuLmUyYTI0NWI1NGRjMzBkNGExOTll
OTc0N2RmNjdkYjlkOGU2NzQwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQzLDExICs0NCw2IEBAIFN0cmluZyBTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6cmVzdWx0KCkKICAgICByZXR1cm4gbV9zdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXAoKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5jbGVhcigpOwotfQotCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjppbmNyZW1l
bnRQYXRoU2VnbWVudENvdW50KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmgKaW5kZXggMDgwMGQwODFhNzk4YjRjMDJhNzc4MTlmNGQ2ODdkYjYzZjU3M2Y1
Ni4uOTIzMGFjYzcwNzRhOGZjMzFiYWI5MDliYzVmNTJmYzE3ZTcxODI3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzQsNiBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIHJlc3VsdCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVw
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCmluZGV4IDFjMjdiY2Y2ODdhYWYwMzlmNmUxY2VkOWIyNzVlMGMxYzc5ZGFhYTUu
LjVkYTdlODg4ZTg4ZDE4ZDk1YzNkMjQwMjQzZmNmMjAzZjgzZTQ0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAKQEAgLTIs
NiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yNyw1OSArMjgsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCkKLSAgICA6
IG1fdHJhdmVyc2FsU3RhdGUobnVsbHB0cikKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCitTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKFBh
dGhUcmF2ZXJzYWxTdGF0ZSYgc3RhdGUsIGZsb2F0IGRlc2lyZWRMZW5ndGgpCisgICAgOiBtX3Ry
YXZlcnNhbFN0YXRlKHN0YXRlKQogeworICAgIG1fdHJhdmVyc2FsU3RhdGUuc2V0RGVzaXJlZExl
bmd0aChkZXNpcmVkTGVuZ3RoKTsKIH0KIAogdm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29y
ZGluYXRlTW9kZSkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0gICAgbV90cmF2
ZXJzYWxTdGF0ZS0+cHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50TW92ZVRvUG9pbnQsICZ0
YXJnZXRQb2ludCk7CisgICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0
aEVsZW1lbnRNb3ZlVG9Qb2ludCwgJnRhcmdldFBvaW50KTsKIH0KIAogdm9pZCBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IFBhdGhDb29yZGluYXRlTW9kZSkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0g
ICAgbV90cmF2ZXJzYWxTdGF0ZS0+cHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50QWRkTGlu
ZVRvUG9pbnQsICZ0YXJnZXRQb2ludCk7CisgICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0
aEVsZW1lbnQoUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludCwgJnRhcmdldFBvaW50KTsKIH0KIAog
dm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCiB7CiAgICAgRmxvYXRQb2ludCBw
b2ludHNbXSA9IHsgcG9pbnQxLCBwb2ludDIsIHRhcmdldFBvaW50IH07Ci0gICAgQVNTRVJUKG1f
dHJhdmVyc2FsU3RhdGUpOwotICAgIG1fdHJhdmVyc2FsU3RhdGUtPnByb2Nlc3NQYXRoRWxlbWVu
dChQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludCwgcG9pbnRzKTsKLX0KIAotdm9pZCBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjbG9zZVBhdGgoKQotewotICAgIEFTU0VSVChtX3RyYXZl
cnNhbFN0YXRlKTsKLSAgICBtX3RyYXZlcnNhbFN0YXRlLT5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0
aEVsZW1lbnRDbG9zZVN1YnBhdGgsIG51bGxwdHIpOworICAgIG1fdHJhdmVyc2FsU3RhdGUucHJv
Y2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50LCBwb2ludHMpOwogfQog
Ci12b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnNldERlc2lyZWRMZW5ndGgoZmxv
YXQgZGVzaXJlZExlbmd0aCkKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y2xv
c2VQYXRoKCkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0gICAgbV90cmF2ZXJz
YWxTdGF0ZS0+c2V0RGVzaXJlZExlbmd0aChkZXNpcmVkTGVuZ3RoKTsKKyAgICBtX3RyYXZlcnNh
bFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudENsb3NlU3VicGF0aCwgbnVsbHB0
cik7CiB9CiAKIGJvb2wgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y29udGludWVDb25z
dW1pbmcoKQogewotICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsgICAgCi0gICAgcmV0dXJu
ICFtX3RyYXZlcnNhbFN0YXRlLT5zdWNjZXNzKCk7CisgICAgcmV0dXJuICFtX3RyYXZlcnNhbFN0
YXRlLnN1Y2Nlc3MoKTsKIH0KIAotZmxvYXQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
dG90YWxMZW5ndGgoKQorZmxvYXQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6dG90YWxM
ZW5ndGgoKSBjb25zdAogewotICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKLSAgICByZXR1
cm4gbV90cmF2ZXJzYWxTdGF0ZS0+dG90YWxMZW5ndGgoKTsKKyAgICByZXR1cm4gbV90cmF2ZXJz
YWxTdGF0ZS50b3RhbExlbmd0aCgpOwogfQogCi1TVkdQb2ludCBTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyOjpjdXJyZW50UG9pbnQoKQorU1ZHUG9pbnQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlcjo6Y3VycmVudFBvaW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxT
dGF0ZSk7Ci0gICAgcmV0dXJuIG1fdHJhdmVyc2FsU3RhdGUtPmN1cnJlbnQoKTsKKyAgICByZXR1
cm4gbV90cmF2ZXJzYWxTdGF0ZS5jdXJyZW50KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCmluZGV4IGYyY2ZjZDc2NjIx
YmE1N2Q2ZmIzNDc2ZjYzYjVlY2FlYzk2ZWM0MDEuLmVhOTMwZjhhZmE2NzIzNTgzZGU2ZDVkNzg2
YzA0N2YzYzA4NDVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXIuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMwLDE3ICszMSwxNCBAQCBjbGFzcyBQYXRoVHJhdmVyc2FsU3RhdGU7
CiAKIGNsYXNzIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENv
bnN1bWVyIHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCk7Cisg
ICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcihQYXRoVHJhdmVyc2FsU3RhdGUmLCBmbG9h
dCBkZXNpcmVkTGVuZ3RoID0gMCk7CiAKLSAgICB1bnNpZ25lZCBwYXRoU2VnbWVudEluZGV4KCkg
eyByZXR1cm4gbV9zZWdtZW50SW5kZXg7IH0KLSAgICBmbG9hdCB0b3RhbExlbmd0aCgpOwotICAg
IFNWR1BvaW50IGN1cnJlbnRQb2ludCgpOworICAgIHVuc2lnbmVkIHBhdGhTZWdtZW50SW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRJbmRleDsgfQorICAgIGZsb2F0IHRvdGFsTGVuZ3Ro
KCkgY29uc3Q7CisgICAgU1ZHUG9pbnQgY3VycmVudFBvaW50KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldEN1cnJlbnRUcmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGUqIHRyYXZlcnNhbFN0
YXRlKSB7IG1fdHJhdmVyc2FsU3RhdGUgPSB0cmF2ZXJzYWxTdGF0ZTsgfQotICAgIHZvaWQgc2V0
RGVzaXJlZExlbmd0aChmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdt
ZW50Q291bnQoKSBvdmVycmlkZSB7ICsrbV9zZWdtZW50SW5kZXg7IH0KICAgICB2aXJ0dWFsIGJv
b2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYW51
cCgpIG92ZXJyaWRlIHsgbV90cmF2ZXJzYWxTdGF0ZSA9IG51bGxwdHIsIG1fc2VnbWVudEluZGV4
ID0gMDsgfQogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVkUGFyc2luZy9Ob3Jt
YWxpemVkUGFyc2luZyBtb2Rlcy4KQEAgLTU4LDggKzU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENv
b3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wsIGJvb2wsIGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAotICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSogbV90cmF2ZXJzYWxTdGF0ZTsKLSAg
ICB1bnNpZ25lZCBtX3NlZ21lbnRJbmRleDsKKyAgICBQYXRoVHJhdmVyc2FsU3RhdGUmIG1fdHJh
dmVyc2FsU3RhdGU7CisgICAgdW5zaWduZWQgbV9zZWdtZW50SW5kZXggeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5j
cHAKaW5kZXggYjNjYzA0OWUxNWNlYjI5YmVjYmYyN2E0NGJjODU2YjgwMGM1OTZkZC4uYmFiNDk4
ZjRkMjJkZmM2MzJjZThkYjJlYjhhYzdkZDRkOTdiYTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw3NCArMzgsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBGSVhNRTogYXJlIGFsbCB0aGVzZSBnbG9iYWxzIHdhcnJhbnRlZD8gV2h5
IG5vdCBqdXN0IG1ha2UgdGhlbSBvbiB0aGUgc3RhY2s/Ci1zdGF0aWMgU1ZHUGF0aEJ1aWxkZXIm
IGdsb2JhbFNWR1BhdGhCdWlsZGVyKFBhdGgmIHJlc3VsdCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U1ZHUGF0aEJ1aWxkZXI+IHNfYnVpbGRlcjsKLSAgICBzX2J1aWxkZXIuZ2V0KCku
c2V0Q3VycmVudFBhdGgoJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKLX0K
LQotc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciYgZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyKFNWR1BhdGhFbGVtZW50JiBlbGVtZW50LCBTVkdQYXRoU2VnUm9sZSByb2xlLCBTVkdQYXRo
U2VnTGlzdCYgcmVzdWx0KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI+IHNfYnVpbGRlcjsKLQotICAgIHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50
U1ZHUGF0aEVsZW1lbnQoJmVsZW1lbnQpOwotICAgIHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50
U1ZHUGF0aFNlZ0xpc3QocmVzdWx0KTsKLSAgICBzX2J1aWxkZXIuZ2V0KCkuc2V0Q3VycmVudFNW
R1BhdGhTZWdSb2xlKHJvbGUpOwotICAgIHJldHVybiBzX2J1aWxkZXIuZ2V0KCk7Ci19Ci0KLXN0
YXRpYyBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXImIGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlcihTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI+IHNfYnVpbGRlcjsKLSAgICBzX2J1aWxkZXIu
Z2V0KCkuc2V0Q3VycmVudEJ5dGVTdHJlYW0oJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHNfYnVpbGRl
ci5nZXQoKTsKLX0KLQotc3RhdGljIFNWR1BhdGhTdHJpbmdCdWlsZGVyJiBnbG9iYWxTVkdQYXRo
U3RyaW5nQnVpbGRlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR1BhdGhTdHJp
bmdCdWlsZGVyPiBzX2J1aWxkZXI7Ci0gICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKLX0KLQot
c3RhdGljIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXImIGdsb2JhbFNWR1BhdGhUcmF2ZXJz
YWxTdGF0ZUJ1aWxkZXIoUGF0aFRyYXZlcnNhbFN0YXRlJiB0cmF2ZXJzYWxTdGF0ZSwgZmxvYXQg
bGVuZ3RoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyPiBzX3BhcnNlcjsKLQotICAgIHNfcGFyc2VyLmdldCgpLnNldEN1cnJlbnRUcmF2
ZXJzYWxTdGF0ZSgmdHJhdmVyc2FsU3RhdGUpOwotICAgIHNfcGFyc2VyLmdldCgpLnNldERlc2ly
ZWRMZW5ndGgobGVuZ3RoKTsKLSAgICByZXR1cm4gc19wYXJzZXIuZ2V0KCk7Ci19Ci0KLS8vIEZJ
WE1FOiB3aHkgYm90aGVyIGtlZXBpbmcgYSBzaW5nbGV0b24gYXJvdW5kPyBJcyBpdCBzbG93IHRv
IGFsbG9jYXRlPwotc3RhdGljIFNWR1BhdGhQYXJzZXImIGdsb2JhbFNWR1BhdGhQYXJzZXIoU1ZH
UGF0aFNvdXJjZSYgc291cmNlLCBTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVyKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoUGFyc2VyPiBzX3BhcnNlcjsKLQotICAgIHNfcGFy
c2VyLmdldCgpLnNldEN1cnJlbnRTb3VyY2UoJnNvdXJjZSk7Ci0gICAgc19wYXJzZXIuZ2V0KCku
c2V0Q3VycmVudENvbnN1bWVyKCZjb25zdW1lcik7Ci0gICAgcmV0dXJuIHNfcGFyc2VyLmdldCgp
OwotfQotCi1zdGF0aWMgU1ZHUGF0aEJsZW5kZXImIGdsb2JhbFNWR1BhdGhCbGVuZGVyKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHUGF0aEJsZW5kZXI+IHNfYmxlbmRlcjsKLSAg
ICByZXR1cm4gc19ibGVuZGVyLmdldCgpOwotfQotCiBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBkLCBQYXRoJiByZXN1bHQpCiB7CiAgICAgaWYgKGQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCdWlsZGVyJiBidWlsZGVyID0gZ2xv
YmFsU1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKLQorICAgIFNWR1BhdGhCdWlsZGVyIGJ1aWxkZXIo
cmVzdWx0KTsKICAgICBTVkdQYXRoU3RyaW5nU291cmNlIHNvdXJjZShkKTsKLSAgICBTVkdQYXRo
UGFyc2VyJiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZSwgYnVpbGRlcik7Ci0g
ICAgYm9vbCBvayA9IHBhcnNlci5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFy
c2luZyk7Ci0gICAgcGFyc2VyLmNsZWFudXAoKTsKLSAgICByZXR1cm4gb2s7CisgICAgcmV0dXJu
IFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CiB9CiAKIGJvb2wgYnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYg
bGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQpAQCAtMTEzLDEzICs1NCw4IEBAIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
VkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0CiAgICAgaWYg
KGxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihy
ZXN1bHQpOwotCiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ugc291cmNlKGxpc3QpOwotICAgIFNW
R1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVy
KTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdN
b2RlKTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwotICAgIHJldHVybiBvazsKKyAgICByZXR1cm4g
U1ZHUGF0aFBhcnNlcjo6cGFyc2VUb0J5dGVTdHJlYW0oc291cmNlLCByZXN1bHQsIHBhcnNpbmdN
b2RlKTsKIH0KIAogYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJl
ZlB0cjxTVkdQYXRoU2VnPiYmIHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1bHQsIFBh
dGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKQEAgLTEzMSwxMSArNjcsOCBAQCBib29sIGFwcGVu
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhTZWc+JiYgcGF0
aFNlZywgU1ZHUGF0aAogICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKFdURjo6bW92ZShwYXRo
U2VnKSk7CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSBhcHBlbmRlZEJ5dGVTdHJlYW07Ci0gICAg
U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyKGFwcGVuZGVkQnl0ZVN0cmVhbSk7CiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ug
c291cmNlKGFwcGVuZGVkSXRlbUxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGds
b2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2Vy
LnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlLCBmYWxzZSk7Ci0gICAgcGFyc2Vy
LmNsZWFudXAoKTsKKyAgICBib29sIG9rID0gU1ZHUGF0aFBhcnNlcjo6cGFyc2VUb0J5dGVTdHJl
YW0oc291cmNlLCByZXN1bHQsIHBhcnNpbmdNb2RlLCBmYWxzZSk7CiAKICAgICBpZiAob2spCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYXBwZW5kZWRCeXRlU3RyZWFtKTsKQEAgLTE0OCwxMyArODEs
OSBAQCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFt
JiBzdHJlYW0sIFBhdGgmIHJlc3VsdCkKICAgICBpZiAoc3RyZWFtLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBTVkdQYXRoQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNW
R1BhdGhCdWlsZGVyKHJlc3VsdCk7Ci0KKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHJlc3Vs
dCk7CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0gICAgU1ZH
UGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxkZXIp
OwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXpl
ZFBhcnNpbmcpOwotICAgIHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJl
dHVybiBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2UsIGJ1aWxkZXIpOwogfQogCiBib29sIGJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYg
c3RyZWFtLCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHJlc3VsdCwg
UGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQpAQCAtMTYyLDEzICs5MSw5IEBAIGJvb2wgYnVp
bGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBz
dHJlYW0sIFNWR1BhdGhFCiAgICAgaWYgKHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyKGVsZW1lbnQsIHBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJz
aW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xlIDogUGF0aFNlZ1VuYWx0ZXJlZFJvbGUsIHJlc3Vs
dCk7Ci0KKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgYnVpbGRlcihlbGVtZW50LCByZXN1bHQs
IHBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xl
IDogUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIHNv
dXJjZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQ
YXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERh
dGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwotICAgIHJl
dHVybiBvazsKKyAgICByZXR1cm4gU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVy
LCBwYXJzaW5nTW9kZSk7CiB9CiAKIGJvb2wgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdN
b2RlIHBhcnNpbmdNb2RlKQpAQCAtMTc2LDE0ICsxMDEsOCBAQCBib29sIGJ1aWxkU3RyaW5nRnJv
bUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiByZXN1
bHQsCiAgICAgaWYgKHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVp
bGRlcigpOwotCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0g
ICAgU1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1
aWxkZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFy
c2luZ01vZGUpOwotICAgIHJlc3VsdCA9IGJ1aWxkZXIucmVzdWx0KCk7Ci0gICAgcGFyc2VyLmNs
ZWFudXAoKTsKLSAgICByZXR1cm4gb2s7CisgICAgcmV0dXJuIFNWR1BhdGhQYXJzZXI6OnBhcnNl
VG9TdHJpbmcoc291cmNlLCByZXN1bHQsIHBhcnNpbmdNb2RlKTsKIH0KIAogYm9vbCBidWlsZFN0
cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU3RyaW5n
JiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKQEAgLTE5MiwxNCArMTExLDgg
QEAgYm9vbCBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlz
dCYgbGlzdCwgU3RyaW5nJiByZXN1bHQsIFAKICAgICBpZiAobGlzdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIgPSBn
bG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigpOwotCiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ug
c291cmNlKGxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQ
YXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERh
dGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKLSAgICByZXN1bHQgPSBidWlsZGVyLnJlc3VsdCgp
OwotICAgIHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQ
YXRoUGFyc2VyOjpwYXJzZVRvU3RyaW5nKHNvdXJjZSwgcmVzdWx0LCBwYXJzaW5nTW9kZSk7CiB9
CiAKIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBk
LCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUp
CkBAIC0yMDgsMTMgKzEyMSw4IEBAIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBkLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0CiAgICAgaWYgKGQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCeXRlU3RyZWFt
QnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQp
OwotCiAgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZSBzb3VyY2UoZCk7Ci0gICAgU1ZHUGF0aFBhcnNl
ciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxkZXIpOwotICAgIGJv
b2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwotICAg
IHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRoUGFy
c2VyOjpwYXJzZVRvQnl0ZVN0cmVhbShzb3VyY2UsIHJlc3VsdCwgcGFyc2luZ01vZGUpOwogfQog
CiBib29sIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0
cmVhbSYgZnJvbVN0cmVhbSwgY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHRvU3RyZWFtLCBTVkdQ
YXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBmbG9hdCBwcm9ncmVzcykKQEAgLTIyNCwxNCArMTMyLDEx
IEBAIGJvb2wgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRl
U3RyZWFtJiBmcm9tU3RyZWFtLCBjb25zdCBTCiAgICAgaWYgKHRvU3RyZWFtLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXImIGJ1
aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIocmVzdWx0KTsKKyAgICBTVkdQ
YXRoQnl0ZVN0cmVhbUJ1aWxkZXIgYnVpbGRlcihyZXN1bHQpOwogCiAgICAgU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UgZnJvbVNvdXJjZShmcm9tU3RyZWFtKTsKICAgICBTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZSB0b1NvdXJjZSh0b1N0cmVhbSk7Ci0gICAgU1ZHUGF0aEJsZW5kZXImIGJsZW5kZXIg
PSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwotICAgIGJvb2wgb2sgPSBibGVuZGVyLmJsZW5kQW5p
bWF0ZWRQYXRoKHByb2dyZXNzLCAmZnJvbVNvdXJjZSwgJnRvU291cmNlLCAmYnVpbGRlcik7Ci0g
ICAgYmxlbmRlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRo
QmxlbmRlcjo6YmxlbmRBbmltYXRlZFBhdGgoZnJvbVNvdXJjZSwgdG9Tb3VyY2UsIGJ1aWxkZXIs
IHByb2dyZXNzKTsKIH0KIAogYm9vbCBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRl
U3RyZWFtJiBzdHJlYW1Ub0FwcGVuZFRvLCBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgYnlTdHJl
YW0sIHVuc2lnbmVkIHJlcGVhdENvdW50KQpAQCAtMjQxLDE3ICsxNDYsMTQgQEAgYm9vbCBhZGRU
b1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlYW1Ub0FwcGVuZFRvLCBj
b25zdCBTVkdQYXRoQnkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJcyBpdCBPSyB0
byBtYWtlIHRoZSBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIgZnJvbSBhIHN0cmVhbSwgYW5kIHRo
ZW4gY2xlYXIgdGhhdCBzdHJlYW0/Ci0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyJiBidWls
ZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKHN0cmVhbVRvQXBwZW5kVG8pOwor
ICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciBidWlsZGVyKHN0cmVhbVRvQXBwZW5kVG8pOwog
CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gZnJvbVN0cmVhbUNvcHkgPSBzdHJlYW1Ub0FwcGVuZFRv
OwogICAgIHN0cmVhbVRvQXBwZW5kVG8uY2xlYXIoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIGZyb21Tb3VyY2UoZnJvbVN0cmVhbUNvcHkpOwogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIGJ5U291cmNlKGJ5U3RyZWFtKTsKLSAgICBTVkdQYXRoQmxlbmRlciYgYmxlbmRlciA9
IGdsb2JhbFNWR1BhdGhCbGVuZGVyKCk7Ci0gICAgYm9vbCBvayA9IGJsZW5kZXIuYWRkQW5pbWF0
ZWRQYXRoKCZmcm9tU291cmNlLCAmYnlTb3VyY2UsICZidWlsZGVyLCByZXBlYXRDb3VudCk7Ci0g
ICAgYmxlbmRlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRo
QmxlbmRlcjo6YWRkQW5pbWF0ZWRQYXRoKGZyb21Tb3VyY2UsIGJ5U291cmNlLCBidWlsZGVyLCBy
ZXBlYXRDb3VudCk7CiB9CiAKIGJvb2wgZ2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhC
eXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlYW0sIGZsb2F0IGxlbmd0aCwg
dW5zaWduZWQmIHBhdGhTZWcpCkBAIC0yNjAsMTMgKzE2MiwxMSBAQCBib29sIGdldFNWR1BhdGhT
ZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYg
c3RyZWFtLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUg
dHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0YXRlOjpBY3Rpb246OlNlZ21lbnRBdExlbmd0
aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7CisgICAg
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciBidWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5n
dGgpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0gICAg
U1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxk
ZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFs
aXplZFBhcnNpbmcpOworICAgIGJvb2wgb2sgPSBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2Us
IGJ1aWxkZXIpOwogICAgIHBhdGhTZWcgPSBidWlsZGVyLnBhdGhTZWdtZW50SW5kZXgoKTsKLSAg
ICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIApAQCAtMjc2LDEzICsxNzYs
MTIgQEAgYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0
aEJ5dGVTdHJlYW0mIHN0cmVhbSwgZmxvYXQmIHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6
QWN0aW9uOjpUb3RhbExlbmd0aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYg
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3Rh
dGUsIDApOworCisgICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciBidWlsZGVyKHRyYXZl
cnNhbFN0YXRlKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIHNvdXJjZShzdHJlYW0p
OwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNl
LCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNl
KE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBib29sIG9rID0gU1ZHUGF0aFBhcnNlcjo6cGFyc2Uo
c291cmNlLCBidWlsZGVyKTsKICAgICB0b3RhbExlbmd0aCA9IGJ1aWxkZXIudG90YWxMZW5ndGgo
KTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIApAQCAtMjkyLDEz
ICsxOTEsMTIgQEAgYm9vbCBnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBmbG9hdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0
YXRlOjpBY3Rpb246OlZlY3RvckF0TGVuZ3RoKTsKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2
ZXJzYWxTdGF0ZSwgbGVuZ3RoKTsKKworICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIg
YnVpbGRlcih0cmF2ZXJzYWxTdGF0ZSwgbGVuZ3RoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIHNvdXJjZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2Jh
bFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBh
cnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBib29sIG9rID0g
U1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVyKTsKICAgICBwb2ludCA9IGJ1aWxk
ZXIuY3VycmVudFBvaW50KCk7Ci0gICAgcGFyc2VyLmNsZWFudXAoKTsKICAgICByZXR1cm4gb2s7
CiB9CiAKQEAgLTMzMiwxMiArMjMwLDExIEBAIGJvb2wgYnVpbGRTdHJpbmdGcm9tUGF0aChjb25z
dCBQYXRoJiBwYXRoLCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGhh
dmUgYSBTVkdQYXRoUGxhdGZvcm1QYXRoU291cmNlLCBidXQgaXQncyBub3QgcG9zc2libGUgdG8g
bWFudWFsbHkgaXRlcmF0ZQogICAgIC8vIGEgcGF0aCwgb25seSBhcHBseSBhIGZ1bmN0aW9uIHRv
IGFsbCBwYXRoIGVsZW1lbnRzIGF0IG9uY2UuCiAKLSAgICBTVkdQYXRoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKCk7CisgICAgU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBwYXRoLmFwcGx5KFsmYnVpbGRlcl0oY29uc3QgUGF0aEVs
ZW1lbnQmIHBhdGhFbGVtZW50KSB7CiAgICAgICAgIHBhdGhJdGVyYXRvckZvckJ1aWxkaW5nU3Ry
aW5nKGJ1aWxkZXIsIHBhdGhFbGVtZW50KTsKICAgICB9KTsKICAgICBzdHJpbmcgPSBidWlsZGVy
LnJlc3VsdCgpOwotICAgIHN0YXRpY19jYXN0PFNWR1BhdGhDb25zdW1lciY+KGJ1aWxkZXIpLmNs
ZWFudXAoKTsgLy8gV2F0PwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhVdGlsaXRpZXMuaAppbmRleCBmN2FhYmRkNjBiMTVlODMzODZkNWY0NjM1MjJkM2Q1NDhm
Y2JjNTVmLi5mNjRhMTI0ODQxZGYwOTY4NDgyNWFjMTJhNDgzMmFiYjhmZWE4NzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLCAyMDEyLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmluZGV4IDI5ZDQ1NWFlYjMwZDAzMWQzMzI1Yzk2OTQ0
N2U1NjFmOGU4ODQ5ZTcuLjZiZTcxM2M2YTA0MWYwNjgzZjQ5MDg1MDM2Y2E5MDA2YzRiMDFlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIlNWR0dseXBoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0hL
ZXJuRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdQYXRoQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIuaCIKICNpbmNs
dWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHVktlcm5FbGVtZW50Lmgi
CkBAIC0xMTI2LDExICsxMTI1LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIHJyQ3VydmVUbyA9IDB4
MDg7CiBzdGF0aWMgY29uc3QgY2hhciBlbmRDaGFyID0gMHgwZTsKIHN0YXRpYyBjb25zdCBjaGFy
IHJNb3ZlVG8gPSAweDE1OwogCi1jbGFzcyBDRkZCdWlsZGVyIDogcHVibGljIFNWR1BhdGhCdWls
ZGVyIHsKK2NsYXNzIENGRkJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1Ymxp
YzoKICAgICBDRkZCdWlsZGVyKFZlY3RvcjxjaGFyPiYgY2ZmRGF0YSwgZmxvYXQgd2lkdGgsIEZs
b2F0UG9pbnQgb3JpZ2luKQogICAgICAgICA6IG1fY2ZmRGF0YShjZmZEYXRhKQotICAgICAgICAs
IG1faGFzQm91bmRpbmdCb3goZmFsc2UpCiAgICAgewogICAgICAgICB3cml0ZUNGRkVuY29kZWRO
dW1iZXIobV9jZmZEYXRhLCB3aWR0aCk7CiAgICAgICAgIHdyaXRlQ0ZGRW5jb2RlZE51bWJlciht
X2NmZkRhdGEsIG9yaWdpbi54KCkpOwpAQCAtMTIwOSwxMCArMTIwNywyMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbGluZVRvKG1fc3RhcnRpbmdQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBv
dmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGluZVRvSG9yaXpvbnRhbChm
bG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisgICAgdmlydHVhbCB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0
ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChj
b25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGJvb2wsIGJvb2wsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92
ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogICAgIFZlY3RvcjxjaGFyPiYgbV9j
ZmZEYXRhOwogICAgIEZsb2F0UG9pbnQgbV9zdGFydGluZ1BvaW50OworICAgIEZsb2F0UG9pbnQg
bV9jdXJyZW50OwogICAgIEZsb2F0UmVjdCBtX2JvdW5kaW5nQm94OwotICAgIGJvb2wgbV9oYXNC
b3VuZGluZ0JveDsKKyAgICBib29sIG1faGFzQm91bmRpbmdCb3ggeyBmYWxzZSB9OwogfTsKIAog
VmVjdG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhm
bG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQs
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0CkBAIC0xMjQxLDEzICsxMjUwLDcgQEAgVmVj
dG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhmbG9h
dCB3aWR0aCwgY29uc3QgU1ZHRWwKICAgICBDRkZCdWlsZGVyIGJ1aWxkZXIocmVzdWx0LCB3aWR0
aCwgRmxvYXRQb2ludChob3Jpem9udGFsT3JpZ2luWCwgaG9yaXpvbnRhbE9yaWdpblkpKTsKICAg
ICBTVkdQYXRoU3RyaW5nU291cmNlIHNvdXJjZShkQXR0cmlidXRlKTsKIAotICAgIFNWR1BhdGhQ
YXJzZXIgcGFyc2VyOwotICAgIHBhcnNlci5zZXRDdXJyZW50U291cmNlKCZzb3VyY2UpOwotICAg
IHBhcnNlci5zZXRDdXJyZW50Q29uc3VtZXIoJmJ1aWxkZXIpOwotCi0gICAgb2sgPSBwYXJzZXIu
cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwotICAgIHBhcnNlci5j
bGVhbnVwKCk7Ci0KKyAgICBvayA9IFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRl
cik7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmVzdWx0LmNsZWFyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262861</attachid>
            <date>2015-10-11 09:08:38 -0700</date>
            <delta_ts>2015-10-11 20:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150011-20151011090802.patch</filename>
            <type>text/plain</type>
            <size>94950</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjZDkyMGQwZjQ3ZDJh
NjBjYTU4YTQ0ZDJlM2I1Njk0OGJiZDZhNC4uMTgyNmJmNmQ4NDZkMDc4NWQ4ZTEzNzczZTVjOTc5
ZDk4MzQ4ZTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0NiBAQAogMjAxNS0xMC0xMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbnVwIGFu
ZCBzaW1wbGlmaWNhdGlvbiBvZiBTVkcgcGF0aC1yZWxhdGVkIGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAxMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hbnkgU1ZHIHBhdGgtcmVsYXRl
ZCBzdWJjbGFzc2VzIHdlcmUgc3RhdGVmdWwsIGJ1dCBvbmx5IGJlY2F1c2UgY29kZSBpbgorICAg
ICAgICBTVkdQYXRoVXRpbGl0aWVzIGtlcHQgZ2xvYmFsIGNvcGllcyBhcm91bmQgZm9yIG5vIHJl
YXNvbi4gQSBtaWNyb2JlbmNobWFyaworICAgICAgICBzaG93ZWQgdGhhdCB0aGVyZSB3YXMgbm8g
YmVuZWZpdCB0byBrZWVwaW5nIGdsb2JhbCBzaW5nbGV0b25zIG9mIFNWR1BhdGhCdWlsZGVyLAor
ICAgICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIsIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciwg
U1ZHUGF0aFN0cmluZ0J1aWxkZXIsCisgICAgICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIsIFNWR1BhdGhQYXJzZXIgYW5kIFNWR1BhdGhCbGVuZGVyLgorICAgICAgICAKKyAgICAgICAg
TWFraW5nIHRoZXNlIGNsYXNzZXMgbm90IGJlIHJlLXVzYWJsZSBtYWtlcyB0aGUgY29kZSBtdWNo
IHNpbXBsZXIsIGFsbG93aW5nCisgICAgICAgIHRoZWlyIFNWR1BhdGhTb3VyY2VzLCBTVkdQYXRo
Q29uc3VtZXJzLCBTVkdQYXRoQnl0ZVN0cmVhbSBldGMuIHRvIGJlIHN0b3JlZAorICAgICAgICBi
eSByZWZlcmVuY2UsIGFuZCBlbGltaW5hdGluZyB0aGUgY2xlYW51cCgpIGZ1bmN0aW9uIHdoaWNo
IGNyZWF0ZWQgYW5ub3lpbmcKKyAgICAgICAgb3JkZXJpbmcgaXNzdWVzLgorICAgICAgICAKKyAg
ICAgICAgQ29kZSB0aGF0IHVzZXMgU1ZHUGF0aFBhcnNlciBhbmQgU1ZHUGF0aEJsZW5kZXIgaXMg
ZnVydGhlciBzaW1wbGlmaWVkIGJ5IGhhdmluZworICAgICAgICB0aGVzZSBjbGFzc2VzIGV4cG9z
ZSBvbmx5IHN0YXRpYyBmdW5jdGlvbnMsIGhpZGluZyBhbnkgaW50ZXJuYWwgc3RhdGVmdWxuZXNz
LgorCisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcDogUmVtb3ZlIHRoZSBtX3Byb2dy
ZXNzIG1lbWJlciB2YXJpYWJsZSBhbmQgaW5zdGVhZAorICAgICAgICBwYXNzIHByb2dyZXNzIHRv
IHRoZSB2YXJpb3VzIGJsZW5kIGZ1bmN0aW9ucywgYXMgd2UgZG8gZm9yIG90aGVyIGJsZW5kIGZ1
bmN0aW9ucy4KKyAgICAgICAgRXhwb3NlIHR3byBvbmx5IHN0YXRpYyBmdW5jdGlvbnMuIFBvaW50
ZXJzIHRvIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6YWRk
QW5pbWF0ZWRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEFu
aW1hdGVkUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6U1ZHUGF0aEJs
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRE
aW1lbnNvbmFsRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5k
QW5pbWF0ZWRGbG9hdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpi
bGVuZE1vdmVUb1NlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJs
ZW5kTGluZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6Ymxl
bmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxl
bmRlcjo6YmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb0N1YmljU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0
aWNTbW9vdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVu
ZEFyY1RvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6Y2xlYW51
cCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhCbGVuZGVyLmg6IE1ha2UgdGhlIGNv
bnN0cnVjdG9yIHRha2UgYSByZWYgdG8gdGhlIGRlc3RpbmF0aW9uIFBhdGgsCisgICAgICAgIHdo
aWNoIGlzIHN0b3JlZCBieSByZWZlcmVuY2UuCisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVpbGRl
cjo6Y2xvc2VQYXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ1aWxkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpzZXRDdXJyZW50UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5jcHA6IFJlZmVyZW5jZXMsIGFzc2Vy
dGlvbnMgcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
cjo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVT
dHJlYW1CdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXI6OndyaXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXI6OnNldEN1cnJlbnRCeXRlU3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0
aENvbnN1bWVyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFBhcnNlci5jcHA6IEV4cG9zZSBzb21lIHN0YXRpYyBoZWxwZXIgZnVuY3Rp
b25zIGZvciBwYXJzaW5nCisgICAgICAgIHRvIGJ5dGUgc3RyZWFtcyBhbmQgc3RyaW5ncy4gUmVm
ZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlVG9CeXRlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoUGFyc2VyOjpwYXJzZUNsb3NlUGF0aFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhQYXJzZXI6OnBhcnNlTGluZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6
OnBhcnNlQXJjVG9TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBh
cnNlUGF0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3Nl
QXJjVG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhE
YXRhRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2Vy
OjpjbGVhbnVwKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6c2V0Q3VycmVudENvbnN1bWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnNldEN1cnJlbnRTb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvVmVydGljYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb1F1
YWRyYXRpY1Ntb290aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6
OmFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y2xvc2VQ
YXRoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OnNldEN1cnJlbnRTVkdQYXRoRWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OnNldEN1
cnJlbnRTVkdQYXRoU2VnTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OnNldEN1cnJlbnRTVkdQYXRoU2VnUm9sZSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTdHJpbmdCdWlsZGVyOjpjbGVhbnVwKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjb250aW51ZUNvbnN1bWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjp0b3Rh
bExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
OjpjdXJyZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlcjo6c2V0RGVzaXJlZExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXI6OnBhdGhTZWdtZW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6c2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6IFJlbW92ZSBnbG9i
YWxzIGFjY2Vzc29ycywgbWFraW5nIHRoaW5ncyBvbiB0aGUgc3RhY2sKKyAgICAgICAgaW5zdGVh
ZC4gVXNlIFNWR1BhdGhQYXJzZXIgaGVscGVyIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkUGF0aEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjphcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0
cmluZ0Zyb21CeXRlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU3RyaW5nRnJvbVNW
R1BhdGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1G
cm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZGRUb1NWR1BhdGhCeXRlU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0UG9pbnRBdExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpnbG9iYWxTVkdQYXRoQnVpbGRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9i
YWxTVkdQYXRoU2VnTGlzdEJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnbG9iYWxTVkdQYXRoQmxlbmRlcik6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6IENG
RkJ1aWxkZXIgbm8gbG9uZ2VyIGluaGVyaXRzIGZyb20gU1ZHUGF0aEJ1aWxkZXIuCisgICAgICAg
IEl0IGRpZCBub3RoaW5nIHdpdGggdGhlIFBhdGgsIHJlLWltcGxlbWVudGVkIGFsbCB0aGUgZnVu
Y3Rpb25zLCBhbmQgb25seSBtYWRlIHVzZSBvZgorICAgICAgICB0aGUgbV9jdXJyZW50IG1lbWJl
ciB2YXIsIHNvIGp1c3QgbWFrZSBpdCBpbmhlcml0IGZyb20gU1ZHUGF0aENvbnN1bWVyLCBhbmQg
aGF2ZQorICAgICAgICBpdHMgb3duIG1fY3VycmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyk6CisKKzIwMTUtMTAtMTAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHJlZmVy
ZW5jZXMgYW5kIG1vcmUgY29uc3QgaW4gU1ZHUGF0aFV0aWxpdGllcwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDA3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJsZW5kZXIuY3BwCmluZGV4IGMyMWQ1N2YxOGQ0ODI3ZDEyZDBiMWQ1YTExOTQwZWQ0
OTAxNmY2YTguLjdhYTg0ZThmN2EwZjE0YmUyYzU0ZDU5N2Q5MjU4NDFiNWVlNTY5NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywxMyArMjgsMjIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoQmxlbmRlcjo6U1ZHUGF0aEJsZW5kZXIoKQot
ICAgIDogbV9mcm9tU291cmNlKG51bGxwdHIpCi0gICAgLCBtX3RvU291cmNlKG51bGxwdHIpCi0g
ICAgLCBtX2NvbnN1bWVyKG51bGxwdHIpCi0gICAgLCBtX3Byb2dyZXNzKDApCi0gICAgLCBtX2Fk
ZFR5cGVzQ291bnQoMCkKLSAgICAsIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uKGZhbHNlKQor
Ym9vbCBTVkdQYXRoQmxlbmRlcjo6YWRkQW5pbWF0ZWRQYXRoKFNWR1BhdGhTb3VyY2UmIGZyb21T
b3VyY2UsIFNWR1BhdGhTb3VyY2UmIHRvU291cmNlLCBTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVy
LCB1bnNpZ25lZCByZXBlYXRDb3VudCkKK3sKKyAgICBTVkdQYXRoQmxlbmRlciBibGVuZGVyKGZy
b21Tb3VyY2UsIHRvU291cmNlLCBjb25zdW1lcik7CisgICAgcmV0dXJuIGJsZW5kZXIuYWRkQW5p
bWF0ZWRQYXRoKHJlcGVhdENvdW50KTsKK30KKworYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRB
bmltYXRlZFBhdGgoU1ZHUGF0aFNvdXJjZSYgZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSYgdG9T
b3VyY2UsIFNWR1BhdGhDb25zdW1lciYgY29uc3VtZXIsIGZsb2F0IHByb2dyZXNzKQoreworICAg
IFNWR1BhdGhCbGVuZGVyIGJsZW5kZXIoZnJvbVNvdXJjZSwgdG9Tb3VyY2UsIGNvbnN1bWVyKTsK
KyAgICByZXR1cm4gYmxlbmRlci5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcyk7Cit9CisKK1NW
R1BhdGhCbGVuZGVyOjpTVkdQYXRoQmxlbmRlcihTVkdQYXRoU291cmNlJiBmcm9tU291cmNlLCBT
VkdQYXRoU291cmNlJiB0b1NvdXJjZSwgU1ZHUGF0aENvbnN1bWVyJiBjb25zdW1lcikKKyAgICA6
IG1fZnJvbVNvdXJjZShmcm9tU291cmNlKQorICAgICwgbV90b1NvdXJjZSh0b1NvdXJjZSkKKyAg
ICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCiB7CiB9CiAKQEAgLTQzLDcgKzUzLDcgQEAgc3RhdGlj
IGlubGluZSBGbG9hdFBvaW50IGJsZW5kRmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBhLCBj
b25zdCBGbG9hdFBvaW50JgogICAgIHJldHVybiBGbG9hdFBvaW50KGJsZW5kKGEueCgpLCBiLngo
KSwgcHJvZ3Jlc3MpLCBibGVuZChhLnkoKSwgYi55KCksIHByb2dyZXNzKSk7CiB9CiAKLWZsb2F0
IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZsb2F0IGZyb20s
IGZsb2F0IHRvLCBGbG9hdEJsZW5kTW9kZSBibGVuZE1vZGUpCitmbG9hdCBTVkdQYXRoQmxlbmRl
cjo6YmxlbmRBbmltYXRlZERpbWVuc29uYWxGbG9hdChmbG9hdCBmcm9tLCBmbG9hdCB0bywgRmxv
YXRCbGVuZE1vZGUgYmxlbmRNb2RlLCBmbG9hdCBwcm9ncmVzcykKIHsKICAgICBpZiAobV9hZGRU
eXBlc0NvdW50KSB7CiAgICAgICAgIEFTU0VSVChtX2Zyb21Nb2RlID09IG1fdG9Nb2RlKTsKQEAg
LTUxLDIzICs2MSwyMyBAQCBmbG9hdCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRBbmltYXRlZERpbWVu
c29uYWxGbG9hdChmbG9hdCBmcm9tLCBmbG9hdCB0bywgRmxvYXRCbAogICAgIH0KIAogICAgIGlm
IChtX2Zyb21Nb2RlID09IG1fdG9Nb2RlKQotICAgICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8s
IG1fcHJvZ3Jlc3MpOworICAgICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsK
ICAgICAKICAgICBmbG9hdCBmcm9tVmFsdWUgPSBibGVuZE1vZGUgPT0gQmxlbmRIb3Jpem9udGFs
ID8gbV9mcm9tQ3VycmVudFBvaW50LngoKSA6IG1fZnJvbUN1cnJlbnRQb2ludC55KCk7CiAgICAg
ZmxvYXQgdG9WYWx1ZSA9IGJsZW5kTW9kZSA9PSBCbGVuZEhvcml6b250YWwgPyBtX3RvQ3VycmVu
dFBvaW50LngoKSA6IG1fdG9DdXJyZW50UG9pbnQueSgpOwogCiAgICAgLy8gVHJhbnNmb3JtIHRv
WSB0byB0aGUgY29vcmRpbmF0ZSBtb2RlIG9mIGZyb21ZCi0gICAgZmxvYXQgYW5pbVZhbHVlID0g
YmxlbmQoZnJvbSwgbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG8gKyB0b1Zh
bHVlIDogdG8gLSB0b1ZhbHVlLCBtX3Byb2dyZXNzKTsKKyAgICBmbG9hdCBhbmltVmFsdWUgPSBi
bGVuZChmcm9tLCBtX2Zyb21Nb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyB0byArIHRvVmFs
dWUgOiB0byAtIHRvVmFsdWUsIHByb2dyZXNzKTsKICAgICAKICAgICBpZiAobV9pc0luRmlyc3RI
YWxmT2ZBbmltYXRpb24pCiAgICAgICAgIHJldHVybiBhbmltVmFsdWU7CiAgICAgCiAgICAgLy8g
VHJhbnNmb3JtIHRoZSBhbmltYXRlZCBwb2ludCB0byB0aGUgY29vcmRpbmF0ZSBtb2RlLCBuZWVk
ZWQgZm9yIHRoZSBjdXJyZW50IHByb2dyZXNzLgotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSA9IGJs
ZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgbV9wcm9ncmVzcyk7CisgICAgZmxvYXQgY3VycmVudFZh
bHVlID0gYmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIG1f
dG9Nb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBhbmltVmFsdWUgKyBjdXJyZW50VmFsdWUg
OiBhbmltVmFsdWUgLSBjdXJyZW50VmFsdWU7CiB9CiAKLUZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwg
Y29uc3QgRmxvYXRQb2ludCYgdG9Qb2ludCkKK0Zsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJs
ZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwgY29uc3Qg
RmxvYXRQb2ludCYgdG9Qb2ludCwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgaWYgKG1fYWRkVHlw
ZXNDb3VudCkgewogICAgICAgICBBU1NFUlQobV9mcm9tTW9kZSA9PSBtX3RvTW9kZSk7CkBAIC03
Nyw3ICs4Nyw3IEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9h
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2ludCwKICAgICB9CiAKICAgICBpZiAobV9m
cm9tTW9kZSA9PSBtX3RvTW9kZSkKLSAgICAgICAgcmV0dXJuIGJsZW5kRmxvYXRQb2ludChmcm9t
UG9pbnQsIHRvUG9pbnQsIG1fcHJvZ3Jlc3MpOworICAgICAgICByZXR1cm4gYmxlbmRGbG9hdFBv
aW50KGZyb21Qb2ludCwgdG9Qb2ludCwgcHJvZ3Jlc3MpOwogCiAgICAgLy8gVHJhbnNmb3JtIHRv
UG9pbnQgdG8gdGhlIGNvb3JkaW5hdGUgbW9kZSBvZiBmcm9tUG9pbnQKICAgICBGbG9hdFBvaW50
IGFuaW1hdGVkUG9pbnQgPSB0b1BvaW50OwpAQCAtODYsMTMgKzk2LDEzIEBAIEZsb2F0UG9pbnQg
U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IGZyb21Qb2ludCwKICAgICBlbHNlCiAgICAgICAgIGFuaW1hdGVkUG9pbnQubW92ZSgtbV90b0N1
cnJlbnRQb2ludC54KCksIC1tX3RvQ3VycmVudFBvaW50LnkoKSk7CiAKLSAgICBhbmltYXRlZFBv
aW50ID0gYmxlbmRGbG9hdFBvaW50KGZyb21Qb2ludCwgYW5pbWF0ZWRQb2ludCwgbV9wcm9ncmVz
cyk7CisgICAgYW5pbWF0ZWRQb2ludCA9IGJsZW5kRmxvYXRQb2ludChmcm9tUG9pbnQsIGFuaW1h
dGVkUG9pbnQsIHByb2dyZXNzKTsKIAogICAgIGlmIChtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlv
bikKICAgICAgICAgcmV0dXJuIGFuaW1hdGVkUG9pbnQ7CiAKICAgICAvLyBUcmFuc2Zvcm0gdGhl
IGFuaW1hdGVkIHBvaW50IHRvIHRoZSBjb29yZGluYXRlIG1vZGUsIG5lZWRlZCBmb3IgdGhlIGN1
cnJlbnQgcHJvZ3Jlc3MuCi0gICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQgPSBibGVuZEZsb2F0
UG9pbnQobV9mcm9tQ3VycmVudFBvaW50LCBtX3RvQ3VycmVudFBvaW50LCBtX3Byb2dyZXNzKTsK
KyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCA9IGJsZW5kRmxvYXRQb2ludChtX2Zyb21DdXJy
ZW50UG9pbnQsIG1fdG9DdXJyZW50UG9pbnQsIHByb2dyZXNzKTsKICAgICBpZiAobV90b01vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcykKICAgICAgICAgcmV0dXJuIGFuaW1hdGVkUG9pbnQgKyBj
dXJyZW50UG9pbnQ7CiAKQEAgLTEwMCw2MyArMTEwLDYzIEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEJs
ZW5kZXI6OmJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb2lu
dCwKICAgICByZXR1cm4gYW5pbWF0ZWRQb2ludDsKIH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRNb3ZlVG9TZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kTW92ZVRvU2Vn
bWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsK
ICAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhh
c01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VNb3ZlVG9TZWdtZW50KGZyb21UYXJn
ZXRQb2ludCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZU1vdmVUb1NlZ21lbnQodG9U
YXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9yZURhdGEoKSAmJiAhbV9m
cm9tU291cmNlLnBhcnNlTW92ZVRvU2VnbWVudChmcm9tVGFyZ2V0UG9pbnQpKQorICAgICAgICB8
fCAhbV90b1NvdXJjZS5wYXJzZU1vdmVUb1NlZ21lbnQodG9UYXJnZXRQb2ludCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIG1fY29uc3VtZXItPm1vdmVUbyhibGVuZEFuaW1hdGVkRmxv
YXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBmYWxzZSwgbV9pc0luRmly
c3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUpOworICAgIG1fY29uc3Vt
ZXIubW92ZVRvKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJn
ZXRQb2ludCwgcHJvZ3Jlc3MpLCBmYWxzZSwgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBt
X2Zyb21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludCA9IG1fZnJvbU1v
ZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21UYXJnZXRQb2ludCA6IG1fZnJvbUN1cnJl
bnRQb2ludCArIGZyb21UYXJnZXRQb2ludDsKICAgICBtX3RvQ3VycmVudFBvaW50ID0gbV90b01v
ZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvVGFyZ2V0UG9pbnQgOiBtX3RvQ3VycmVudFBv
aW50ICsgdG9UYXJnZXRQb2ludDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRo
QmxlbmRlcjo6YmxlbmRMaW5lVG9TZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5k
TGluZVRvU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJn
ZXRQb2ludDsKICAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKChtX2Zyb21T
b3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VMaW5lVG9TZWdtZW50
KGZyb21UYXJnZXRQb2ludCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUxpbmVUb1Nl
Z21lbnQodG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9yZURhdGEo
KSAmJiAhbV9mcm9tU291cmNlLnBhcnNlTGluZVRvU2VnbWVudChmcm9tVGFyZ2V0UG9pbnQpKQor
ICAgICAgICB8fCAhbV90b1NvdXJjZS5wYXJzZUxpbmVUb1NlZ21lbnQodG9UYXJnZXRQb2ludCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fY29uc3VtZXItPmxpbmVUbyhibGVuZEFu
aW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBtX2lzSW5G
aXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25z
dW1lci5saW5lVG8oYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVRhcmdldFBvaW50LCB0b1Rh
cmdldFBvaW50LCBwcm9ncmVzcyksIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9t
TW9kZSA6IG1fdG9Nb2RlKTsKICAgICBtX2Zyb21DdXJyZW50UG9pbnQgPSBtX2Zyb21Nb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBmcm9tVGFyZ2V0UG9pbnQgOiBtX2Zyb21DdXJyZW50UG9p
bnQgKyBmcm9tVGFyZ2V0UG9pbnQ7CiAgICAgbV90b0N1cnJlbnRQb2ludCA9IG1fdG9Nb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMgPyB0b1RhcmdldFBvaW50IDogbV90b0N1cnJlbnRQb2ludCAr
IHRvVGFyZ2V0UG9pbnQ7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQorYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBmbG9h
dCBmcm9tWCA9IDA7CiAgICAgZmxvYXQgdG9YID0gMDsKLSAgICBpZiAoKG1fZnJvbVNvdXJjZS0+
aGFzTW9yZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLT5wYXJzZUxpbmVUb0hvcml6b250YWxTZWdt
ZW50KGZyb21YKSkKLSAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlTGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQodG9YKSkKKyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpICYmICFt
X2Zyb21Tb3VyY2UucGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmcm9tWCkpCisgICAgICAg
IHx8ICFtX3RvU291cmNlLnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQodG9YKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+bGluZVRvSG9yaXpvbnRhbChibGVu
ZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZyb21YLCB0b1gsIEJsZW5kSG9yaXpvbnRhbCksIG1f
aXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6IG1fdG9Nb2RlKTsKKyAgICBt
X2NvbnN1bWVyLmxpbmVUb0hvcml6b250YWwoYmxlbmRBbmltYXRlZERpbWVuc29uYWxGbG9hdChm
cm9tWCwgdG9YLCBCbGVuZEhvcml6b250YWwsIHByb2dyZXNzKSwgbV9pc0luRmlyc3RIYWxmT2ZB
bmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2lu
dC5zZXRYKG1fZnJvbU1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21YIDogbV9mcm9t
Q3VycmVudFBvaW50LngoKSArIGZyb21YKTsKICAgICBtX3RvQ3VycmVudFBvaW50LnNldFgobV90
b01vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvWCA6IG1fdG9DdXJyZW50UG9pbnQueCgp
ICsgdG9YKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6Ymxl
bmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKQorYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRMaW5l
VG9WZXJ0aWNhbFNlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgZmxvYXQgZnJvbVkgPSAw
OwogICAgIGZsb2F0IHRvWSA9IDA7Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRh
KCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoZnJvbVkpKQot
ICAgICAgICB8fCAhbV90b1NvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQodG9ZKSkK
KyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UucGFy
c2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoZnJvbVkpKQorICAgICAgICB8fCAhbV90b1NvdXJjZS5w
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCh0b1kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX2NvbnN1bWVyLT5saW5lVG9WZXJ0aWNhbChibGVuZEFuaW1hdGVkRGltZW5zb25hbEZs
b2F0KGZyb21ZLCB0b1ksIEJsZW5kVmVydGljYWwpLCBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlv
biA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25zdW1lci5saW5lVG9WZXJ0aWNh
bChibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZyb21ZLCB0b1ksIEJsZW5kVmVydGljYWws
IHByb2dyZXNzKSwgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90
b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludC5zZXRZKG1fZnJvbU1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcyA/IGZyb21ZIDogbV9mcm9tQ3VycmVudFBvaW50LnkoKSArIGZyb21ZKTsK
ICAgICBtX3RvQ3VycmVudFBvaW50LnNldFkobV90b01vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRl
cyA/IHRvWSA6IG1fdG9DdXJyZW50UG9pbnQueSgpICsgdG9ZKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkKK2Jv
b2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb0N1YmljU2VnbWVudChmbG9hdCBwcm9ncmVz
cykKIHsKICAgICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IGZy
b21Qb2ludDE7CkBAIC0xNjQsNzAgKzE3NCw3MCBAQCBib29sIFNWR1BhdGhCbGVuZGVyOjpibGVu
ZEN1cnZlVG9DdWJpY1NlZ21lbnQoKQogICAgIEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKICAg
ICBGbG9hdFBvaW50IHRvUG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdG9Qb2ludDI7Ci0gICAgaWYg
KChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+cGFyc2VDdXJ2
ZVRvQ3ViaWNTZWdtZW50KGZyb21Qb2ludDEsIGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2ludCkp
Ci0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQodG9Qb2lu
dDEsIHRvUG9pbnQyLCB0b1RhcmdldFBvaW50KSkKKyAgICBpZiAoKG1fZnJvbVNvdXJjZS5oYXNN
b3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UucGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KGZyb21Q
b2ludDEsIGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2ludCkpCisgICAgICAgIHx8ICFtX3RvU291
cmNlLnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCh0b1BvaW50MSwgdG9Qb2ludDIsIHRvVGFyZ2V0
UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRv
Q3ViaWMoYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVBvaW50MSwgdG9Qb2ludDEpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tUG9p
bnQyLCB0b1BvaW50MiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9k
ZSA6IG1fdG9Nb2RlKTsKKyAgICBtX2NvbnN1bWVyLmN1cnZlVG9DdWJpYyhibGVuZEFuaW1hdGVk
RmxvYXRQb2ludChmcm9tUG9pbnQxLCB0b1BvaW50MSwgcHJvZ3Jlc3MpLAorICAgICAgICBibGVu
ZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tUG9pbnQyLCB0b1BvaW50MiwgcHJvZ3Jlc3MpLAorICAg
ICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9p
bnQsIHByb2dyZXNzKSwKKyAgICAgICAgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zy
b21Nb2RlIDogbV90b01vZGUpOwogICAgIG1fZnJvbUN1cnJlbnRQb2ludCA9IG1fZnJvbU1vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IGZyb21UYXJnZXRQb2ludCA6IG1fZnJvbUN1cnJlbnRQ
b2ludCArIGZyb21UYXJnZXRQb2ludDsKICAgICBtX3RvQ3VycmVudFBvaW50ID0gbV90b01vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRvVGFyZ2V0UG9pbnQgOiBtX3RvQ3VycmVudFBvaW50
ICsgdG9UYXJnZXRQb2ludDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoQmxl
bmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5k
ZXI6OmJsZW5kQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAg
ICBGbG9hdFBvaW50IGZyb21UYXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IGZyb21Qb2ludDI7
CiAgICAgRmxvYXRQb2ludCB0b1RhcmdldFBvaW50OwogICAgIEZsb2F0UG9pbnQgdG9Qb2ludDI7
Ci0gICAgaWYgKChtX2Zyb21Tb3VyY2UtPmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS0+
cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2lu
dCkpCi0gICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21l
bnQodG9Qb2ludDIsIHRvVGFyZ2V0UG9pbnQpKQorICAgIGlmICgobV9mcm9tU291cmNlLmhhc01v
cmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJjZS5wYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQo
ZnJvbVBvaW50MiwgZnJvbVRhcmdldFBvaW50KSkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UucGFy
c2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KHRvUG9pbnQyLCB0b1RhcmdldFBvaW50KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+Y3VydmVUb0N1YmljU21vb3Ro
KGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDIsIHRvUG9pbnQyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJvbVRh
cmdldFBvaW50LCB0b1RhcmdldFBvaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBtX2Zyb21Nb2RlIDogbV90b01vZGUp
OworICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljU21vb3RoKGJsZW5kQW5pbWF0ZWRGbG9hdFBv
aW50KGZyb21Qb2ludDIsIHRvUG9pbnQyLCBwcm9ncmVzcyksCisgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCwgcHJvZ3Jlc3MpLAor
ICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9k
ZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDogbV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdl
dFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9pbnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1fdG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZl
VG9RdWFkcmF0aWNTZWdtZW50KCkKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgRmxvYXRQb2ludCBmcm9tVGFy
Z2V0UG9pbnQ7CiAgICAgRmxvYXRQb2ludCBmcm9tUG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdG9U
YXJnZXRQb2ludDsKICAgICBGbG9hdFBvaW50IHRvUG9pbnQxOwotICAgIGlmICgobV9mcm9tU291
cmNlLT5oYXNNb3JlRGF0YSgpICYmICFtX2Zyb21Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1NlZ21lbnQoZnJvbVBvaW50MSwgZnJvbVRhcmdldFBvaW50KSkKLSAgICAgICAgfHwgIW1fdG9T
b3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQodG9Qb2ludDEsIHRvVGFyZ2V0UG9p
bnQpKQorICAgIGlmICgobV9mcm9tU291cmNlLmhhc01vcmVEYXRhKCkgJiYgIW1fZnJvbVNvdXJj
ZS5wYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KGZyb21Qb2ludDEsIGZyb21UYXJnZXRQb2lu
dCkpCisgICAgICAgIHx8ICFtX3RvU291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
dG9Qb2ludDEsIHRvVGFyZ2V0UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X2NvbnN1bWVyLT5jdXJ2ZVRvUXVhZHJhdGljKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Q
b2ludDEsIHRvUG9pbnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
QW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/
IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25zdW1lci5jdXJ2ZVRvUXVhZHJhdGlj
KGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDEsIHRvUG9pbnQxLCBwcm9ncmVzcyks
CisgICAgICAgIGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJn
ZXRQb2ludCwgcHJvZ3Jlc3MpLAorICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/
IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50ID0gbV9mcm9t
TW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDogbV9mcm9tQ3Vy
cmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9pbnQgPSBtX3Rv
TW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1fdG9DdXJyZW50
UG9pbnQgKyB0b1RhcmdldFBvaW50OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR1Bh
dGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKK2Jvb2wgU1ZH
UGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoZmxvYXQgcHJv
Z3Jlc3MpCiB7CiAgICAgRmxvYXRQb2ludCBmcm9tVGFyZ2V0UG9pbnQ7CiAgICAgRmxvYXRQb2lu
dCB0b1RhcmdldFBvaW50OwotICAgIGlmICgobV9mcm9tU291cmNlLT5oYXNNb3JlRGF0YSgpICYm
ICFtX2Zyb21Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoZnJvbVRh
cmdldFBvaW50KSkKLSAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQodG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFz
TW9yZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNl
Z21lbnQoZnJvbVRhcmdldFBvaW50KSkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UucGFyc2VDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCh0b1RhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbV9jb25zdW1lci0+Y3VydmVUb1F1YWRyYXRpY1Ntb290aChibGVuZEFu
aW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBtX2lzSW5G
aXJzdEhhbGZPZkFuaW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CisgICAgbV9jb25z
dW1lci5jdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21U
YXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCwgcHJvZ3Jlc3MpLCBtX2lzSW5GaXJzdEhhbGZPZkFu
aW1hdGlvbiA/IG1fZnJvbU1vZGUgOiBtX3RvTW9kZSk7CiAgICAgbV9mcm9tQ3VycmVudFBvaW50
ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJvbVRhcmdldFBvaW50IDog
bV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAgIG1fdG9DdXJyZW50UG9p
bnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9UYXJnZXRQb2ludCA6IG1f
dG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50OwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1RvU2VnbWVudCgpCitib29sIFNWR1BhdGhCbGVu
ZGVyOjpibGVuZEFyY1RvU2VnbWVudChmbG9hdCBwcm9ncmVzcykKIHsKICAgICBmbG9hdCBmcm9t
UnggPSAwOwogICAgIGZsb2F0IGZyb21SeSA9IDA7CkBAIC0yNDEsMjkgKzI1MSwyOSBAQCBib29s
IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1RvU2VnbWVudCgpCiAgICAgYm9vbCB0b0xhcmdlQXJj
ID0gZmFsc2U7CiAgICAgYm9vbCB0b1N3ZWVwID0gZmFsc2U7CiAgICAgRmxvYXRQb2ludCB0b1Rh
cmdldFBvaW50OwotICAgIGlmICgobV9mcm9tU291cmNlLT5oYXNNb3JlRGF0YSgpICYmICFtX2Zy
b21Tb3VyY2UtPnBhcnNlQXJjVG9TZWdtZW50KGZyb21SeCwgZnJvbVJ5LCBmcm9tQW5nbGUsIGZy
b21MYXJnZUFyYywgZnJvbVN3ZWVwLCBmcm9tVGFyZ2V0UG9pbnQpKQotICAgICAgICB8fCAhbV90
b1NvdXJjZS0+cGFyc2VBcmNUb1NlZ21lbnQodG9SeCwgdG9SeSwgdG9BbmdsZSwgdG9MYXJnZUFy
YywgdG9Td2VlcCwgdG9UYXJnZXRQb2ludCkpCisgICAgaWYgKChtX2Zyb21Tb3VyY2UuaGFzTW9y
ZURhdGEoKSAmJiAhbV9mcm9tU291cmNlLnBhcnNlQXJjVG9TZWdtZW50KGZyb21SeCwgZnJvbVJ5
LCBmcm9tQW5nbGUsIGZyb21MYXJnZUFyYywgZnJvbVN3ZWVwLCBmcm9tVGFyZ2V0UG9pbnQpKQor
ICAgICAgICB8fCAhbV90b1NvdXJjZS5wYXJzZUFyY1RvU2VnbWVudCh0b1J4LCB0b1J5LCB0b0Fu
Z2xlLCB0b0xhcmdlQXJjLCB0b1N3ZWVwLCB0b1RhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKG1fYWRkVHlwZXNDb3VudCkgewogICAgICAgICBBU1NFUlQobV9m
cm9tTW9kZSA9PSBtX3RvTW9kZSk7CiAgICAgICAgIEZsb2F0UG9pbnQgc2NhbGVkVG9UYXJnZXRQ
b2ludCA9IHRvVGFyZ2V0UG9pbnQ7CiAgICAgICAgIHNjYWxlZFRvVGFyZ2V0UG9pbnQuc2NhbGUo
bV9hZGRUeXBlc0NvdW50LCBtX2FkZFR5cGVzQ291bnQpOwotICAgICAgICBtX2NvbnN1bWVyLT5h
cmNUbyhmcm9tUnggKyB0b1J4ICogbV9hZGRUeXBlc0NvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcm9tUnkgKyB0b1J5ICogbV9hZGRUeXBlc0NvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tQW5nbGUgKyB0b0FuZ2xlICogbV9hZGRUeXBlc0NvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcm9tTGFyZ2VBcmMgfHwgdG9MYXJnZUFyYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJvbVN3ZWVwIHx8IHRvU3dlZXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyb21UYXJnZXRQb2ludCArIHNjYWxlZFRvVGFyZ2V0UG9pbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZnJvbU1vZGUpOworICAgICAgICBtX2NvbnN1bWVyLmFyY1Rv
KGZyb21SeCArIHRvUnggKiBtX2FkZFR5cGVzQ291bnQsCisgICAgICAgICAgICBmcm9tUnkgKyB0
b1J5ICogbV9hZGRUeXBlc0NvdW50LAorICAgICAgICAgICAgZnJvbUFuZ2xlICsgdG9BbmdsZSAq
IG1fYWRkVHlwZXNDb3VudCwKKyAgICAgICAgICAgIGZyb21MYXJnZUFyYyB8fCB0b0xhcmdlQXJj
LAorICAgICAgICAgICAgZnJvbVN3ZWVwIHx8IHRvU3dlZXAsCisgICAgICAgICAgICBmcm9tVGFy
Z2V0UG9pbnQgKyBzY2FsZWRUb1RhcmdldFBvaW50LAorICAgICAgICAgICAgbV9mcm9tTW9kZSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9jb25zdW1lci0+YXJjVG8oYmxlbmQoZnJvbVJ4LCB0
b1J4LCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQoZnJvbVJ5
LCB0b1J5LCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQoZnJv
bUFuZ2xlLCB0b0FuZ2xlLCBtX3Byb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9pc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPyBmcm9tTGFyZ2VBcmMgOiB0b0xhcmdlQXJjLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZy
b21Td2VlcCA6IHRvU3dlZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1faXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6
IG1fdG9Nb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5hcmNUbyhibGVuZChmcm9tUngsIHRvUngs
IHByb2dyZXNzKSwKKyAgICAgICAgICAgIGJsZW5kKGZyb21SeSwgdG9SeSwgcHJvZ3Jlc3MpLAor
ICAgICAgICAgICAgYmxlbmQoZnJvbUFuZ2xlLCB0b0FuZ2xlLCBwcm9ncmVzcyksCisgICAgICAg
ICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZyb21MYXJnZUFyYyA6IHRvTGFyZ2VB
cmMsCisgICAgICAgICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA/IGZyb21Td2VlcCA6
IHRvU3dlZXAsCisgICAgICAgICAgICBibGVuZEFuaW1hdGVkRmxvYXRQb2ludChmcm9tVGFyZ2V0
UG9pbnQsIHRvVGFyZ2V0UG9pbnQsIHByb2dyZXNzKSwKKyAgICAgICAgICAgIG1faXNJbkZpcnN0
SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tTW9kZSA6IG1fdG9Nb2RlKTsKICAgICB9CiAgICAgbV9m
cm9tQ3VycmVudFBvaW50ID0gbV9mcm9tTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gZnJv
bVRhcmdldFBvaW50IDogbV9mcm9tQ3VycmVudFBvaW50ICsgZnJvbVRhcmdldFBvaW50OwogICAg
IG1fdG9DdXJyZW50UG9pbnQgPSBtX3RvTW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzID8gdG9U
YXJnZXRQb2ludCA6IG1fdG9DdXJyZW50UG9pbnQgKyB0b1RhcmdldFBvaW50OwpAQCAtMjk2LDI4
ICszMDYsMjEgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2VnbWVudEVxdWFsKGNvbnN0IFNWR1Bh
dGhTZWdUeXBlJiBmcm9tVHlwZSwgY29uc3QgU1ZHUGF0aFMKICAgICByZXR1cm4gdG8gPT0gZnJv
bSAtIDE7CiB9CiAKLWJvb2wgU1ZHUGF0aEJsZW5kZXI6OmFkZEFuaW1hdGVkUGF0aChTVkdQYXRo
U291cmNlKiBmcm9tU291cmNlLCBTVkdQYXRoU291cmNlKiB0b1NvdXJjZSwgU1ZHUGF0aENvbnN1
bWVyKiBjb25zdW1lciwgdW5zaWduZWQgcmVwZWF0Q291bnQpCitib29sIFNWR1BhdGhCbGVuZGVy
OjphZGRBbmltYXRlZFBhdGgodW5zaWduZWQgcmVwZWF0Q291bnQpCiB7CiAgICAgVGVtcG9yYXJ5
Q2hhbmdlPHVuc2lnbmVkPiBjaGFuZ2UobV9hZGRUeXBlc0NvdW50LCByZXBlYXRDb3VudCk7Ci0g
ICAgcmV0dXJuIGJsZW5kQW5pbWF0ZWRQYXRoKDAsIGZyb21Tb3VyY2UsIHRvU291cmNlLCBjb25z
dW1lcik7CisgICAgcmV0dXJuIGJsZW5kQW5pbWF0ZWRQYXRoKDApOwogfQogCi1ib29sIFNWR1Bh
dGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBwcm9ncmVzcywgU1ZHUGF0aFNvdXJj
ZSogZnJvbVNvdXJjZSwgU1ZHUGF0aFNvdXJjZSogdG9Tb3VyY2UsIFNWR1BhdGhDb25zdW1lciog
Y29uc3VtZXIpCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBw
cm9ncmVzcykKIHsKLSAgICBBU1NFUlQoZnJvbVNvdXJjZSk7Ci0gICAgQVNTRVJUKHRvU291cmNl
KTsKLSAgICBBU1NFUlQoY29uc3VtZXIpOwotICAgIG1fZnJvbVNvdXJjZSA9IGZyb21Tb3VyY2U7
Ci0gICAgbV90b1NvdXJjZSA9IHRvU291cmNlOwotICAgIG1fY29uc3VtZXIgPSBjb25zdW1lcjsK
ICAgICBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbiA9IHByb2dyZXNzIDwgMC41ZjsKLSAgICBt
X3Byb2dyZXNzID0gcHJvZ3Jlc3M7CiAKLSAgICBib29sIGZyb21Tb3VyY2VIYWREYXRhID0gbV9m
cm9tU291cmNlLT5oYXNNb3JlRGF0YSgpOwotICAgIHdoaWxlIChtX3RvU291cmNlLT5oYXNNb3Jl
RGF0YSgpKSB7CisgICAgYm9vbCBmcm9tU291cmNlSGFkRGF0YSA9IG1fZnJvbVNvdXJjZS5oYXNN
b3JlRGF0YSgpOworICAgIHdoaWxlIChtX3RvU291cmNlLmhhc01vcmVEYXRhKCkpIHsKICAgICAg
ICAgU1ZHUGF0aFNlZ1R5cGUgZnJvbUNvbW1hbmQ7CiAgICAgICAgIFNWR1BhdGhTZWdUeXBlIHRv
Q29tbWFuZDsKLSAgICAgICAgaWYgKChmcm9tU291cmNlSGFkRGF0YSAmJiAhbV9mcm9tU291cmNl
LT5wYXJzZVNWR1NlZ21lbnRUeXBlKGZyb21Db21tYW5kKSkgfHwgIW1fdG9Tb3VyY2UtPnBhcnNl
U1ZHU2VnbWVudFR5cGUodG9Db21tYW5kKSkKKyAgICAgICAgaWYgKChmcm9tU291cmNlSGFkRGF0
YSAmJiAhbV9mcm9tU291cmNlLnBhcnNlU1ZHU2VnbWVudFR5cGUoZnJvbUNvbW1hbmQpKSB8fCAh
bV90b1NvdXJjZS5wYXJzZVNWR1NlZ21lbnRUeXBlKHRvQ29tbWFuZCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV90b01vZGUgPSBjb29yZGluYXRlTW9kZU9mQ29tbWFu
ZCh0b0NvbW1hbmQpOwpAQCAtMzMxLDUwICszMzQsNTAgQEAgYm9vbCBTVkdQYXRoQmxlbmRlcjo6
YmxlbmRBbmltYXRlZFBhdGgoZmxvYXQgcHJvZ3Jlc3MsIFNWR1BhdGhTb3VyY2UqIGZyb21Tb3Vy
Y2UKICAgICAgICAgc3dpdGNoICh0b0NvbW1hbmQpIHsKICAgICAgICAgY2FzZSBQYXRoU2VnTW92
ZVRvUmVsOgogICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6Ci0gICAgICAgICAgICBpZiAo
IWJsZW5kTW92ZVRvU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZE1vdmVUb1NlZ21l
bnQocHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdMaW5lVG9SZWw6CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb0FiczoKLSAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9TZWdtZW50KCkpCisg
ICAgICAgICAgICBpZiAoIWJsZW5kTGluZVRvU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb0hvcml6b250YWxSZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6
b250YWxBYnM6Ci0gICAgICAgICAgICBpZiAoIWJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQo
KSkKKyAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChwcm9ncmVz
cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsOgogICAgICAgICBjYXNlIFBhdGhT
ZWdMaW5lVG9WZXJ0aWNhbEFiczoKLSAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9WZXJ0aWNh
bFNlZ21lbnQoKSkKKyAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQo
cHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6Ci0gICAgICAgICAgICBtX2NvbnN1
bWVyLT5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXIuY2xvc2VQYXRoKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljUmVsOgog
ICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnM6Ci0gICAgICAgICAgICBpZiAoIWJs
ZW5kQ3VydmVUb0N1YmljU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZEN1cnZlVG9D
dWJpY1NlZ21lbnQocHJvZ3Jlc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhS
ZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFiczoKLSAgICAgICAg
ICAgIGlmICghYmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkpCisgICAgICAgICAgICBp
ZiAoIWJsZW5kQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0
aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw6CiAgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNBYnM6Ci0gICAgICAgICAgICBpZiAoIWJsZW5kQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
KSkKKyAgICAgICAgICAgIGlmICghYmxlbmRDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudChwcm9ncmVz
cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6CiAgICAgICAgIGNh
c2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM6Ci0gICAgICAgICAgICBpZiAoIWJs
ZW5kQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSkKKyAgICAgICAgICAgIGlmICghYmxl
bmRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudChwcm9ncmVzcykpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGF0aFNl
Z0FyY1JlbDoKICAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgotICAgICAgICAgICAgaWYgKCFi
bGVuZEFyY1RvU2VnbWVudCgpKQorICAgICAgICAgICAgaWYgKCFibGVuZEFyY1RvU2VnbWVudChw
cm9ncmVzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGF0aFNlZ1Vua25vd246CkBAIC0zODMsMjcgKzM4NiwxMyBAQCBi
b29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkUGF0aChmbG9hdCBwcm9ncmVzcywgU1ZH
UGF0aFNvdXJjZSogZnJvbVNvdXJjZQogCiAgICAgICAgIGlmICghZnJvbVNvdXJjZUhhZERhdGEp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKG1fZnJvbVNvdXJjZS0+aGFzTW9y
ZURhdGEoKSAhPSBtX3RvU291cmNlLT5oYXNNb3JlRGF0YSgpKQorICAgICAgICBpZiAobV9mcm9t
U291cmNlLmhhc01vcmVEYXRhKCkgIT0gbV90b1NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZnJvbVNvdXJjZS0+aGFzTW9yZURh
dGEoKSB8fCAhbV90b1NvdXJjZS0+aGFzTW9yZURhdGEoKSkKKyAgICAgICAgaWYgKCFtX2Zyb21T
b3VyY2UuaGFzTW9yZURhdGEoKSB8fCAhbV90b1NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
U1ZHUGF0aEJsZW5kZXI6OmNsZWFudXAoKQotewotICAgIEFTU0VSVChtX3RvU291cmNlKTsKLSAg
ICBBU1NFUlQobV9mcm9tU291cmNlKTsKLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0KLSAgICBt
X2NvbnN1bWVyLT5jbGVhbnVwKCk7Ci0gICAgbV90b1NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9m
cm9tU291cmNlID0gbnVsbHB0cjsKLSAgICBtX2NvbnN1bWVyID0gbnVsbHB0cjsKLSAgICBtX2Zy
b21DdXJyZW50UG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV90b0N1cnJlbnRQb2ludCA9IEZs
b2F0UG9pbnQoKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCbGVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuaAppbmRleCAw
NmJhYWQxODYwNjIyNGM4ODQ5YWY0ZjI5ZmNkNWE2NTI3ODk2YmRmLi41MDVkMTA4MDcxNDBmNWQ0
MDQ3ZmJiODViNzEwMTU5ZDZjYjViYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJsZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNCwzOCArMzUsNDAgQEAgY2xhc3MgU1ZHUGF0aFNvdXJjZTsKIGNsYXNzIFNWR1BhdGhCbGVu
ZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdQYXRoQmxlbmRlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNWR1BhdGhCbGVuZGVyKCk7CiAKLSAgICBi
b29sIGFkZEFuaW1hdGVkUGF0aChTVkdQYXRoU291cmNlKiwgU1ZHUGF0aFNvdXJjZSosIFNWR1Bh
dGhDb25zdW1lciosIHVuc2lnbmVkIHJlcGVhdENvdW50KTsKLSAgICBib29sIGJsZW5kQW5pbWF0
ZWRQYXRoKGZsb2F0LCBTVkdQYXRoU291cmNlKiwgU1ZHUGF0aFNvdXJjZSosIFNWR1BhdGhDb25z
dW1lciopOwotICAgIHZvaWQgY2xlYW51cCgpOworICAgIHN0YXRpYyBib29sIGFkZEFuaW1hdGVk
UGF0aChTVkdQYXRoU291cmNlJiBmcm9tLCBTVkdQYXRoU291cmNlJiB0bywgU1ZHUGF0aENvbnN1
bWVyJiwgdW5zaWduZWQgcmVwZWF0Q291bnQpOworICAgIHN0YXRpYyBib29sIGJsZW5kQW5pbWF0
ZWRQYXRoKFNWR1BhdGhTb3VyY2UmIGZyb20sIFNWR1BhdGhTb3VyY2UmIHRvLCBTVkdQYXRoQ29u
c3VtZXImLCBmbG9hdCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBibGVuZE1vdmVUb1NlZ21lbnQo
KTsKLSAgICBib29sIGJsZW5kTGluZVRvU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRMaW5lVG9I
b3Jpem9udGFsU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQo
KTsKLSAgICBib29sIGJsZW5kQ3VydmVUb0N1YmljU2VnbWVudCgpOwotICAgIGJvb2wgYmxlbmRD
dXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCk7Ci0gICAgYm9vbCBibGVuZEN1cnZlVG9RdWFkcmF0
aWNTZWdtZW50KCk7Ci0gICAgYm9vbCBibGVuZEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50
KCk7Ci0gICAgYm9vbCBibGVuZEFyY1RvU2VnbWVudCgpOworICAgIFNWR1BhdGhCbGVuZGVyKFNW
R1BhdGhTb3VyY2UmLCBTVkdQYXRoU291cmNlJiwgU1ZHUGF0aENvbnN1bWVyJik7CiAKLSAgICBm
bG9hdCBibGVuZEFuaW1hdGVkRGltZW5zb25hbEZsb2F0KGZsb2F0LCBmbG9hdCwgRmxvYXRCbGVu
ZE1vZGUpOwotICAgIEZsb2F0UG9pbnQgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgZnJvbSwgY29uc3QgRmxvYXRQb2ludCYgdG8pOworICAgIGJvb2wgYWRkQW5pbWF0
ZWRQYXRoKHVuc2lnbmVkIHJlcGVhdENvdW50KTsKKyAgICBib29sIGJsZW5kQW5pbWF0ZWRQYXRo
KGZsb2F0IHByb2dyZXNzKTsKIAotICAgIFNWR1BhdGhTb3VyY2UqIG1fZnJvbVNvdXJjZTsKLSAg
ICBTVkdQYXRoU291cmNlKiBtX3RvU291cmNlOwotICAgIFNWR1BhdGhDb25zdW1lciogbV9jb25z
dW1lcjsKKyAgICBib29sIGJsZW5kTW92ZVRvU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAg
Ym9vbCBibGVuZExpbmVUb1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZExp
bmVUb1ZlcnRpY2FsU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZEN1cnZl
VG9DdWJpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTZWdtZW50KGZsb2F0IHByb2dyZXNzKTsKKyAgICBib29sIGJsZW5kQ3VydmVUb1F1
YWRyYXRpY1NlZ21lbnQoZmxvYXQgcHJvZ3Jlc3MpOworICAgIGJvb2wgYmxlbmRDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoU2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisgICAgYm9vbCBibGVuZEFyY1Rv
U2VnbWVudChmbG9hdCBwcm9ncmVzcyk7CisKKyAgICBmbG9hdCBibGVuZEFuaW1hdGVkRGltZW5z
b25hbEZsb2F0KGZsb2F0IGZyb20sIGZsb2F0IHRvLCBGbG9hdEJsZW5kTW9kZSwgZmxvYXQgcHJv
Z3Jlc3MpOworICAgIEZsb2F0UG9pbnQgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoY29uc3QgRmxv
YXRQb2ludCYgZnJvbSwgY29uc3QgRmxvYXRQb2ludCYgdG8sIGZsb2F0IHByb2dyZXNzKTsKKwor
ICAgIFNWR1BhdGhTb3VyY2UmIG1fZnJvbVNvdXJjZTsKKyAgICBTVkdQYXRoU291cmNlJiBtX3Rv
U291cmNlOworICAgIFNWR1BhdGhDb25zdW1lciYgbV9jb25zdW1lcjsKIAogICAgIEZsb2F0UG9p
bnQgbV9mcm9tQ3VycmVudFBvaW50OwogICAgIEZsb2F0UG9pbnQgbV90b0N1cnJlbnRQb2ludDsK
ICAgICAKLSAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9mcm9tTW9kZTsKLSAgICBQYXRoQ29vcmRp
bmF0ZU1vZGUgbV90b01vZGU7Ci0gICAgZmxvYXQgbV9wcm9ncmVzczsKLSAgICB1bnNpZ25lZCBt
X2FkZFR5cGVzQ291bnQ7Ci0gICAgYm9vbCBtX2lzSW5GaXJzdEhhbGZPZkFuaW1hdGlvbjsKKyAg
ICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9mcm9tTW9kZSB7IEFic29sdXRlQ29vcmRpbmF0ZXMgfTsK
KyAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV90b01vZGUgeyBBYnNvbHV0ZUNvb3JkaW5hdGVzIH07
CisgICAgdW5zaWduZWQgbV9hZGRUeXBlc0NvdW50IHsgMCB9OworICAgIGJvb2wgbV9pc0luRmly
c3RIYWxmT2ZBbmltYXRpb24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5jcHAKaW5kZXggY2I4ZTc5NGIzNzg0YTZj
MTIxZDY5MDA2MzM1NWI0NjM5YTAwN2E2OC4uZDllMTQxY2I2MjAxNzc1ZTdjMTUxMjdkZDM2NjAw
YjJhMTk5NGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVy
cwogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDQzICsyOCwz
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVp
bGRlcigpCi0gICAgOiBtX3BhdGgobnVsbHB0cikKK1NWR1BhdGhCdWlsZGVyOjpTVkdQYXRoQnVp
bGRlcihQYXRoJiBwYXRoKQorICAgIDogbV9wYXRoKHBhdGgpCiB7CiB9CiAKIHZvaWQgU1ZHUGF0
aEJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCBjbG9z
ZWQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgpOwogICAg
IG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRhcmdldFBvaW50IDog
bV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKGNsb3NlZCAmJiAhbV9wYXRoLT5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7Ci0gICAgbV9wYXRoLT5tb3Zl
VG8obV9jdXJyZW50KTsKKyAgICBpZiAoY2xvc2VkICYmICFtX3BhdGguaXNFbXB0eSgpKQorICAg
ICAgICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRoLm1vdmVUbyhtX2N1cnJlbnQp
OwogfQogCiB2b2lkIFNWR1BhdGhCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgp
OwogICAgIG1fY3VycmVudCA9IG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcyA/IHRhcmdldFBv
aW50IDogbV9jdXJyZW50ICsgdGFyZ2V0UG9pbnQ7Ci0gICAgbV9wYXRoLT5hZGRMaW5lVG8obV9j
dXJyZW50KTsKKyAgICBtX3BhdGguYWRkTGluZVRvKG1fY3VycmVudCk7CiB9CiAKIHZvaWQgU1ZH
UGF0aEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhD
b29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGgpOwogICAgIGlmIChtb2Rl
ID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMpIHsKLSAgICAgICAgbV9wYXRoLT5hZGRCZXppZXJDdXJ2
ZVRvKG1fY3VycmVudCArIHBvaW50MSwgbV9jdXJyZW50ICsgcG9pbnQyLCBtX2N1cnJlbnQgKyB0
YXJnZXRQb2ludCk7CisgICAgICAgIG1fcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKG1fY3VycmVudCAr
IHBvaW50MSwgbV9jdXJyZW50ICsgcG9pbnQyLCBtX2N1cnJlbnQgKyB0YXJnZXRQb2ludCk7CiAg
ICAgICAgIG1fY3VycmVudCArPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2N1cnJlbnQgPSB0YXJnZXRQb2ludDsKLSAgICAgICAgbV9wYXRoLT5hZGRCZXppZXJDdXJ2ZVRv
KHBvaW50MSwgcG9pbnQyLCBtX2N1cnJlbnQpOworICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3Vy
dmVUbyhwb2ludDEsIHBvaW50MiwgbV9jdXJyZW50KTsKICAgICB9ICAgIAogfQogCiB2b2lkIFNW
R1BhdGhCdWlsZGVyOjpjbG9zZVBhdGgoKQogewotICAgIEFTU0VSVChtX3BhdGgpOwotICAgIG1f
cGF0aC0+Y2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCmluZGV4IDdlZmJiNGQ5MzcyNjJjM2UxYjNk
NDhiNzg1MGM5OGI0OGYxYmZiZmYuLjk0ZjMzMmRmZGE4NzRiZjEzODcxODY2MGQzODczOTdiMGE4
N2I5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnVpbGRlci5oCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVycwogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMzLDE3ICszMywxMSBAQCBjbGFz
cyBQYXRoOwogCiBjbGFzcyBTVkdQYXRoQnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIg
ewogcHVibGljOgotICAgIFNWR1BhdGhCdWlsZGVyKCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRQ
YXRoKFBhdGgqIHBhdGgpIHsgbV9wYXRoID0gcGF0aDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgRmxv
YXRQb2ludCBtX2N1cnJlbnQ7CisgICAgU1ZHUGF0aEJ1aWxkZXIoUGF0aCYpOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkgb3ZlcnJpZGUg
eyB9CiAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgb3ZlcnJpZGUgeyBtX3BhdGgg
PSBudWxscHRyOyB9CiAKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcvTm9ybWFsaXpl
ZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CkBAIC01OSw3ICs1
Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWNTbW9vdGgo
Y29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZs
b2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBv
dmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICBQYXRoKiBtX3BhdGg7Cisg
ICAgUGF0aCYgbV9wYXRoOworICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhC
eXRlU3RyZWFtQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyLmNwcAppbmRleCAyZjRkODVjMWEwOTZmZjRkNzIxMDBhZDgzM2U5YjQ1YWU2NTE2
MDkyLi5kMTk1YzI4NzVkYzY1YmRmZjVjZDIxNGQyMGRhZjNlZmE3YjdjNWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw0OCArMjEs
NDIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXIuaCIKIAotI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIuaCIKICNpbmNsdWRlICJTVkdQYXRo
U2VnLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcjo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyKCkKLSAgICA6IG1fYnl0ZVN0cmVhbShudWxscHRyKQorU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyOjpTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJlYW0mIGJ5dGVTdHJl
YW0pCisgICAgOiBtX2J5dGVTdHJlYW0oYnl0ZVN0cmVhbSkKIHsKIH0KIAogdm9pZCBTVkdQYXRo
Qnl0ZVN0cmVhbUJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwg
Ym9vbCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVh
bSk7CiAgICAgd3JpdGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyAg
UGF0aFNlZ01vdmVUb1JlbCA6IFBhdGhTZWdNb3ZlVG9BYnMpOwogICAgIHdyaXRlRmxvYXRQb2lu
dCh0YXJnZXRQb2ludCk7CiB9CiAKIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpsaW5l
VG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2Rl
KQogewotICAgIEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9k
ZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0xpbmVUb1JlbCA6IFBhdGhTZWdMaW5l
VG9BYnMpOwogICAgIHdyaXRlRmxvYXRQb2ludCh0YXJnZXRQb2ludCk7CiB9CiAKIHZvaWQgU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRl
U2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0xpbmVUb0hv
cml6b250YWxSZWwgOiBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFicyk7CiAgICAgd3JpdGVGbG9h
dCh4KTsKIH0KIAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmxpbmVUb1ZlcnRpY2Fs
KGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5dGVT
dHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVz
ID8gUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsIDogUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzKTsK
ICAgICB3cml0ZUZsb2F0KHkpOwogfQogCiB2b2lkIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcjo6
Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50VHlw
ZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyBQYXRoU2VnQ3VydmVUb0N1YmljUmVsIDog
UGF0aFNlZ0N1cnZlVG9DdWJpY0Ficyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHBvaW50MSk7CiAg
ICAgd3JpdGVGbG9hdFBvaW50KHBvaW50Mik7CkBAIC03MCw3ICs2NSw2IEBAIHZvaWQgU1ZHUGF0
aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hCiAKIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvQ3Vi
aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJn
ZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0
cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMg
PyBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsIDogUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aEFicyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHBvaW50Mik7CiAgICAgd3JpdGVGbG9hdFBvaW50
KHRhcmdldFBvaW50KTsKQEAgLTc4LDcgKzcyLDYgQEAgdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnMK
IAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENv
b3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3Jp
dGVTZWdtZW50VHlwZShtb2RlID09IFJlbGF0aXZlQ29vcmRpbmF0ZXMgPyBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1JlbCA6IFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzKTsKICAgICB3cml0ZUZs
b2F0UG9pbnQocG9pbnQxKTsKICAgICB3cml0ZUZsb2F0UG9pbnQodGFyZ2V0UG9pbnQpOwpAQCAt
ODYsMTQgKzc5LDEyIEBAIHZvaWQgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpjdXJ2ZVRvUXVh
ZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QKIAogdm9pZCBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX2J5
dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5h
dGVzID8gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwgOiBQYXRoU2VnQ3VydmVUb1F1
YWRyYXRpY1Ntb290aEFicyk7CiAgICAgd3JpdGVGbG9hdFBvaW50KHRhcmdldFBvaW50KTsKIH0K
IAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCBy
MiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3Qg
RmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAg
IEFTU0VSVChtX2J5dGVTdHJlYW0pOwogICAgIHdyaXRlU2VnbWVudFR5cGUobW9kZSA9PSBSZWxh
dGl2ZUNvb3JkaW5hdGVzID8gUGF0aFNlZ0FyY1JlbCA6IFBhdGhTZWdBcmNBYnMpOwogICAgIHdy
aXRlRmxvYXQocjEpOwogICAgIHdyaXRlRmxvYXQocjIpOwpAQCAtMTA1LDcgKzk2LDYgQEAgdm9p
ZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwgZmxv
YXQgYW5nbGUsIGJvb2wgbGFyZ2UKIAogdm9pZCBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI6OmNs
b3NlUGF0aCgpCiB7Ci0gICAgQVNTRVJUKG1fYnl0ZVN0cmVhbSk7CiAgICAgd3JpdGVTZWdtZW50
VHlwZShQYXRoU2VnQ2xvc2VQYXRoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtQnVpbGRlci5oCmluZGV4IDJhMTk3MDEyZmUyZjU1Mjg5YWFiOTc2YTQwYzI5
NzgxZGM4ZDE3ZTMuLmMyOTZiNDdiODBkNGEzMjU3ZGZlNmU3ZTdiM2I5YTMyOGRmNzAzZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMTQg
KzMwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAgU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyKCk7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRCeXRlU3RyZWFtKFNWR1Bh
dGhCeXRlU3RyZWFtKiBieXRlU3RyZWFtKSB7IG1fYnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07IH0K
KyAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5dGVTdHJlYW0mKTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIG92ZXJy
aWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIG92ZXJyaWRlIHsgbV9i
eXRlU3RyZWFtID0gbnVsbHB0cjsgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5n
L05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3Qg
RmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwpA
QCAtNTcsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2l6ZV90IHR5cGVTaXpl
ID0gc2l6ZW9mKEJ5dGVUeXBlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBl
U2l6ZTsgKytpKQotICAgICAgICAgICAgbV9ieXRlU3RyZWFtLT5hcHBlbmQodHlwZS5ieXRlc1tp
XSk7CisgICAgICAgICAgICBtX2J5dGVTdHJlYW0uYXBwZW5kKHR5cGUuYnl0ZXNbaV0pOwogICAg
IH0KIAogICAgIHZvaWQgd3JpdGVGbGFnKGJvb2wgdmFsdWUpCkBAIC04Nyw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHdyaXRlVHlwZShkYXRhKTsKICAgICB9CiAKLSAgICBTVkdQYXRoQnl0
ZVN0cmVhbSogbV9ieXRlU3RyZWFtOworICAgIFNWR1BhdGhCeXRlU3RyZWFtJiBtX2J5dGVTdHJl
YW07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aENv
bnN1bWVyLmgKaW5kZXggZThlYWFlODJmYzEwODE2NjI2MGEzODc0ZTdkNjkwYzRkOTJjMGY2Ny4u
ODIxZWU2MWEwYzI2YmZjMTg4MzRmZTViMzA5NDk0MWI4M2JkOTcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoQ29uc3VtZXIuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
MiwgMjAwMyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBTVkdQYXRoQ29uc3Vt
ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFudXAoKSA9IDA7CiAKICAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcv
Tm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCiAgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBG
bG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggOTkxYjc3NWVhNDQ2ZjgxMGE4OWYwMWFk
NDZhNjE3OTdkYzdmZjA0Zi4uMzNlOWExZjc0NjA2YTU3N2U1MmYzYmQ4YzgwN2Y4N2M0M2Y4NzQw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw2IEBA
CiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIK
LSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG9BYnMuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvUmVsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlci5jcHAKaW5kZXggMjBhZmM5NTU3MThhYjRjNDI2N2JlZGNhODUxMGY4YWI0MTU2MWMyOS4u
MTcyYThiMmYwNmJiZGZiZDkyOGExNzVmNDY2NTQzMDAzNTg2YTA4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoUGFyc2VyLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
MiwgMjAwMyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0yNSwxNSArMjUsNDAgQEAKICNpbmNsdWRlICJTVkdQYXRoUGFyc2Vy
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisjaW5jbHVkZSAi
U1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBz
dGF0aWMgY29uc3QgZmxvYXQgZ09uZU92ZXJUaHJlZSA9IDEgLyAzLmY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHUGF0aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcigpCi0gICAgOiBtX2NvbnN1
bWVyKG51bGxwdHIpCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlKFNWR1BhdGhTb3VyY2UmIHNv
dXJjZSwgU1ZHUGF0aENvbnN1bWVyJiBjb25zdW1lciwgUGF0aFBhcnNpbmdNb2RlIG1vZGUsIGJv
b2wgY2hlY2tGb3JJbml0aWFsTW92ZVRvKQoreworICAgIFNWR1BhdGhQYXJzZXIgcGFyc2VyKGNv
bnN1bWVyLCBzb3VyY2UsIG1vZGUpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VQYXRoRGF0YShj
aGVja0ZvckluaXRpYWxNb3ZlVG8pOworfQorCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlVG9C
eXRlU3RyZWFtKFNWR1BhdGhTb3VyY2UmIHNvdXJjZSwgU1ZHUGF0aEJ5dGVTdHJlYW0mIGJ5dGVT
dHJlYW0sIFBhdGhQYXJzaW5nTW9kZSBtb2RlLCBib29sIGNoZWNrRm9ySW5pdGlhbE1vdmVUbykK
K3sKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIgYnVpbGRlcihieXRlU3RyZWFtKTsKKyAg
ICByZXR1cm4gcGFyc2Uoc291cmNlLCBidWlsZGVyLCBtb2RlLCBjaGVja0ZvckluaXRpYWxNb3Zl
VG8pOworfQorCitib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlVG9TdHJpbmcoU1ZHUGF0aFNvdXJj
ZSYgc291cmNlLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIG1vZGUsIGJvb2wgY2hl
Y2tGb3JJbml0aWFsTW92ZVRvKQoreworICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgU1ZHUGF0aFBhcnNlciBwYXJzZXIoYnVpbGRlciwgc291cmNlLCBtb2RlKTsKKyAgICBi
b29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGEoY2hlY2tGb3JJbml0aWFsTW92ZVRvKTsKKyAg
ICByZXN1bHQgPSBidWlsZGVyLnJlc3VsdCgpOworICAgIHJldHVybiBvazsKK30KKworU1ZHUGF0
aFBhcnNlcjo6U1ZHUGF0aFBhcnNlcihTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVyLCBTVkdQYXRo
U291cmNlJiBzb3VyY2UsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKKyAgICA6IG1fc291
cmNlKHNvdXJjZSkKKyAgICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCisgICAgLCBtX3BhdGhQYXJz
aW5nTW9kZShwYXJzaW5nTW9kZSkKIHsKIH0KIApAQCAtNDMsMTMgKzY4LDEzIEBAIHZvaWQgU1ZH
UGF0aFBhcnNlcjo6cGFyc2VDbG9zZVBhdGhTZWdtZW50KCkKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpCiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gbV9z
dWJQYXRoUG9pbnQ7CiAgICAgbV9jbG9zZVBhdGggPSB0cnVlOwotICAgIG1fY29uc3VtZXItPmNs
b3NlUGF0aCgpOworICAgIG1fY29uc3VtZXIuY2xvc2VQYXRoKCk7CiB9CiAKIGJvb2wgU1ZHUGF0
aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKIHsKICAgICBGbG9hdFBvaW50IHRhcmdldFBv
aW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlTW92ZVRvU2VnbWVudCh0YXJnZXRQb2ludCkp
CisgICAgaWYgKCFtX3NvdXJjZS5wYXJzZU1vdmVUb1NlZ21lbnQodGFyZ2V0UG9pbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2luZ01vZGUgPT0gTm9ybWFs
aXplZFBhcnNpbmcpIHsKQEAgLTU4LDkgKzgzLDkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJz
ZU1vdmVUb1NlZ21lbnQoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2N1cnJlbnRQb2lu
dCA9IHRhcmdldFBvaW50OwogICAgICAgICBtX3N1YlBhdGhQb2ludCA9IG1fY3VycmVudFBvaW50
OwotICAgICAgICBtX2NvbnN1bWVyLT5tb3ZlVG8obV9jdXJyZW50UG9pbnQsIG1fY2xvc2VQYXRo
LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25zdW1lci5tb3ZlVG8obV9jdXJy
ZW50UG9pbnQsIG1fY2xvc2VQYXRoLCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9jb25zdW1lci0+bW92ZVRvKHRhcmdldFBvaW50LCBtX2Nsb3NlUGF0aCwgbV9t
b2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5tb3ZlVG8odGFyZ2V0UG9pbnQsIG1fY2xvc2VQYXRo
LCBtX21vZGUpOwogICAgIG1fY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC02OCw3ICs5Myw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VNb3ZlVG9TZWdtZW50
KCkKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9TZWdtZW50KCkKIHsKICAgICBGbG9h
dFBvaW50IHRhcmdldFBvaW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlTGluZVRvU2VnbWVu
dCh0YXJnZXRQb2ludCkpCisgICAgaWYgKCFtX3NvdXJjZS5wYXJzZUxpbmVUb1NlZ21lbnQodGFy
Z2V0UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKQEAgLTc2LDE2ICsxMDEsMTYgQEAgYm9vbCBT
VkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb1NlZ21lbnQoKQogICAgICAgICAgICAgbV9jdXJyZW50
UG9pbnQgKz0gdGFyZ2V0UG9pbnQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY3VycmVu
dFBvaW50ID0gdGFyZ2V0UG9pbnQ7Ci0gICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1cnJl
bnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIubGluZVRv
KG1fY3VycmVudFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgbV9jb25zdW1lci0+bGluZVRvKHRhcmdldFBvaW50LCBtX21vZGUpOworICAgICAgICBtX2Nv
bnN1bWVyLmxpbmVUbyh0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKIHsK
ICAgICBmbG9hdCB0b1g7Ci0gICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudCh0b1gpKQorICAgIGlmICghbV9zb3VyY2UucGFyc2VMaW5lVG9Ib3Jpem9udGFsU2Vn
bWVudCh0b1gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9wYXRoUGFyc2lu
Z01vZGUgPT0gTm9ybWFsaXplZFBhcnNpbmcpIHsKQEAgLTkzLDE2ICsxMTgsMTYgQEAgYm9vbCBT
VkdQYXRoUGFyc2VyOjpwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkKICAgICAgICAgICAg
IG1fY3VycmVudFBvaW50Lm1vdmUodG9YLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9jdXJyZW50UG9pbnQuc2V0WCh0b1gpOwotICAgICAgICBtX2NvbnN1bWVyLT5saW5lVG8obV9j
dXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICBtX2NvbnN1bWVyLmxp
bmVUbyhtX2N1cnJlbnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fY29uc3VtZXItPmxpbmVUb0hvcml6b250YWwodG9YLCBtX21vZGUpOworICAgICAg
ICBtX2NvbnN1bWVyLmxpbmVUb0hvcml6b250YWwodG9YLCBtX21vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50
KCkKIHsKICAgICBmbG9hdCB0b1k7Ci0gICAgaWYgKCFtX3NvdXJjZS0+cGFyc2VMaW5lVG9WZXJ0
aWNhbFNlZ21lbnQodG9ZKSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlTGluZVRvVmVydGljYWxT
ZWdtZW50KHRvWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQYXJz
aW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTEwLDkgKzEzNSw5IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKQogICAgICAgICAgICAg
bV9jdXJyZW50UG9pbnQubW92ZSgwLCB0b1kpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2N1cnJlbnRQb2ludC5zZXRZKHRvWSk7Ci0gICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyhtX2N1
cnJlbnRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIubGlu
ZVRvKG1fY3VycmVudFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgbV9jb25zdW1lci0+bGluZVRvVmVydGljYWwodG9ZLCBtX21vZGUpOworICAgICAgICBt
X2NvbnN1bWVyLmxpbmVUb1ZlcnRpY2FsKHRvWSwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTIxLDcgKzE0Niw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRv
Q3ViaWNTZWdtZW50KCkKICAgICBGbG9hdFBvaW50IHBvaW50MTsKICAgICBGbG9hdFBvaW50IHBv
aW50MjsKICAgICBGbG9hdFBvaW50IHRhcmdldFBvaW50OwotICAgIGlmICghbV9zb3VyY2UtPnBh
cnNlQ3VydmVUb0N1YmljU2VnbWVudChwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQpKQorICAg
IGlmICghbV9zb3VyY2UucGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KHBvaW50MSwgcG9pbnQyLCB0
YXJnZXRQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQYXJz
aW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTMwLDEyICsxNTUsMTIgQEAgYm9v
bCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKQogICAgICAgICAgICAg
cG9pbnQyICs9IG1fY3VycmVudFBvaW50OwogICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9j
dXJyZW50UG9pbnQ7CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25zdW1lci0+Y3VydmVUb0N1Ymlj
KHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CisgICAg
ICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwg
QWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9sUG9pbnQgPSBwb2ludDI7
CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fY29uc3VtZXItPmN1cnZlVG9DdWJpYyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQs
IG1fbW9kZSk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQy
LCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQzLDcg
KzE2OCw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdt
ZW50KCkKIHsKICAgICBGbG9hdFBvaW50IHBvaW50MjsKICAgICBGbG9hdFBvaW50IHRhcmdldFBv
aW50OwotICAgIGlmICghbV9zb3VyY2UtPnBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChw
b2ludDIsIHRhcmdldFBvaW50KSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudChwb2ludDIsIHRhcmdldFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9DdWJpY0FicwpAQCAt
MTYxLDEyICsxODYsMTIgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9DdWJpY1Nt
b290aFNlZ21lbnQoKQogICAgICAgICAgICAgdGFyZ2V0UG9pbnQgKz0gbV9jdXJyZW50UG9pbnQ7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBw
b2ludDIsIHRhcmdldFBvaW50LCBBYnNvbHV0ZUNvb3JkaW5hdGVzKTsKKyAgICAgICAgbV9jb25z
dW1lci5jdXJ2ZVRvQ3ViaWMocG9pbnQxLCBwb2ludDIsIHRhcmdldFBvaW50LCBBYnNvbHV0ZUNv
b3JkaW5hdGVzKTsKIAogICAgICAgICBtX2NvbnRyb2xQb2ludCA9IHBvaW50MjsKICAgICAgICAg
bV9jdXJyZW50UG9pbnQgPSB0YXJnZXRQb2ludDsKICAgICB9IGVsc2UKLSAgICAgICAgbV9jb25z
dW1lci0+Y3VydmVUb0N1YmljU21vb3RoKHBvaW50MiwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7Cisg
ICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljU21vb3RoKHBvaW50MiwgdGFyZ2V0UG9pbnQs
IG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3NCw3ICsxOTksNyBAQCBib29s
IFNWR1BhdGhQYXJzZXI6OnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKQogewogICAgIEZs
b2F0UG9pbnQgcG9pbnQxOwogICAgIEZsb2F0UG9pbnQgdGFyZ2V0UG9pbnQ7Ci0gICAgaWYgKCFt
X3NvdXJjZS0+cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudChwb2ludDEsIHRhcmdldFBvaW50
KSkKKyAgICBpZiAoIW1fc291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQocG9pbnQx
LCB0YXJnZXRQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BhdGhQ
YXJzaW5nTW9kZSA9PSBOb3JtYWxpemVkUGFyc2luZykgewpAQCAtMTkwLDIwICsyMTUsMjAgQEAg
Ym9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkKICAgICAg
ICAgcG9pbnQxLnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBw
b2ludDIuc2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9j
b25zdW1lci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1
dGVDb29yZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwg
cG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZWxhdGl2ZUNvb3JkaW5hdGVzKQogICAgICAgICAgICAgbV9jb250cm9sUG9p
bnQgKz0gbV9jdXJyZW50UG9pbnQ7CiAgICAgICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9p
bnQ7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY29uc3VtZXItPmN1cnZlVG9RdWFkcmF0aWMocG9p
bnQxLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKKyAgICAgICAgbV9jb25zdW1lci5jdXJ2ZVRvUXVh
ZHJhdGljKHBvaW50MSwgdGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVu
dCgpCiB7CiAgICAgRmxvYXRQb2ludCB0YXJnZXRQb2ludDsKLSAgICBpZiAoIW1fc291cmNlLT5w
YXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KHRhcmdldFBvaW50KSkKKyAgICBpZiAo
IW1fc291cmNlLnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQodGFyZ2V0UG9pbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9sYXN0Q29tbWFuZCAhPSBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY0FicwpAQCAtMjI1LDEyICsyNTAsMTIgQEAgYm9vbCBTVkdQYXRo
UGFyc2VyOjpwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKICAgICAgICAgcG9p
bnQxLnNjYWxlKGdPbmVPdmVyVGhyZWUsIGdPbmVPdmVyVGhyZWUpOwogICAgICAgICBwb2ludDIu
c2NhbGUoZ09uZU92ZXJUaHJlZSwgZ09uZU92ZXJUaHJlZSk7CiAKLSAgICAgICAgbV9jb25zdW1l
ci0+Y3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQyLCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29y
ZGluYXRlcyk7CisgICAgICAgIG1fY29uc3VtZXIuY3VydmVUb0N1YmljKHBvaW50MSwgcG9pbnQy
LCB0YXJnZXRQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAKICAgICAgICAgbV9jb250cm9s
UG9pbnQgPSBjdWJpY1BvaW50OwogICAgICAgICBtX2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50
OwogICAgIH0gZWxzZQotICAgICAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
KHRhcmdldFBvaW50LCBtX21vZGUpOworICAgICAgICBtX2NvbnN1bWVyLmN1cnZlVG9RdWFkcmF0
aWNTbW9vdGgodGFyZ2V0UG9pbnQsIG1fbW9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTI0Miw3ICsyNjcsNyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlQXJjVG9TZWdtZW50KCkK
ICAgICBib29sIGxhcmdlQXJjOwogICAgIGJvb2wgc3dlZXA7CiAgICAgRmxvYXRQb2ludCB0YXJn
ZXRQb2ludDsKLSAgICBpZiAoIW1fc291cmNlLT5wYXJzZUFyY1RvU2VnbWVudChyeCwgcnksIGFu
Z2xlLCBsYXJnZUFyYywgc3dlZXAsIHRhcmdldFBvaW50KSkKKyAgICBpZiAoIW1fc291cmNlLnBh
cnNlQXJjVG9TZWdtZW50KHJ4LCByeSwgYW5nbGUsIGxhcmdlQXJjLCBzd2VlcCwgdGFyZ2V0UG9p
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiByeCA9IDAgb3IgcnkgPSAw
IHRoZW4gdGhpcyBhcmMgaXMgdHJlYXRlZCBhcyBhIHN0cmFpZ2h0IGxpbmUgc2VnbWVudCAoYSAi
bGluZXRvIikgam9pbmluZyB0aGUgZW5kcG9pbnRzLgpAQCAtMjY0LDkgKzI4OSw5IEBAIGJvb2wg
U1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgICAgICAgICAgICAgIG1fY3Vy
cmVudFBvaW50ICs9IHRhcmdldFBvaW50OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIG1fY3VycmVudFBvaW50ID0gdGFyZ2V0UG9pbnQ7Ci0gICAgICAgICAgICBtX2NvbnN1bWVy
LT5saW5lVG8obV9jdXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgICAgICAg
ICAgbV9jb25zdW1lci5saW5lVG8obV9jdXJyZW50UG9pbnQsIEFic29sdXRlQ29vcmRpbmF0ZXMp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY29uc3VtZXItPmxpbmVUbyh0YXJnZXRQ
b2ludCwgbV9tb2RlKTsKKyAgICAgICAgICAgIG1fY29uc3VtZXIubGluZVRvKHRhcmdldFBvaW50
LCBtX21vZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI3NywyOSArMzAy
LDE4IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgICAgICBt
X2N1cnJlbnRQb2ludCA9IHRhcmdldFBvaW50OwogICAgICAgICByZXR1cm4gZGVjb21wb3NlQXJj
VG9DdWJpYyhhbmdsZSwgcngsIHJ5LCBwb2ludDEsIHRhcmdldFBvaW50LCBsYXJnZUFyYywgc3dl
ZXApOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcmNUbyhyeCwgcnksIGFuZ2xlLCBsYXJnZUFy
Yywgc3dlZXAsIHRhcmdldFBvaW50LCBtX21vZGUpOworICAgIG1fY29uc3VtZXIuYXJjVG8ocngs
IHJ5LCBhbmdsZSwgbGFyZ2VBcmMsIHN3ZWVwLCB0YXJnZXRQb2ludCwgbV9tb2RlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRhRnJvbVNv
dXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib29sIGNoZWNrRm9ySW5pdGlh
bE1vdmVUbykKK2Jvb2wgU1ZHUGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YShib29sIGNoZWNrRm9y
SW5pdGlhbE1vdmVUbykKIHsKLSAgICBBU1NFUlQobV9zb3VyY2UpOwotICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKLQotICAgIG1fcGF0aFBhcnNpbmdNb2RlID0gcGF0aFBhcnNpbmdNb2RlOwotCi0g
ICAgbV9jb250cm9sUG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV9jdXJyZW50UG9pbnQgPSBG
bG9hdFBvaW50KCk7Ci0gICAgbV9zdWJQYXRoUG9pbnQgPSBGbG9hdFBvaW50KCk7Ci0gICAgbV9j
bG9zZVBhdGggPSB0cnVlOwotCiAgICAgLy8gU2tpcCBhbnkgbGVhZGluZyBzcGFjZXMuCi0gICAg
aWYgKCFtX3NvdXJjZS0+bW92ZVRvTmV4dFRva2VuKCkpCisgICAgaWYgKCFtX3NvdXJjZS5tb3Zl
VG9OZXh0VG9rZW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTVkdQYXRoU2VnVHlw
ZSBjb21tYW5kOwotICAgIG1fc291cmNlLT5wYXJzZVNWR1NlZ21lbnRUeXBlKGNvbW1hbmQpOwot
ICAgIG1fbGFzdENvbW1hbmQgPSBQYXRoU2VnVW5rbm93bjsKKyAgICBtX3NvdXJjZS5wYXJzZVNW
R1NlZ21lbnRUeXBlKGNvbW1hbmQpOwogCiAgICAgLy8gUGF0aCBtdXN0IHN0YXJ0IHdpdGggbW92
ZXRvLgogICAgIGlmIChjaGVja0ZvckluaXRpYWxNb3ZlVG8gJiYgY29tbWFuZCAhPSBQYXRoU2Vn
TW92ZVRvQWJzICYmIGNvbW1hbmQgIT0gUGF0aFNlZ01vdmVUb1JlbCkKQEAgLTMwNyw3ICszMjEs
NyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJz
aW5nTW9kZSBwYXRoUGFyc2luZ01vZGUsIGJvbwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgLy8gU2tpcCBzcGFjZXMgYmV0d2VlbiBjb21tYW5kIGFuZCBmaXJzdCBjb29yZGluYXRlLgot
ICAgICAgICBtX3NvdXJjZS0+bW92ZVRvTmV4dFRva2VuKCk7CisgICAgICAgIG1fc291cmNlLm1v
dmVUb05leHRUb2tlbigpOwogICAgICAgICBtX21vZGUgPSBBYnNvbHV0ZUNvb3JkaW5hdGVzOwog
ICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvUmVs
OgpAQCAtMzc5LDE1ICszOTMsMTUgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRh
RnJvbVNvdXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib28KICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoIW1fY29uc3VtZXItPmNvbnRpbnVlQ29uc3VtaW5nKCkpCisgICAgICAgIGlmICghbV9jb25z
dW1lci5jb250aW51ZUNvbnN1bWluZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgbV9sYXN0Q29tbWFuZCA9IGNvbW1hbmQ7CiAKLSAgICAgICAgaWYgKCFtX3NvdXJjZS0+
aGFzTW9yZURhdGEoKSkKKyAgICAgICAgaWYgKCFtX3NvdXJjZS5oYXNNb3JlRGF0YSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgY29tbWFuZCA9IG1fc291cmNlLT5uZXh0
Q29tbWFuZChjb21tYW5kKTsKKyAgICAgICAgY29tbWFuZCA9IG1fc291cmNlLm5leHRDb21tYW5k
KGNvbW1hbmQpOwogCiAgICAgICAgIGlmIChtX2xhc3RDb21tYW5kICE9IFBhdGhTZWdDdXJ2ZVRv
Q3ViaWNBYnMKICAgICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9D
dWJpY1JlbApAQCAtMzk5LDIyICs0MTMsMTIgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBh
dGhEYXRhRnJvbVNvdXJjZShQYXRoUGFyc2luZ01vZGUgcGF0aFBhcnNpbmdNb2RlLCBib28KICAg
ICAgICAgICAgICYmIG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9v
dGhSZWwpCiAgICAgICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBvaW50OwogCi0g
ICAgICAgIG1fY29uc3VtZXItPmluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKTsKKyAgICAgICAg
bV9jb25zdW1lci5pbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR1BhdGhQYXJzZXI6OmNsZWFudXAoKQotewotICAgIEFT
U0VSVChtX3NvdXJjZSk7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotCi0gICAgbV9jb25zdW1l
ci0+Y2xlYW51cCgpOwotICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICBtX2NvbnN1bWVyID0g
bnVsbHB0cjsKLX0KLQogLy8gVGhpcyB3b3JrcyBieSBjb252ZXJ0aW5nIHRoZSBTVkcgYXJjIHRv
ICJzaW1wbGUiIGJlemllcnMuCiAvLyBQYXJ0bHkgYWRhcHRlZCBmcm9tIE5pa28ncyBjb2RlIGlu
IGtkZWxpYnMva2RlY29yZS9zdmdpY29ucy4KIC8vIFNlZSBhbHNvIFNWRyBpbXBsZW1lbnRhdGlv
biBub3RlczogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ltcGxub3RlLmh0bWwjQXJjQ29udmVy
c2lvbkVuZHBvaW50VG9DZW50ZXIKQEAgLTQ5NSw3ICs0OTksNyBAQCBib29sIFNWR1BhdGhQYXJz
ZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwg
RmxvYXRQbwogICAgICAgICBwb2ludDIgPSB0YXJnZXRQb2ludDsKICAgICAgICAgcG9pbnQyLm1v
dmUodCAqIHNpbkVuZFRoZXRhLCAtdCAqIGNvc0VuZFRoZXRhKTsKIAotICAgICAgICBtX2NvbnN1
bWVyLT5jdXJ2ZVRvQ3ViaWMocG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQxKSwgcG9pbnRU
cmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKSwKKyAgICAgICAgbV9jb25zdW1lci5jdXJ2ZVRvQ3Vi
aWMocG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQxKSwgcG9pbnRUcmFuc2Zvcm0ubWFwUG9p
bnQocG9pbnQyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50VHJhbnNm
b3JtLm1hcFBvaW50KHRhcmdldFBvaW50KSwgQWJzb2x1dGVDb29yZGluYXRlcyk7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmgKaW5kZXggODFmYTA5
MThjM2YxYjEzYzRmMTZjYTIwMTc5ODM5NjhhYWQ3OTEzMC4uNTM0YzZhNWYyODE4YjcyNjYxYTBk
ZjM4NmFjOTlmMDc1MDM5NTNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5oCkBAIC0y
LDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxv
cGVycwogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMwLDIwICsz
MCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogY2xhc3MgU1ZHUGF0aFNvdXJjZTsKIAogY2xhc3MgU1ZHUGF0aFBhcnNlciB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU1ZHUGF0aFBhcnNlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFNWR1BhdGhQYXJzZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZShT
VkdQYXRoU291cmNlJiwgU1ZHUGF0aENvbnN1bWVyJiwgUGF0aFBhcnNpbmdNb2RlID0gTm9ybWFs
aXplZFBhcnNpbmcsIGJvb2wgY2hlY2tGb3JJbml0aWFsTW92ZVRvID0gdHJ1ZSk7CiAKLSAgICBi
b29sIHBhcnNlUGF0aERhdGFGcm9tU291cmNlKFBhdGhQYXJzaW5nTW9kZSwgYm9vbCBjaGVja0Zv
ckluaXRpYWxNb3ZlVG8gPSB0cnVlKTsKLSAgICB2b2lkIHNldEN1cnJlbnRDb25zdW1lcihTVkdQ
YXRoQ29uc3VtZXIqIGNvbnN1bWVyKSB7IG1fY29uc3VtZXIgPSBjb25zdW1lcjsgfQotICAgIHZv
aWQgc2V0Q3VycmVudFNvdXJjZShTVkdQYXRoU291cmNlKiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBz
b3VyY2U7IH0KLSAgICB2b2lkIGNsZWFudXAoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVRvQnl0
ZVN0cmVhbShTVkdQYXRoU291cmNlJiwgU1ZHUGF0aEJ5dGVTdHJlYW0mLCBQYXRoUGFyc2luZ01v
ZGUgPSBOb3JtYWxpemVkUGFyc2luZywgYm9vbCBjaGVja0ZvckluaXRpYWxNb3ZlVG8gPSB0cnVl
KTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVRvU3RyaW5nKFNWR1BhdGhTb3VyY2UmLCBTdHJpbmcm
IHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlID0gTm9ybWFsaXplZFBhcnNpbmcsIGJvb2wgY2hlY2tG
b3JJbml0aWFsTW92ZVRvID0gdHJ1ZSk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBkZWNvbXBvc2VB
cmNUb0N1YmljKGZsb2F0LCBmbG9hdCwgZmxvYXQsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jiwg
Ym9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKTsKKyAgICBTVkdQYXRoUGFyc2VyKFNW
R1BhdGhDb25zdW1lciYsIFNWR1BhdGhTb3VyY2UmLCBQYXRoUGFyc2luZ01vZGUpOworICAgIGJv
b2wgcGFyc2VQYXRoRGF0YShib29sIGNoZWNrRm9ySW5pdGlhbE1vdmVUbyk7CisKKyAgICBib29s
IGRlY29tcG9zZUFyY1RvQ3ViaWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxv
YXRQb2ludCYsIEZsb2F0UG9pbnQmLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcp
OwogICAgIHZvaWQgcGFyc2VDbG9zZVBhdGhTZWdtZW50KCk7CiAgICAgYm9vbCBwYXJzZU1vdmVU
b1NlZ21lbnQoKTsKICAgICBib29sIHBhcnNlTGluZVRvU2VnbWVudCgpOwpAQCAtNTUsMTUgKzU2
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdt
ZW50KCk7CiAgICAgYm9vbCBwYXJzZUFyY1RvU2VnbWVudCgpOwogCi0gICAgU1ZHUGF0aFNvdXJj
ZSogbV9zb3VyY2U7Ci0gICAgU1ZHUGF0aENvbnN1bWVyKiBtX2NvbnN1bWVyOwotICAgIFBhdGhD
b29yZGluYXRlTW9kZSBtX21vZGU7Ci0gICAgUGF0aFBhcnNpbmdNb2RlIG1fcGF0aFBhcnNpbmdN
b2RlOwotICAgIFNWR1BhdGhTZWdUeXBlIG1fbGFzdENvbW1hbmQ7Ci0gICAgYm9vbCBtX2Nsb3Nl
UGF0aDsKKyAgICBTVkdQYXRoU291cmNlJiBtX3NvdXJjZTsKKyAgICBTVkdQYXRoQ29uc3VtZXIm
IG1fY29uc3VtZXI7CiAgICAgRmxvYXRQb2ludCBtX2NvbnRyb2xQb2ludDsKICAgICBGbG9hdFBv
aW50IG1fY3VycmVudFBvaW50OwogICAgIEZsb2F0UG9pbnQgbV9zdWJQYXRoUG9pbnQ7CisgICAg
UGF0aENvb3JkaW5hdGVNb2RlIG1fbW9kZSB7IEFic29sdXRlQ29vcmRpbmF0ZXMgfTsKKyAgICBj
b25zdCBQYXRoUGFyc2luZ01vZGUgbV9wYXRoUGFyc2luZ01vZGUgeyBOb3JtYWxpemVkUGFyc2lu
ZyB9OworICAgIFNWR1BhdGhTZWdUeXBlIG1fbGFzdENvbW1hbmQgeyBQYXRoU2VnVW5rbm93biB9
OworICAgIGJvb2wgbV9jbG9zZVBhdGggeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCmlu
ZGV4IGNlNjU3MjFlZjIxN2MzZTI3NTNlYTA0MDhlNzA1ZWZlYzQzM2VlMmMuLmRiNTNmOGM2M2Jj
MTZmNTVkNzZjOTgwODFiODc4M2ViMTg4OWViMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVycwogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCIKIAotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1BhdGhT
ZWdBcmNBYnMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnQXJjUmVsLmgiCkBAIC00OSwxMDggKzQ4
LDg4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXIoKQotICAgIDogbV9wYXRoRWxlbWVudChudWxscHRyKQotICAg
ICwgbV9wYXRoU2VnTGlzdChudWxscHRyKQotICAgICwgbV9wYXRoU2VnUm9sZShQYXRoU2VnVW5k
ZWZpbmVkUm9sZSkKK1NWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
KFNWR1BhdGhFbGVtZW50JiBwYXRoRWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHBhdGhTZWdMaXN0
LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorICAgIDogbV9wYXRoRWxlbWVudChwYXRoRWxlbWVudCkK
KyAgICAsIG1fcGF0aFNlZ0xpc3QocGF0aFNlZ0xpc3QpCisgICAgLCBtX3BhdGhTZWdSb2xlKHJv
bGUpCiB7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewot
ICAgIEFTU0VSVChtX3BhdGhFbGVtZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAg
ICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlz
dC0+YXBwZW5kKG1fcGF0aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnModGFyZ2V0
UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9w
YXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJz
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRl
U1ZHUGF0aFNlZ01vdmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9w
YXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50
LmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Omxp
bmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1v
ZGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdM
aXN0KTsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0Fi
cyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50
LT5jcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkK
IHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3Qp
OwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNl
Z0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpv
bnRhbEFicyh4LCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5k
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoeCwgbV9w
YXRoU2VnUm9sZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1f
cGF0aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKHgsIG1fcGF0
aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCh4LCBtX3BhdGhTZWdSb2xlKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbChmbG9hdCB5LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0g
ICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVh
dGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAg
ICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdMaW5l
dG9WZXJ0aWNhbEFicyh5LCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1Zl
cnRpY2FsUmVsKHksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBl
bmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoeSwgbV9w
YXRoU2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1
YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7
Ci0gICAgQVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsK
ICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdM
aXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnko
KSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50
MS55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBw
b2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdS
b2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRo
U2VnUm9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y3VydmVUb0N1Ymlj
U21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3BhdGhFbGVt
ZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1
dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0aEVsZW1l
bnQtPmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnModGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX3BhdGhTZWdMaXN0LT5hcHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCks
IHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7Ci0gICAg
QVNTRVJUKG1fcGF0aEVsZW1lbnQpOwotICAgIEFTU0VSVChtX3BhdGhTZWdMaXN0KTsKICAgICBp
ZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMo
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCks
IG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgbV9wYXRoU2VnUm9sZSkp
OwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0aEVsZW1lbnQt
PmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBtX3BhdGhTZWdSb2xlKSk7Cisg
ICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBv
aW50MS54KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKTsKIH0KIAogdm9pZCBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChtX3Bh
dGhFbGVtZW50KTsKLSAgICBBU1NFUlQobV9wYXRoU2VnTGlzdCk7CiAgICAgaWYgKG1vZGUgPT0g
QWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC0+YXBwZW5kKG1fcGF0
aEVsZW1lbnQtPmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1f
cGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0
aFNlZ1JvbGUpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3Bh
dGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBt
X3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3Bh
dGhTZWdSb2xlKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjphcmNUbyhmbG9h
dCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2Vl
cEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUg
bW9kZSkKIHsKLSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNl
Z0xpc3QpOwogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
cGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2VnQXJjQWJz
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFy
Y0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnModGFyZ2V0UG9pbnQu
eCgpLCB0YXJnZXRQb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBG
bGFnLCBtX3BhdGhTZWdSb2xlKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LT5h
cHBlbmQobV9wYXRoRWxlbWVudC0+Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCh0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZs
YWcsIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2Vn
Um9sZSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y2xvc2VQYXRoKCkKIHsK
LSAgICBBU1NFUlQobV9wYXRoRWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fcGF0aFNlZ0xpc3QpOwot
ICAgIG1fcGF0aFNlZ0xpc3QtPmFwcGVuZChtX3BhdGhFbGVtZW50LT5jcmVhdGVTVkdQYXRoU2Vn
Q2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKTsKKyAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3Bh
dGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgobV9wYXRoU2VnUm9sZSkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKaW5kZXggNjdm
ZjI2NzAxMDczOTA1MmNmMGE5Yzg4MzJkY2JmNjRlNDMxMTYyNS4uZjgzOTg2Zjk2ZWEwMWRjNzZj
NmU3MGU4NzgyYWI4NDJjOGQyNzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdEJ1aWxkZXIuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMiwgMjAw
MyBUaGUgS2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIg
S2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0zNCwyMSArMzQsMTEgQEAgY2xhc3MgU1ZHUGF0aEVsZW1lbnQ7CiAKIGNsYXNz
IFNWR1BhdGhTZWdMaXN0QnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogcHVibGlj
OgotICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlcigpOwotCi0gICAgdm9pZCBzZXRDdXJyZW50U1ZH
UGF0aEVsZW1lbnQoU1ZHUGF0aEVsZW1lbnQqIHBhdGhFbGVtZW50KSB7IG1fcGF0aEVsZW1lbnQg
PSBwYXRoRWxlbWVudDsgfQotICAgIHZvaWQgc2V0Q3VycmVudFNWR1BhdGhTZWdMaXN0KFNWR1Bh
dGhTZWdMaXN0JiBwYXRoU2VnTGlzdCkgeyBtX3BhdGhTZWdMaXN0ID0gJnBhdGhTZWdMaXN0OyB9
Ci0gICAgdm9pZCBzZXRDdXJyZW50U1ZHUGF0aFNlZ1JvbGUoU1ZHUGF0aFNlZ1JvbGUgcGF0aFNl
Z1JvbGUpIHsgbV9wYXRoU2VnUm9sZSA9IHBhdGhTZWdSb2xlOyB9CisgICAgU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyKFNWR1BhdGhFbGVtZW50JiwgU1ZHUGF0aFNlZ0xpc3QmLCBTVkdQYXRoU2VnUm9s
ZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291
bnQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFudXAoKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgbV9wYXRoRWxlbWVudCA9IG51bGxwdHI7Ci0gICAgICAgIG1f
cGF0aFNlZ0xpc3QgPSBudWxscHRyOwotICAgICAgICBtX3BhdGhTZWdSb2xlID0gUGF0aFNlZ1Vu
ZGVmaW5lZFJvbGU7Ci0gICAgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nL05v
cm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgogICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxv
YXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwpAQCAt
NjQsOSArNTQsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGlj
U21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJj
RmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpIG92ZXJyaWRlOwogCi0gICAgU1ZHUGF0aEVsZW1lbnQqIG1fcGF0aEVsZW1lbnQ7Ci0gICAg
U1ZHUGF0aFNlZ0xpc3QqIG1fcGF0aFNlZ0xpc3Q7Ci0gICAgU1ZHUGF0aFNlZ1JvbGUgbV9wYXRo
U2VnUm9sZTsKKyAgICBTVkdQYXRoRWxlbWVudCYgbV9wYXRoRWxlbWVudDsKKyAgICBTVkdQYXRo
U2VnTGlzdCYgbV9wYXRoU2VnTGlzdDsKKyAgICBTVkdQYXRoU2VnUm9sZSBtX3BhdGhTZWdSb2xl
IHsgUGF0aFNlZ1VuZGVmaW5lZFJvbGUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGYzMGNl
MDBhMjBkNmQ1MjhkYTFlNzA1MzE5OTIxMjI4NDA3MjA0OTYuLmUyYTI0NWI1NGRjMzBkNGExOTll
OTc0N2RmNjdkYjlkOGU2NzQwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQzLDExICs0NCw2IEBAIFN0cmluZyBTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6cmVzdWx0KCkKICAgICByZXR1cm4gbV9zdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXAoKQotewotICAgIG1fc3RyaW5n
QnVpbGRlci5jbGVhcigpOwotfQotCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjppbmNyZW1l
bnRQYXRoU2VnbWVudENvdW50KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdCdWlsZGVyLmgKaW5kZXggMDgwMGQwODFhNzk4YjRjMDJhNzc4MTlmNGQ2ODdkYjYzZjU3M2Y1
Ni4uOTIzMGFjYzcwNzRhOGZjMzFiYWI5MDliYzVmNTJmYzE3ZTcxODI3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzQsNiBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIHJlc3VsdCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVw
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCmluZGV4IDFjMjdiY2Y2ODdhYWYwMzlmNmUxY2VkOWIyNzVlMGMxYzc5ZGFhYTUu
LjVkYTdlODg4ZTg4ZDE4ZDk1YzNkMjQwMjQzZmNmMjAzZjgzZTQ0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAKQEAgLTIs
NiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yNyw1OSArMjgsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCkKLSAgICA6
IG1fdHJhdmVyc2FsU3RhdGUobnVsbHB0cikKLSAgICAsIG1fc2VnbWVudEluZGV4KDApCitTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKFBh
dGhUcmF2ZXJzYWxTdGF0ZSYgc3RhdGUsIGZsb2F0IGRlc2lyZWRMZW5ndGgpCisgICAgOiBtX3Ry
YXZlcnNhbFN0YXRlKHN0YXRlKQogeworICAgIG1fdHJhdmVyc2FsU3RhdGUuc2V0RGVzaXJlZExl
bmd0aChkZXNpcmVkTGVuZ3RoKTsKIH0KIAogdm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29y
ZGluYXRlTW9kZSkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0gICAgbV90cmF2
ZXJzYWxTdGF0ZS0+cHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50TW92ZVRvUG9pbnQsICZ0
YXJnZXRQb2ludCk7CisgICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0
aEVsZW1lbnRNb3ZlVG9Qb2ludCwgJnRhcmdldFBvaW50KTsKIH0KIAogdm9pZCBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IFBhdGhDb29yZGluYXRlTW9kZSkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0g
ICAgbV90cmF2ZXJzYWxTdGF0ZS0+cHJvY2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50QWRkTGlu
ZVRvUG9pbnQsICZ0YXJnZXRQb2ludCk7CisgICAgbV90cmF2ZXJzYWxTdGF0ZS5wcm9jZXNzUGF0
aEVsZW1lbnQoUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludCwgJnRhcmdldFBvaW50KTsKIH0KIAog
dm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCiB7CiAgICAgRmxvYXRQb2ludCBw
b2ludHNbXSA9IHsgcG9pbnQxLCBwb2ludDIsIHRhcmdldFBvaW50IH07Ci0gICAgQVNTRVJUKG1f
dHJhdmVyc2FsU3RhdGUpOwotICAgIG1fdHJhdmVyc2FsU3RhdGUtPnByb2Nlc3NQYXRoRWxlbWVu
dChQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludCwgcG9pbnRzKTsKLX0KIAotdm9pZCBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjbG9zZVBhdGgoKQotewotICAgIEFTU0VSVChtX3RyYXZl
cnNhbFN0YXRlKTsKLSAgICBtX3RyYXZlcnNhbFN0YXRlLT5wcm9jZXNzUGF0aEVsZW1lbnQoUGF0
aEVsZW1lbnRDbG9zZVN1YnBhdGgsIG51bGxwdHIpOworICAgIG1fdHJhdmVyc2FsU3RhdGUucHJv
Y2Vzc1BhdGhFbGVtZW50KFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50LCBwb2ludHMpOwogfQog
Ci12b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnNldERlc2lyZWRMZW5ndGgoZmxv
YXQgZGVzaXJlZExlbmd0aCkKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y2xv
c2VQYXRoKCkKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Ci0gICAgbV90cmF2ZXJz
YWxTdGF0ZS0+c2V0RGVzaXJlZExlbmd0aChkZXNpcmVkTGVuZ3RoKTsKKyAgICBtX3RyYXZlcnNh
bFN0YXRlLnByb2Nlc3NQYXRoRWxlbWVudChQYXRoRWxlbWVudENsb3NlU3VicGF0aCwgbnVsbHB0
cik7CiB9CiAKIGJvb2wgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y29udGludWVDb25z
dW1pbmcoKQogewotICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsgICAgCi0gICAgcmV0dXJu
ICFtX3RyYXZlcnNhbFN0YXRlLT5zdWNjZXNzKCk7CisgICAgcmV0dXJuICFtX3RyYXZlcnNhbFN0
YXRlLnN1Y2Nlc3MoKTsKIH0KIAotZmxvYXQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
dG90YWxMZW5ndGgoKQorZmxvYXQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6dG90YWxM
ZW5ndGgoKSBjb25zdAogewotICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKLSAgICByZXR1
cm4gbV90cmF2ZXJzYWxTdGF0ZS0+dG90YWxMZW5ndGgoKTsKKyAgICByZXR1cm4gbV90cmF2ZXJz
YWxTdGF0ZS50b3RhbExlbmd0aCgpOwogfQogCi1TVkdQb2ludCBTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyOjpjdXJyZW50UG9pbnQoKQorU1ZHUG9pbnQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlcjo6Y3VycmVudFBvaW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90cmF2ZXJzYWxT
dGF0ZSk7Ci0gICAgcmV0dXJuIG1fdHJhdmVyc2FsU3RhdGUtPmN1cnJlbnQoKTsKKyAgICByZXR1
cm4gbV90cmF2ZXJzYWxTdGF0ZS5jdXJyZW50KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCmluZGV4IGYyY2ZjZDc2NjIx
YmE1N2Q2ZmIzNDc2ZjYzYjVlY2FlYzk2ZWM0MDEuLmVhOTMwZjhhZmE2NzIzNTgzZGU2ZDVkNzg2
YzA0N2YzYzA4NDVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXIuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMwLDE3ICszMSwxNCBAQCBjbGFzcyBQYXRoVHJhdmVyc2FsU3RhdGU7
CiAKIGNsYXNzIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENv
bnN1bWVyIHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCk7Cisg
ICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcihQYXRoVHJhdmVyc2FsU3RhdGUmLCBmbG9h
dCBkZXNpcmVkTGVuZ3RoID0gMCk7CiAKLSAgICB1bnNpZ25lZCBwYXRoU2VnbWVudEluZGV4KCkg
eyByZXR1cm4gbV9zZWdtZW50SW5kZXg7IH0KLSAgICBmbG9hdCB0b3RhbExlbmd0aCgpOwotICAg
IFNWR1BvaW50IGN1cnJlbnRQb2ludCgpOworICAgIHVuc2lnbmVkIHBhdGhTZWdtZW50SW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRJbmRleDsgfQorICAgIGZsb2F0IHRvdGFsTGVuZ3Ro
KCkgY29uc3Q7CisgICAgU1ZHUG9pbnQgY3VycmVudFBvaW50KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldEN1cnJlbnRUcmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGUqIHRyYXZlcnNhbFN0
YXRlKSB7IG1fdHJhdmVyc2FsU3RhdGUgPSB0cmF2ZXJzYWxTdGF0ZTsgfQotICAgIHZvaWQgc2V0
RGVzaXJlZExlbmd0aChmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdt
ZW50Q291bnQoKSBvdmVycmlkZSB7ICsrbV9zZWdtZW50SW5kZXg7IH0KICAgICB2aXJ0dWFsIGJv
b2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYW51
cCgpIG92ZXJyaWRlIHsgbV90cmF2ZXJzYWxTdGF0ZSA9IG51bGxwdHIsIG1fc2VnbWVudEluZGV4
ID0gMDsgfQogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVkUGFyc2luZy9Ob3Jt
YWxpemVkUGFyc2luZyBtb2Rlcy4KQEAgLTU4LDggKzU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENv
b3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wsIGJvb2wsIGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAotICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSogbV90cmF2ZXJzYWxTdGF0ZTsKLSAg
ICB1bnNpZ25lZCBtX3NlZ21lbnRJbmRleDsKKyAgICBQYXRoVHJhdmVyc2FsU3RhdGUmIG1fdHJh
dmVyc2FsU3RhdGU7CisgICAgdW5zaWduZWQgbV9zZWdtZW50SW5kZXggeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5j
cHAKaW5kZXggYjNjYzA0OWUxNWNlYjI5YmVjYmYyN2E0NGJjODU2YjgwMGM1OTZkZC4uYmFiNDk4
ZjRkMjJkZmM2MzJjZThkYjJlYjhhYzdkZDRkOTdiYTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNyw3NCArMzgsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBGSVhNRTogYXJlIGFsbCB0aGVzZSBnbG9iYWxzIHdhcnJhbnRlZD8gV2h5
IG5vdCBqdXN0IG1ha2UgdGhlbSBvbiB0aGUgc3RhY2s/Ci1zdGF0aWMgU1ZHUGF0aEJ1aWxkZXIm
IGdsb2JhbFNWR1BhdGhCdWlsZGVyKFBhdGgmIHJlc3VsdCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U1ZHUGF0aEJ1aWxkZXI+IHNfYnVpbGRlcjsKLSAgICBzX2J1aWxkZXIuZ2V0KCku
c2V0Q3VycmVudFBhdGgoJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKLX0K
LQotc3RhdGljIFNWR1BhdGhTZWdMaXN0QnVpbGRlciYgZ2xvYmFsU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyKFNWR1BhdGhFbGVtZW50JiBlbGVtZW50LCBTVkdQYXRoU2VnUm9sZSByb2xlLCBTVkdQYXRo
U2VnTGlzdCYgcmVzdWx0KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXI+IHNfYnVpbGRlcjsKLQotICAgIHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50
U1ZHUGF0aEVsZW1lbnQoJmVsZW1lbnQpOwotICAgIHNfYnVpbGRlci5nZXQoKS5zZXRDdXJyZW50
U1ZHUGF0aFNlZ0xpc3QocmVzdWx0KTsKLSAgICBzX2J1aWxkZXIuZ2V0KCkuc2V0Q3VycmVudFNW
R1BhdGhTZWdSb2xlKHJvbGUpOwotICAgIHJldHVybiBzX2J1aWxkZXIuZ2V0KCk7Ci19Ci0KLXN0
YXRpYyBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXImIGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlcihTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXI+IHNfYnVpbGRlcjsKLSAgICBzX2J1aWxkZXIu
Z2V0KCkuc2V0Q3VycmVudEJ5dGVTdHJlYW0oJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHNfYnVpbGRl
ci5nZXQoKTsKLX0KLQotc3RhdGljIFNWR1BhdGhTdHJpbmdCdWlsZGVyJiBnbG9iYWxTVkdQYXRo
U3RyaW5nQnVpbGRlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR1BhdGhTdHJp
bmdCdWlsZGVyPiBzX2J1aWxkZXI7Ci0gICAgcmV0dXJuIHNfYnVpbGRlci5nZXQoKTsKLX0KLQot
c3RhdGljIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXImIGdsb2JhbFNWR1BhdGhUcmF2ZXJz
YWxTdGF0ZUJ1aWxkZXIoUGF0aFRyYXZlcnNhbFN0YXRlJiB0cmF2ZXJzYWxTdGF0ZSwgZmxvYXQg
bGVuZ3RoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyPiBzX3BhcnNlcjsKLQotICAgIHNfcGFyc2VyLmdldCgpLnNldEN1cnJlbnRUcmF2
ZXJzYWxTdGF0ZSgmdHJhdmVyc2FsU3RhdGUpOwotICAgIHNfcGFyc2VyLmdldCgpLnNldERlc2ly
ZWRMZW5ndGgobGVuZ3RoKTsKLSAgICByZXR1cm4gc19wYXJzZXIuZ2V0KCk7Ci19Ci0KLS8vIEZJ
WE1FOiB3aHkgYm90aGVyIGtlZXBpbmcgYSBzaW5nbGV0b24gYXJvdW5kPyBJcyBpdCBzbG93IHRv
IGFsbG9jYXRlPwotc3RhdGljIFNWR1BhdGhQYXJzZXImIGdsb2JhbFNWR1BhdGhQYXJzZXIoU1ZH
UGF0aFNvdXJjZSYgc291cmNlLCBTVkdQYXRoQ29uc3VtZXImIGNvbnN1bWVyKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdQYXRoUGFyc2VyPiBzX3BhcnNlcjsKLQotICAgIHNfcGFy
c2VyLmdldCgpLnNldEN1cnJlbnRTb3VyY2UoJnNvdXJjZSk7Ci0gICAgc19wYXJzZXIuZ2V0KCku
c2V0Q3VycmVudENvbnN1bWVyKCZjb25zdW1lcik7Ci0gICAgcmV0dXJuIHNfcGFyc2VyLmdldCgp
OwotfQotCi1zdGF0aWMgU1ZHUGF0aEJsZW5kZXImIGdsb2JhbFNWR1BhdGhCbGVuZGVyKCkKLXsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHUGF0aEJsZW5kZXI+IHNfYmxlbmRlcjsKLSAg
ICByZXR1cm4gc19ibGVuZGVyLmdldCgpOwotfQotCiBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBkLCBQYXRoJiByZXN1bHQpCiB7CiAgICAgaWYgKGQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCdWlsZGVyJiBidWlsZGVyID0gZ2xv
YmFsU1ZHUGF0aEJ1aWxkZXIocmVzdWx0KTsKLQorICAgIFNWR1BhdGhCdWlsZGVyIGJ1aWxkZXIo
cmVzdWx0KTsKICAgICBTVkdQYXRoU3RyaW5nU291cmNlIHNvdXJjZShkKTsKLSAgICBTVkdQYXRo
UGFyc2VyJiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZSwgYnVpbGRlcik7Ci0g
ICAgYm9vbCBvayA9IHBhcnNlci5wYXJzZVBhdGhEYXRhRnJvbVNvdXJjZShOb3JtYWxpemVkUGFy
c2luZyk7Ci0gICAgcGFyc2VyLmNsZWFudXAoKTsKLSAgICByZXR1cm4gb2s7CisgICAgcmV0dXJu
IFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CiB9CiAKIGJvb2wgYnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYg
bGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQpAQCAtMTEzLDEzICs1NCw4IEBAIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
VkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0CiAgICAgaWYg
KGxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihy
ZXN1bHQpOwotCiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ugc291cmNlKGxpc3QpOwotICAgIFNW
R1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVy
KTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdN
b2RlKTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwotICAgIHJldHVybiBvazsKKyAgICByZXR1cm4g
U1ZHUGF0aFBhcnNlcjo6cGFyc2VUb0J5dGVTdHJlYW0oc291cmNlLCByZXN1bHQsIHBhcnNpbmdN
b2RlKTsKIH0KIAogYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJl
ZlB0cjxTVkdQYXRoU2VnPiYmIHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1bHQsIFBh
dGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKQEAgLTEzMSwxMSArNjcsOCBAQCBib29sIGFwcGVu
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhTZWc+JiYgcGF0
aFNlZywgU1ZHUGF0aAogICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKFdURjo6bW92ZShwYXRo
U2VnKSk7CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSBhcHBlbmRlZEJ5dGVTdHJlYW07Ci0gICAg
U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyKGFwcGVuZGVkQnl0ZVN0cmVhbSk7CiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ug
c291cmNlKGFwcGVuZGVkSXRlbUxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGds
b2JhbFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2Vy
LnBhcnNlUGF0aERhdGFGcm9tU291cmNlKHBhcnNpbmdNb2RlLCBmYWxzZSk7Ci0gICAgcGFyc2Vy
LmNsZWFudXAoKTsKKyAgICBib29sIG9rID0gU1ZHUGF0aFBhcnNlcjo6cGFyc2VUb0J5dGVTdHJl
YW0oc291cmNlLCByZXN1bHQsIHBhcnNpbmdNb2RlLCBmYWxzZSk7CiAKICAgICBpZiAob2spCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYXBwZW5kZWRCeXRlU3RyZWFtKTsKQEAgLTE0OCwxMyArODEs
OSBAQCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFt
JiBzdHJlYW0sIFBhdGgmIHJlc3VsdCkKICAgICBpZiAoc3RyZWFtLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBTVkdQYXRoQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNW
R1BhdGhCdWlsZGVyKHJlc3VsdCk7Ci0KKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHJlc3Vs
dCk7CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0gICAgU1ZH
UGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxkZXIp
OwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXpl
ZFBhcnNpbmcpOwotICAgIHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJl
dHVybiBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2UsIGJ1aWxkZXIpOwogfQogCiBib29sIGJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYg
c3RyZWFtLCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHJlc3VsdCwg
UGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQpAQCAtMTYyLDEzICs5MSw5IEBAIGJvb2wgYnVp
bGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBz
dHJlYW0sIFNWR1BhdGhFCiAgICAgaWYgKHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZH
UGF0aFNlZ0xpc3RCdWlsZGVyKGVsZW1lbnQsIHBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJz
aW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xlIDogUGF0aFNlZ1VuYWx0ZXJlZFJvbGUsIHJlc3Vs
dCk7Ci0KKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgYnVpbGRlcihlbGVtZW50LCByZXN1bHQs
IHBhcnNpbmdNb2RlID09IE5vcm1hbGl6ZWRQYXJzaW5nID8gUGF0aFNlZ05vcm1hbGl6ZWRSb2xl
IDogUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIHNv
dXJjZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQ
YXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERh
dGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwotICAgIHJl
dHVybiBvazsKKyAgICByZXR1cm4gU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVy
LCBwYXJzaW5nTW9kZSk7CiB9CiAKIGJvb2wgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdN
b2RlIHBhcnNpbmdNb2RlKQpAQCAtMTc2LDE0ICsxMDEsOCBAQCBib29sIGJ1aWxkU3RyaW5nRnJv
bUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiByZXN1
bHQsCiAgICAgaWYgKHN0cmVhbS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoU3RyaW5nQnVp
bGRlcigpOwotCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0g
ICAgU1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1
aWxkZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFy
c2luZ01vZGUpOwotICAgIHJlc3VsdCA9IGJ1aWxkZXIucmVzdWx0KCk7Ci0gICAgcGFyc2VyLmNs
ZWFudXAoKTsKLSAgICByZXR1cm4gb2s7CisgICAgcmV0dXJuIFNWR1BhdGhQYXJzZXI6OnBhcnNl
VG9TdHJpbmcoc291cmNlLCByZXN1bHQsIHBhcnNpbmdNb2RlKTsKIH0KIAogYm9vbCBidWlsZFN0
cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU3RyaW5n
JiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKQEAgLTE5MiwxNCArMTExLDgg
QEAgYm9vbCBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlz
dCYgbGlzdCwgU3RyaW5nJiByZXN1bHQsIFAKICAgICBpZiAobGlzdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgU1ZHUGF0aFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIgPSBn
bG9iYWxTVkdQYXRoU3RyaW5nQnVpbGRlcigpOwotCiAgICAgU1ZHUGF0aFNlZ0xpc3RTb3VyY2Ug
c291cmNlKGxpc3QpOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQ
YXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERh
dGFGcm9tU291cmNlKHBhcnNpbmdNb2RlKTsKLSAgICByZXN1bHQgPSBidWlsZGVyLnJlc3VsdCgp
OwotICAgIHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQ
YXRoUGFyc2VyOjpwYXJzZVRvU3RyaW5nKHNvdXJjZSwgcmVzdWx0LCBwYXJzaW5nTW9kZSk7CiB9
CiAKIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBk
LCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUp
CkBAIC0yMDgsMTMgKzEyMSw4IEBAIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBkLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0CiAgICAgaWYgKGQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNWR1BhdGhCeXRlU3RyZWFt
QnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihyZXN1bHQp
OwotCiAgICAgU1ZHUGF0aFN0cmluZ1NvdXJjZSBzb3VyY2UoZCk7Ci0gICAgU1ZHUGF0aFBhcnNl
ciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxkZXIpOwotICAgIGJv
b2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UocGFyc2luZ01vZGUpOwotICAg
IHBhcnNlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRoUGFy
c2VyOjpwYXJzZVRvQnl0ZVN0cmVhbShzb3VyY2UsIHJlc3VsdCwgcGFyc2luZ01vZGUpOwogfQog
CiBib29sIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0
cmVhbSYgZnJvbVN0cmVhbSwgY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHRvU3RyZWFtLCBTVkdQ
YXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBmbG9hdCBwcm9ncmVzcykKQEAgLTIyNCwxNCArMTMyLDEx
IEBAIGJvb2wgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRl
U3RyZWFtJiBmcm9tU3RyZWFtLCBjb25zdCBTCiAgICAgaWYgKHRvU3RyZWFtLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXImIGJ1
aWxkZXIgPSBnbG9iYWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIocmVzdWx0KTsKKyAgICBTVkdQ
YXRoQnl0ZVN0cmVhbUJ1aWxkZXIgYnVpbGRlcihyZXN1bHQpOwogCiAgICAgU1ZHUGF0aEJ5dGVT
dHJlYW1Tb3VyY2UgZnJvbVNvdXJjZShmcm9tU3RyZWFtKTsKICAgICBTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZSB0b1NvdXJjZSh0b1N0cmVhbSk7Ci0gICAgU1ZHUGF0aEJsZW5kZXImIGJsZW5kZXIg
PSBnbG9iYWxTVkdQYXRoQmxlbmRlcigpOwotICAgIGJvb2wgb2sgPSBibGVuZGVyLmJsZW5kQW5p
bWF0ZWRQYXRoKHByb2dyZXNzLCAmZnJvbVNvdXJjZSwgJnRvU291cmNlLCAmYnVpbGRlcik7Ci0g
ICAgYmxlbmRlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRo
QmxlbmRlcjo6YmxlbmRBbmltYXRlZFBhdGgoZnJvbVNvdXJjZSwgdG9Tb3VyY2UsIGJ1aWxkZXIs
IHByb2dyZXNzKTsKIH0KIAogYm9vbCBhZGRUb1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRl
U3RyZWFtJiBzdHJlYW1Ub0FwcGVuZFRvLCBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgYnlTdHJl
YW0sIHVuc2lnbmVkIHJlcGVhdENvdW50KQpAQCAtMjQxLDE3ICsxNDYsMTQgQEAgYm9vbCBhZGRU
b1NWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlYW1Ub0FwcGVuZFRvLCBj
b25zdCBTVkdQYXRoQnkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJcyBpdCBPSyB0
byBtYWtlIHRoZSBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIgZnJvbSBhIHN0cmVhbSwgYW5kIHRo
ZW4gY2xlYXIgdGhhdCBzdHJlYW0/Ci0gICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyJiBidWls
ZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKHN0cmVhbVRvQXBwZW5kVG8pOwor
ICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciBidWlsZGVyKHN0cmVhbVRvQXBwZW5kVG8pOwog
CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gZnJvbVN0cmVhbUNvcHkgPSBzdHJlYW1Ub0FwcGVuZFRv
OwogICAgIHN0cmVhbVRvQXBwZW5kVG8uY2xlYXIoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIGZyb21Tb3VyY2UoZnJvbVN0cmVhbUNvcHkpOwogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIGJ5U291cmNlKGJ5U3RyZWFtKTsKLSAgICBTVkdQYXRoQmxlbmRlciYgYmxlbmRlciA9
IGdsb2JhbFNWR1BhdGhCbGVuZGVyKCk7Ci0gICAgYm9vbCBvayA9IGJsZW5kZXIuYWRkQW5pbWF0
ZWRQYXRoKCZmcm9tU291cmNlLCAmYnlTb3VyY2UsICZidWlsZGVyLCByZXBlYXRDb3VudCk7Ci0g
ICAgYmxlbmRlci5jbGVhbnVwKCk7Ci0gICAgcmV0dXJuIG9rOworICAgIHJldHVybiBTVkdQYXRo
QmxlbmRlcjo6YWRkQW5pbWF0ZWRQYXRoKGZyb21Tb3VyY2UsIGJ5U291cmNlLCBidWlsZGVyLCBy
ZXBlYXRDb3VudCk7CiB9CiAKIGJvb2wgZ2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhC
eXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlYW0sIGZsb2F0IGxlbmd0aCwg
dW5zaWduZWQmIHBhdGhTZWcpCkBAIC0yNjAsMTMgKzE2MiwxMSBAQCBib29sIGdldFNWR1BhdGhT
ZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYg
c3RyZWFtLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUg
dHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0YXRlOjpBY3Rpb246OlNlZ21lbnRBdExlbmd0
aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYgYnVpbGRlciA9IGdsb2JhbFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3RhdGUsIGxlbmd0aCk7CisgICAg
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciBidWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5n
dGgpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2Ugc291cmNlKHN0cmVhbSk7Ci0gICAg
U1ZHUGF0aFBhcnNlciYgcGFyc2VyID0gZ2xvYmFsU1ZHUGF0aFBhcnNlcihzb3VyY2UsIGJ1aWxk
ZXIpOwotICAgIGJvb2wgb2sgPSBwYXJzZXIucGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFs
aXplZFBhcnNpbmcpOworICAgIGJvb2wgb2sgPSBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2Us
IGJ1aWxkZXIpOwogICAgIHBhdGhTZWcgPSBidWlsZGVyLnBhdGhTZWdtZW50SW5kZXgoKTsKLSAg
ICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIApAQCAtMjc2LDEzICsxNzYs
MTIgQEAgYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0
aEJ5dGVTdHJlYW0mIHN0cmVhbSwgZmxvYXQmIHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6
QWN0aW9uOjpUb3RhbExlbmd0aCk7Ci0gICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciYg
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIodHJhdmVyc2FsU3Rh
dGUsIDApOworCisgICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciBidWlsZGVyKHRyYXZl
cnNhbFN0YXRlKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlIHNvdXJjZShzdHJlYW0p
OwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2JhbFNWR1BhdGhQYXJzZXIoc291cmNl
LCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBhcnNlUGF0aERhdGFGcm9tU291cmNl
KE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBib29sIG9rID0gU1ZHUGF0aFBhcnNlcjo6cGFyc2Uo
c291cmNlLCBidWlsZGVyKTsKICAgICB0b3RhbExlbmd0aCA9IGJ1aWxkZXIudG90YWxMZW5ndGgo
KTsKLSAgICBwYXJzZXIuY2xlYW51cCgpOwogICAgIHJldHVybiBvazsKIH0KIApAQCAtMjkyLDEz
ICsxOTEsMTIgQEAgYm9vbCBnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBmbG9hdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0
YXRlOjpBY3Rpb246OlZlY3RvckF0TGVuZ3RoKTsKLSAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyJiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcih0cmF2
ZXJzYWxTdGF0ZSwgbGVuZ3RoKTsKKworICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIg
YnVpbGRlcih0cmF2ZXJzYWxTdGF0ZSwgbGVuZ3RoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFt
U291cmNlIHNvdXJjZShzdHJlYW0pOwotICAgIFNWR1BhdGhQYXJzZXImIHBhcnNlciA9IGdsb2Jh
bFNWR1BhdGhQYXJzZXIoc291cmNlLCBidWlsZGVyKTsKLSAgICBib29sIG9rID0gcGFyc2VyLnBh
cnNlUGF0aERhdGFGcm9tU291cmNlKE5vcm1hbGl6ZWRQYXJzaW5nKTsKKyAgICBib29sIG9rID0g
U1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVyKTsKICAgICBwb2ludCA9IGJ1aWxk
ZXIuY3VycmVudFBvaW50KCk7Ci0gICAgcGFyc2VyLmNsZWFudXAoKTsKICAgICByZXR1cm4gb2s7
CiB9CiAKQEAgLTMzMiwxMiArMjMwLDExIEBAIGJvb2wgYnVpbGRTdHJpbmdGcm9tUGF0aChjb25z
dCBQYXRoJiBwYXRoLCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGhh
dmUgYSBTVkdQYXRoUGxhdGZvcm1QYXRoU291cmNlLCBidXQgaXQncyBub3QgcG9zc2libGUgdG8g
bWFudWFsbHkgaXRlcmF0ZQogICAgIC8vIGEgcGF0aCwgb25seSBhcHBseSBhIGZ1bmN0aW9uIHRv
IGFsbCBwYXRoIGVsZW1lbnRzIGF0IG9uY2UuCiAKLSAgICBTVkdQYXRoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciA9IGdsb2JhbFNWR1BhdGhTdHJpbmdCdWlsZGVyKCk7CisgICAgU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBwYXRoLmFwcGx5KFsmYnVpbGRlcl0oY29uc3QgUGF0aEVs
ZW1lbnQmIHBhdGhFbGVtZW50KSB7CiAgICAgICAgIHBhdGhJdGVyYXRvckZvckJ1aWxkaW5nU3Ry
aW5nKGJ1aWxkZXIsIHBhdGhFbGVtZW50KTsKICAgICB9KTsKICAgICBzdHJpbmcgPSBidWlsZGVy
LnJlc3VsdCgpOwotICAgIHN0YXRpY19jYXN0PFNWR1BhdGhDb25zdW1lciY+KGJ1aWxkZXIpLmNs
ZWFudXAoKTsgLy8gV2F0PwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhVdGlsaXRpZXMuaAppbmRleCBmN2FhYmRkNjBiMTVlODMzODZkNWY0NjM1MjJkM2Q1NDhm
Y2JjNTVmLi5mNjRhMTI0ODQxZGYwOTY4NDgyNWFjMTJhNDgzMmFiYjhmZWE4NzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLCAyMDEyLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmluZGV4IDI5ZDQ1NWFlYjMwZDAzMWQzMzI1Yzk2OTQ0
N2U1NjFmOGU4ODQ5ZTcuLjZiZTcxM2M2YTA0MWYwNjgzZjQ5MDg1MDM2Y2E5MDA2YzRiMDFlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMs
NyArMzMsNiBAQAogI2luY2x1ZGUgIlNWR0dseXBoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0hL
ZXJuRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdQYXRoQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIuaCIKICNpbmNs
dWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHVktlcm5FbGVtZW50Lmgi
CkBAIC0xMTI2LDExICsxMTI1LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyIHJyQ3VydmVUbyA9IDB4
MDg7CiBzdGF0aWMgY29uc3QgY2hhciBlbmRDaGFyID0gMHgwZTsKIHN0YXRpYyBjb25zdCBjaGFy
IHJNb3ZlVG8gPSAweDE1OwogCi1jbGFzcyBDRkZCdWlsZGVyIDogcHVibGljIFNWR1BhdGhCdWls
ZGVyIHsKK2NsYXNzIENGRkJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1Ymxp
YzoKICAgICBDRkZCdWlsZGVyKFZlY3RvcjxjaGFyPiYgY2ZmRGF0YSwgZmxvYXQgd2lkdGgsIEZs
b2F0UG9pbnQgb3JpZ2luKQogICAgICAgICA6IG1fY2ZmRGF0YShjZmZEYXRhKQotICAgICAgICAs
IG1faGFzQm91bmRpbmdCb3goZmFsc2UpCiAgICAgewogICAgICAgICB3cml0ZUNGRkVuY29kZWRO
dW1iZXIobV9jZmZEYXRhLCB3aWR0aCk7CiAgICAgICAgIHdyaXRlQ0ZGRW5jb2RlZE51bWJlciht
X2NmZkRhdGEsIG9yaWdpbi54KCkpOwpAQCAtMTIwOSwxMCArMTIwNywyMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbGluZVRvKG1fc3RhcnRpbmdQb2ludCwgQWJzb2x1dGVDb29yZGluYXRlcyk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBv
dmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGluZVRvSG9yaXpvbnRhbChm
bG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisgICAgdmlydHVhbCB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0
ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChj
b25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGJvb2wsIGJvb2wsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92
ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogICAgIFZlY3RvcjxjaGFyPiYgbV9j
ZmZEYXRhOwogICAgIEZsb2F0UG9pbnQgbV9zdGFydGluZ1BvaW50OworICAgIEZsb2F0UG9pbnQg
bV9jdXJyZW50OwogICAgIEZsb2F0UmVjdCBtX2JvdW5kaW5nQm94OwotICAgIGJvb2wgbV9oYXNC
b3VuZGluZ0JveDsKKyAgICBib29sIG1faGFzQm91bmRpbmdCb3ggeyBmYWxzZSB9OwogfTsKIAog
VmVjdG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhm
bG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQs
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0CkBAIC0xMjQxLDEzICsxMjUwLDcgQEAgVmVj
dG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhmbG9h
dCB3aWR0aCwgY29uc3QgU1ZHRWwKICAgICBDRkZCdWlsZGVyIGJ1aWxkZXIocmVzdWx0LCB3aWR0
aCwgRmxvYXRQb2ludChob3Jpem9udGFsT3JpZ2luWCwgaG9yaXpvbnRhbE9yaWdpblkpKTsKICAg
ICBTVkdQYXRoU3RyaW5nU291cmNlIHNvdXJjZShkQXR0cmlidXRlKTsKIAotICAgIFNWR1BhdGhQ
YXJzZXIgcGFyc2VyOwotICAgIHBhcnNlci5zZXRDdXJyZW50U291cmNlKCZzb3VyY2UpOwotICAg
IHBhcnNlci5zZXRDdXJyZW50Q29uc3VtZXIoJmJ1aWxkZXIpOwotCi0gICAgb2sgPSBwYXJzZXIu
cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOwotICAgIHBhcnNlci5j
bGVhbnVwKCk7Ci0KKyAgICBvayA9IFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRl
cik7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmVzdWx0LmNsZWFyKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>