<?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>91263</bug_id>
          
          <creation_ts>2012-07-13 10:22:16 -0700</creation_ts>
          <short_desc>REGRESSION(r122450): Caused multiple regressions on ClusterFuzz (Requested by inferno-sec on #webkit).</short_desc>
          <delta_ts>2012-07-13 10:24:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88240</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>inferno</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669179</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 10:22:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/122450 broke the build:
Caused multiple regressions on ClusterFuzz (Requested by inferno-sec on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669182</commentid>
    <comment_count>1</comment_count>
      <attachid>152289</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 10:22:54 -0700</bug_when>
    <thetext>Created attachment 152289
ROLLOUT of r122450

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669187</commentid>
    <comment_count>2</comment_count>
      <attachid>152289</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-07-13 10:24:48 -0700</bug_when>
    <thetext>Comment on attachment 152289
ROLLOUT of r122450

Clearing flags on attachment: 152289

Committed r122600: &lt;http://trac.webkit.org/changeset/122600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669188</commentid>
    <comment_count>3</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-07-13 10:24:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152289</attachid>
            <date>2012-07-13 10:22:54 -0700</date>
            <delta_ts>2012-07-13 10:24:48 -0700</delta_ts>
            <desc>ROLLOUT of r122450</desc>
            <filename>bug-91263-20120713172819.patch</filename>
            <type>text/plain</type>
            <size>75284</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMzOWVlOTQ1MDQ4MmY5
OTQ0NDliY2MyYWRlYzZhOTAwMTVkNTg2Zi4uOGVkNDUxMzMxNjhhNDZlOGQ5ZTY1NTc1NDlmNzM1
NDMzNzM3N2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxMi0wNy0xMyAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyMjQ1MCBhbmQgcjEyMjU4MC4KKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIyNDUwCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEyMjU4MAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTEyNjMKKworICAgICAgICBDYXVzZWQgbXVsdGlwbGUgcmVncmVzc2lv
bnMgb24gQ2x1c3RlckZ1enogKFJlcXVlc3RlZCBieQorICAgICAgICBpbmZlcm5vLXNlYyBvbiAj
d2Via2l0KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGFTdG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lu
dHJ1c2l2ZURPTVdyYXBwZXJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNodW5rZWRUYWJsZTo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NTWFwLmg6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVDU1NTdHlsZURlY2xhcmF0
aW9uOjplbnN1cmVNdXRhYmxlUHJvcGVydHlTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3Bl
cnR5U2V0LmNwcDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAq
IGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmRldGFjaEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0VxdWl2YWxlbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpnZXRBdHRyaWJ1dGVOb2RlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVEYXRh
KToKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlQXR0cmlidXRl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVkQXR0cmlidXRlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSk6
CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjphdHRySWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEF0dHJpYnV0ZURhdGE6OnNldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEF0dHJpYnV0ZURhdGE6OnJlbW92ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0
dHJpYnV0ZURhdGE6OnNldENsYXNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGluZVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmRlc3Ryb3lJbmxpbmVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6YWRkQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmlzRXF1aXZh
bGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGV0YWNoQXR0
ck9iamVjdHNGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEF0dHJpYnV0ZURhdGE6OmNsb25lRGF0YUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEF0dHJpYnV0ZURhdGE6OmNsZWFyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwbGFjZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0
cmlidXRlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpzZXRJZEZvclN0eWxlUmVzb2x1
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6c2V0QXR0cmli
dXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6aXNFbXB0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6YXR0cmlidXRlSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OkVsZW1lbnRBdHRy
aWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjphdHRy
aWJ1dGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmNs
b25lZEF0dHJpYnV0ZVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1
dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAg
IChNZW1vcnlPYmplY3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86
OnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2Jq
ZWN0SW5mbzo6cmVwb3J0UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJ
bmZvOjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
T2JqZWN0SW5mbzo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVj
dEluZm86OnJlcG9ydE9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0
SW5mbzo6cmVwb3J0SGFzaE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZv
OjpyZXBvcnRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJl
cG9ydExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJl
cG9ydFZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpyZXBvcnRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6b2JqZWN0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om1lbW9yeUluc3RydW1lbnRhdGlvbik6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVt
b3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZEVsZW1lbnQ6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNsYXNz
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJl
bW92ZUlubGluZVN0eWxlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6ZW5zdXJlSW5saW5lU3R5
bGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZy
b21TYXZlZEVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMi0wNy0xMyAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZW1vdmUgZG93
bi1jYXN0aW5nIHRvIEJpdG1hcEltYWdlIGluIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA5NDc3
OTRkYzJmNGQ0YTIwYTI1MTY3YmE2MmZhZDdiOGE0MmNjMmJjLi4yZDkyYmI0NTViMzIyODIzYmU2
ZTEwNDAyMmU3MTUyZGU4MWQ4OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRXcmFwcGFibGUuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgewotICAgICAgICBNZW1vcnlDbGFzc0luZm88U2NyaXB0V3JhcHBhYmxlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAg
ICAgaW5mby5yZXBvcnRPYmplY3QobV93cmFwcGVyKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5m
by0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Cisg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX3dyYXBwZXIpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3Bw
CmluZGV4IDAyMWE3YzgxMTkxM2JlMzgwMGRjYzUzNTk3YjAxMmVhNzE3YTc2ZGUuLjk1ZWZkNTA1
OTdlMDhiOGMxYTNhMDU2NDE1NjBmMTcxYTI1MjBjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApAQCAtMTIxLDExICsxMjEsMTEgQEAgdm9pZCogRE9N
RGF0YVN0b3JlOjpnZXRET01XcmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiAKIHZv
aWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIE1lbW9yeUNsYXNzSW5mbzxET01EYXRhU3RvcmU+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5k
aW5nKTsKLSAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21Ob2RlTWFwKTsK
LSAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9hY3RpdmVEb21Ob2RlTWFwKTsK
LSAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9kb21PYmplY3RNYXApOwotICAg
IGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU9iamVjdE1hcCk7Cisg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkJpbmRpbmcpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1l
bnRlZFBvaW50ZXIobV9kb21Ob2RlTWFwKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJ
bnN0cnVtZW50ZWRQb2ludGVyKG1fYWN0aXZlRG9tTm9kZU1hcCk7CisgICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2RvbU9iamVjdE1hcCk7CisgICAgbWVt
b3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2FjdGl2ZURvbU9iamVj
dE1hcCk7CiB9CiAKIC8vIENhbGxlZCB3aGVuIHRoZSBvYmplY3QgaXMgbmVhciBkZWF0aCAobm90
IHJlYWNoYWJsZSBmcm9tIEpTIHJvb3RzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaAppbmRleCBlMDcyOGMyOTViY2U3OGI5ZjVi
ZWNjNjQ0NmNmM2RmODFlYTFjNjAzLi41MjMwOGJkYzQzZGU1NjkwOGIwMDhiODQwMjlkOGIzMzc3
MjAyY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVE
T01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZl
RE9NV3JhcHBlck1hcC5oCkBAIC0xMDQsOSArMTA0LDkgQEAgY2xhc3MgQ2h1bmtlZFRhYmxlIHsK
IAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDaHVua2VkVGFi
bGU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpC
aW5kaW5nKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOwogICAgICAgICBmb3IgKENodW5rKiBj
aHVuayA9IG1fY2h1bmtzOyBjaHVuazsgY2h1bmsgPSBjaHVuay0+bV9wcmV2aW91cykKLSAgICAg
ICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihjaHVuayk7CisgICAgICAgICAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRQb2ludGVyKGNodW5rLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRp
bmcpOwogICAgIH0KIAogICBwcml2YXRlOgpAQCAtMTg2LDggKzE4Niw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdCBPVkVSUklERQogICAgIHsKLSAgICAgICAgTWVtb3J5Q2xhc3NJ
bmZvPEludHJ1c2l2ZURPTVdyYXBwZXJNYXA+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKLSAgICAgICAgaW5mby5yZXBvcnRJbnN0
cnVtZW50ZWRPYmplY3QobV90YWJsZSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KG1fdGFibGUpOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3Jh
cHBhYmxlLmgKaW5kZXggOGYwYmNkYmQ4ZjY0NDE4ZTA5Njg3YjQ4YmZkYjQwY2NkYjY5ZDE2Yy4u
MWMyODIzMjE2MTVhZGY4ODYxNzk0OGViM2IyMDc1MGQ3MGZjOWQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFNjcmlw
dFdyYXBwYWJsZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7Ci0gICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihtX3dyYXBwZXIpOworICAg
ICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9pbnRl
cihtX3dyYXBwZXIsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA0Yzc2NjIx
YzkwNGNkZDc0MWJiM2Y5ZTc1NDMxYWNkM2EyZWEwOTQwLi44MTk4YWQwZDZhYzFlOTk1NDliMGFj
MWUxMzk4ZmYyMWYwNGQ5MjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKQEAgLTkyLDE0ICs5MiwxNCBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpk
aXNwb3NlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogCiB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVE
YXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAogewotICAgIE1lbW9yeUNsYXNzSW5mbzxWOEJpbmRpbmdQZXJJc29sYXRlRGF0YT4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRp
bmcpOwotICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7Ci0gICAgaW5mby5y
ZXBvcnRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKLSAgICBpbmZvLnJlcG9ydEluc3RydW1lbnRlZE9i
amVjdChtX3N0cmluZ0NhY2hlKTsKLSAgICBpbmZvLnJlcG9ydFZlY3RvcihtX2RvbURhdGFMaXN0
KTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6QmluZGluZyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFz
aE1hcChtX3Jhd1RlbXBsYXRlcyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1h
cChtX3RlbXBsYXRlcyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVk
T2JqZWN0KG1fc3RyaW5nQ2FjaGUpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZlY3Rv
cihtX2RvbURhdGFMaXN0KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kb21EYXRh
TGlzdC5zaXplKCk7IGkrKykKLSAgICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVy
KG1fZG9tRGF0YUxpc3RbaV0pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0
cnVtZW50ZWRQb2ludGVyKG1fZG9tRGF0YUxpc3RbaV0pOwogfQogCiAvLyBXZWJDb3JlU3RyaW5n
UmVzb3VyY2UgaXMgYSBoZWxwZXIgY2xhc3MgZm9yIHY4RXh0ZXJuYWxTdHJpbmcuIEl0IGlzIHVz
ZWQKQEAgLTU5MCw4ICs1OTAsOCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpCiAKIHZvaWQgU3RyaW5nQ2FjaGU6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7Ci0gICAg
TWVtb3J5Q2xhc3NJbmZvPFN0cmluZ0NhY2hlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7Ci0gICAgaW5mby5yZXBvcnRIYXNoTWFw
KG1fc3RyaW5nQ2FjaGUpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8o
dGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpCaW5kaW5nKTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRIYXNoTWFwKG1fc3RyaW5nQ2FjaGUpOwogfQogICAgIAogUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCBh
YTE5MDE3MDIwN2IwN2QxMjEzNTA0Mjk3ZTUxMzhlY2Y1NjE2ZTRiLi4yYjcwYzU4MmI2ZTVjNzlm
ZWI5YzU5NDZlYjZlMzM2ZWFlOGNkN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
TWFwLmgKQEAgLTEzNiw4ICsxMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0IE9WRVJSSURFCiAgICAgICAgIHsKLSAgICAgICAgICAgIE1lbW9yeUNs
YXNzSW5mbzxXZWFrUmVmZXJlbmNlTWFwPEtleVR5cGUsIFZhbHVlVHlwZT4gPiBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6QmluZGluZyk7Ci0gICAg
ICAgICAgICBpbmZvLnJlcG9ydEhhc2hNYXAobV9tYXApOworICAgICAgICAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJp
bmRpbmcpOworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaE1hcChtX21h
cCk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzczYjdhODA1
MGEzNGJiMWI5MzhjMGU0MjAzMjQzMzhjODBhYjE0MC4uMDA2MDE0ZTYxMDhhODBlMzhhNWExNWI0
OGEyMDMzMzQ5YWE0YzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwMiwxOCArNDAyLDcgQEAgQ1NTU3R5
bGVTaGVldCogSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50U3R5bGVTaGVldCgpIGNv
bnN0CiAKIFN0eWxlUHJvcGVydHlTZXQqIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb246OmVuc3Vy
ZU11dGFibGVQcm9wZXJ0eVNldCgpCiB7Ci0gICAgaWYgKCFtX3BhcmVudEVsZW1lbnQpIHsKLSAg
ICAgICAgQVNTRVJUKG1fcHJvcGVydHlTZXQpOwotICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVNl
dDsKLSAgICB9Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCogbXV0YWJsZVByb3BlcnR5U2V0ID0gY29u
c3RfY2FzdDxTdHlsZVByb3BlcnR5U2V0Kj4obV9wYXJlbnRFbGVtZW50LT5lbnN1cmVJbmxpbmVT
dHlsZSgpKTsKLSAgICBpZiAobXV0YWJsZVByb3BlcnR5U2V0ICE9IG1fcHJvcGVydHlTZXQpIHsK
LSAgICAgICAgQVNTRVJUKG1fcHJvcGVydHlTZXQpOwotICAgICAgICBtX3Byb3BlcnR5U2V0LT5k
ZXJlZigpOwotICAgICAgICBtdXRhYmxlUHJvcGVydHlTZXQtPmFkb3B0Q1NTT01XcmFwcGVyRnJv
bShtX3Byb3BlcnR5U2V0KTsKLSAgICAgICAgbV9wcm9wZXJ0eVNldCA9IG11dGFibGVQcm9wZXJ0
eVNldDsKLSAgICAgICAgbV9wcm9wZXJ0eVNldC0+cmVmKCk7Ci0gICAgfQorICAgIEFTU0VSVCht
X3Byb3BlcnR5U2V0KTsKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDRlZDI5ZTEwNWNlMDFjY2U0NDcxNWEz
MTEwZjI4MmViYzgyNzdjMGEuLjBjMjVhNWE5Yzc1Y2U2NjBlN2RkZDVjNWY4NzJiMmEzNzEzMTk1
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTUwLDEzICs1
MCw2IEBAIHN0YXRpYyBQcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCYgcHJvcGVydHlTZXRDU1NP
TVdyYXBwZXJNYXAoKQogICAgIHJldHVybiBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcEluc3Rh
bmNlOwogfQogCi12b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkb3B0Q1NTT01XcmFwcGVyRnJvbShT
dHlsZVByb3BlcnR5U2V0KiBvdGhlcikKLXsKLSAgICBBU1NFUlQocHJvcGVydHlTZXRDU1NPTVdy
YXBwZXJNYXAoKS5jb250YWlucyhvdGhlcikpOwotICAgIE93blB0cjxQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24+IHdyYXBwZXIgPSBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCgpLnRh
a2Uob3RoZXIpOwotICAgIHByb3BlcnR5U2V0Q1NTT01XcmFwcGVyTWFwKCkuYWRkKHRoaXMsIHdy
YXBwZXIucmVsZWFzZSgpKTsKLX0KLQogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGVJbW11dGFibGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRp
ZXMsIHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAg
dm9pZCogc2xvdCA9IFdURjo6ZmFzdE1hbGxvYyhzaXplb2YoU3R5bGVQcm9wZXJ0eVNldCkgLSBz
aXplb2Yodm9pZCopICsgc2l6ZW9mKENTU1Byb3BlcnR5KSAqIGNvdW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IGRhNTAxM2QxMGQwYTZlYjAxYzVmYTg1MGIyMDZk
MGE3OTM5MWRmOWQuLjU1OWNmZTY2MWQ4NzAzMDdmNWNiYjhhZmE2YWU5NDc5MTQ0NDcyYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMTE4LDEzICsxMTgsMTEgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5m
bzxTdHlsZVByb3BlcnR5U2V0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CiAgICAgICAgIGlmICht
X2lzTXV0YWJsZSkKLSAgICAgICAgICAgIGluZm8ucmVwb3J0UG9pbnRlcihtX211dGFibGVQcm9w
ZXJ0eVZlY3Rvcik7CisgICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRQb2ludGVy
KG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CiAg
ICAgfQogCi0gICAgdm9pZCBhZG9wdENTU09NV3JhcHBlckZyb20oU3R5bGVQcm9wZXJ0eVNldCop
OwotCiBwcml2YXRlOgogICAgIFN0eWxlUHJvcGVydHlTZXQoQ1NTUGFyc2VyTW9kZSk7CiAgICAg
U3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQg
Y291bnQsIENTU1BhcnNlck1vZGUsIGJvb2wgbWFrZU11dGFibGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCmluZGV4IDM5NWVmZmEyZDc2OGE3ODg3YTI5NWU0NTdhZDY5MTJjY2Ni
MmFjMmUuLjIyNWExMzk5ZGUyNTY2NzNlMTc4NWE3MDAyZTUxYTgwODNkOGU0MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgdW5zaWduZWQgQ2hh
cmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQg
ZGF0YUxlbmd0aCwKIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIE1lbW9yeUNsYXNz
SW5mbzxDaGFyYWN0ZXJEYXRhPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPE5vZGU+KHRoaXMp
OwotICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fZGF0YSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+
cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAg
Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fZGF0YSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6
YXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmgKaW5kZXggZmMyNzUxZTlkYzA5NTU4YTZkMGZhMDExODg0Y2Y1YmIx
MWZkYmI2Ny4uNWY1NWM3YmViNDhkMDQyMjJhNTYwNzFhNWRhOTA3N2IyMjE5ZjI1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDb250
YWluZXJOb2RlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6RE9NKTsKLSAgICAgICAgaW5mby52aXNpdEJhc2VDbGFzczxOb2RlPih0aGlzKTsKLSAg
ICAgICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fZmlyc3RDaGlsZCk7Ci0gICAg
ICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2xhc3RDaGlsZCk7CisgICAgICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpET00pOworICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9p
bnRlcihtX2ZpcnN0Q2hpbGQpOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0
cnVtZW50ZWRQb2ludGVyKG1fbGFzdENoaWxkKTsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGQ3YmMzMjg3YWI0YmVkMDFhZTIxMmRhMGEzZDk3OGI5MTlk
MzNjNDMuLjI5MDZmNGU5NGU3ZmQwYzRjYWY1NWQ1OWYzYTFiOGI1ZDJmOWIzNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNjA3NSwzOCArNjA3NSwzOCBAQCB2b2lkIERvY3VtZW50Ojpz
ZXRDb250ZXh0RmVhdHVyZXMoUGFzc1JlZlB0cjxDb250ZXh0RmVhdHVyZXM+IGZlYXR1cmVzKQog
CiB2b2lkIERvY3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIE1lbW9yeUNsYXNzSW5mbzxEb2N1bWVudD4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Ci0g
ICAgaW5mby52aXNpdEJhc2VDbGFzczxDb250YWluZXJOb2RlPih0aGlzKTsKLSAgICBpbmZvLnJl
cG9ydFZlY3RvcihtX2N1c3RvbUZvbnRzKTsKLSAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2RvY3Vt
ZW50VVJJKTsKLSAgICBpbmZvLnJlcG9ydFN0cmluZyhtX2Jhc2VUYXJnZXQpOworICAgIG1lbW9y
eU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpET00pOworICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZlY3RvcihtX2N1c3RvbUZvbnRz
KTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV9kb2N1bWVudFVSSSk7Cisg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fYmFzZVRhcmdldCk7CiAgICAgaWYg
KG1fcGFnZUdyb3VwVXNlclNoZWV0cykKLSAgICAgICAgaW5mby5yZXBvcnRWZWN0b3IoKm1fcGFn
ZUdyb3VwVXNlclNoZWV0cy5nZXQoKSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dFZlY3RvcigqbV9wYWdlR3JvdXBVc2VyU2hlZXRzLmdldCgpKTsKICAgICBpZiAobV91c2VyU2hl
ZXRzKQotICAgICAgICBpbmZvLnJlcG9ydFZlY3RvcigqbV91c2VyU2hlZXRzLmdldCgpKTsKLSAg
ICBpbmZvLnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsKLSAgICBpbmZvLnJlcG9ydEhh
c2hTZXQobV9yYW5nZXMpOwotICAgIGluZm8ucmVwb3J0TGlzdEhhc2hTZXQobV9zdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZXMpOwotICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fcHJlZmVycmVkU3R5bGVz
aGVldFNldCk7Ci0gICAgaW5mby5yZXBvcnRTdHJpbmcobV9zZWxlY3RlZFN0eWxlc2hlZXRTZXQp
OwotICAgIGluZm8ucmVwb3J0U3RyaW5nKG1fdGl0bGUuc3RyaW5nKCkpOwotICAgIGluZm8ucmVw
b3J0U3RyaW5nKG1fcmF3VGl0bGUuc3RyaW5nKCkpOwotICAgIGluZm8ucmVwb3J0U3RyaW5nKG1f
eG1sRW5jb2RpbmcpOwotICAgIGluZm8ucmVwb3J0U3RyaW5nKG1feG1sVmVyc2lvbik7Ci0gICAg
aW5mby5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOwotICAgIGluZm8ucmVwb3J0SGFz
aE1hcChtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMpOwotICAgIGluZm8ucmVwb3J0SGFz
aE1hcChtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0VmVjdG9yKCptX3VzZXJTaGVldHMuZ2V0KCkpOworICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEhhc2hTZXQobV9ub2RlSXRlcmF0b3JzKTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRIYXNoU2V0KG1fcmFuZ2VzKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRMaXN0SGFzaFNldChtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcyk7CisgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCk7CisgICAgbWVt
b3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0KTsKKyAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV90aXRsZS5zdHJpbmcoKSk7CisgICAg
bWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0U3RyaW5nKG1fcmF3VGl0bGUuc3RyaW5nKCkpOworICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFN0cmluZyhtX3htbEVuY29kaW5nKTsKKyAgICBtZW1v
cnlPYmplY3RJbmZvLT5yZXBvcnRTdHJpbmcobV94bWxWZXJzaW9uKTsKKyAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRTdHJpbmcobV9jb250ZW50TGFuZ3VhZ2UpOworICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEhhc2hNYXAobV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zKTsKKyAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRIYXNoTWFwKG1fd2luZG93TmFtZWRJdGVtQ29sbGVj
dGlvbnMpOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBpbmZvLnJlcG9ydFZl
Y3RvcihtX2Rhc2hib2FyZFJlZ2lvbnMpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFZl
Y3RvcihtX2Rhc2hib2FyZFJlZ2lvbnMpOwogI2VuZGlmCi0gICAgaW5mby5yZXBvcnRIYXNoTWFw
KG1fY3NzQ2FudmFzRWxlbWVudHMpOwotICAgIGluZm8ucmVwb3J0VmVjdG9yKG1faWNvblVSTHMp
OwotICAgIGluZm8ucmVwb3J0SGFzaFNldChtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxl
bWVudHMpOwotICAgIGluZm8ucmVwb3J0SGFzaFNldChtX21lZGlhVm9sdW1lQ2FsbGJhY2tFbGVt
ZW50cyk7Ci0gICAgaW5mby5yZXBvcnRIYXNoU2V0KG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkRWxlbWVudHMpOwotICAgIGluZm8ucmVwb3J0SGFzaE1hcChtX2VsZW1lbnRzQnlBY2Nlc3NL
ZXkpOwotICAgIGluZm8ucmVwb3J0SGFzaFNldChtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnMpOwot
ICAgIGluZm8ucmVwb3J0VmVjdG9yKG1fcGVuZGluZ1Rhc2tzKTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRIYXNoTWFwKG1fY3NzQ2FudmFzRWxlbWVudHMpOworICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydFZlY3RvcihtX2ljb25VUkxzKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5y
ZXBvcnRIYXNoU2V0KG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cyk7CisgICAg
bWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaFNldChtX21lZGlhVm9sdW1lQ2FsbGJhY2tFbGVt
ZW50cyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SGFzaFNldChtX3ByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRI
YXNoTWFwKG1fZWxlbWVudHNCeUFjY2Vzc0tleSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0SGFzaFNldChtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnMpOworICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydFZlY3RvcihtX3BlbmRpbmdUYXNrcyk7CiB9CiAKICNpZiBFTkFCTEUoVU5ET19N
QU5BR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDNiNDBjYzg1ZjFjN2Y5ZjMxYjY1ZWQx
NjhkNGU0N2Q4ZjliYzMwMTAuLmY2NWQzNjFmZTQzNDMwYTIzMDYyNjQ3ZTZhZjAzNjAxNGNkMGFi
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCBQYXNzUmVmUHRy
PEF0dHI+IEVsZW1lbnQ6OmRldGFjaEF0dHJpYnV0ZShzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNT
RVJUKGF0dHJpYnV0ZURhdGEoKSk7CiAKLSAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZURhdGEoKS0+YXR0cmlidXRlSXRlbShpbmRleCk7CisgICAgQXR0cmlidXRlKiBh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogICAgIEFT
U0VSVChhdHRyaWJ1dGUpOwogCiAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMo
YXR0cmlidXRlLT5uYW1lKCkpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIFBhc3NSZWZQdHI8QXR0cj4g
RWxlbWVudDo6ZGV0YWNoQXR0cmlidXRlKHNpemVfdCBpbmRleCkKICAgICBlbHNlCiAgICAgICAg
IGF0dHIgPSBBdHRyOjpjcmVhdGUoZG9jdW1lbnQoKSwgYXR0cmlidXRlLT5uYW1lKCksIGF0dHJp
YnV0ZS0+dmFsdWUoKSk7CiAKLSAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5yZW1vdmVBdHRy
aWJ1dGUoaW5kZXgsIHRoaXMpOworICAgIGF0dHJpYnV0ZURhdGEoKS0+cmVtb3ZlQXR0cmlidXRl
KGluZGV4LCB0aGlzKTsKICAgICByZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9CiAKQEAgLTIyMiwx
MSArMjIyLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMobmFt
ZSkpCiAgICAgICAgIGF0dHItPmRldGFjaEZyb21FbGVtZW50V2l0aFZhbHVlKGF0dHItPnZhbHVl
KCkpOwogCi0gICAgc2l6ZV90IGluZGV4ID0gYXR0cmlidXRlRGF0YSgpLT5nZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgobmFtZSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgs
IHRoaXMpOworICAgIGF0dHJpYnV0ZURhdGEoKS0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIHRoaXMp
OwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgYm9vbCB2YWx1ZSkKQEAgLTIzOSw3ICsyMzUsNyBAQCB2b2lkIEVsZW1lbnQ6
OnNldEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCB2YWx1
ZSkKIAogTmFtZWROb2RlTWFwKiBFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAgICBj
b25zdF9jYXN0PEVsZW1lbnQqPih0aGlzKS0+ZW5zdXJlVXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsK
KyAgICBlbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpOwogICAgIEVsZW1lbnRSYXJlRGF0YSog
cmFyZURhdGEgPSBjb25zdF9jYXN0PEVsZW1lbnQqPih0aGlzKS0+ZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7CiAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEtPm1f
YXR0cmlidXRlTWFwLmdldCgpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlTWFwOwpAQCAtNjYy
LDE3ICs2NTgsMTUgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogaW5saW5lIHZvaWQgRWxl
bWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoc2l6ZV90IGluZGV4LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFSW5VcGRhdGVTdHlsZUF0dHJp
YnV0ZSBpblVwZGF0ZVN0eWxlQXR0cmlidXRlKQogewotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
KiBhdHRyaWJ1dGVEYXRhID0gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKLQotICAgIEF0dHJpYnV0
ZSogb2xkID0gaW5kZXggIT0gbm90Rm91bmQgPyBhdHRyaWJ1dGVEYXRhLT5hdHRyaWJ1dGVJdGVt
KGluZGV4KSA6IDA7CisgICAgQXR0cmlidXRlKiBvbGQgPSBpbmRleCAhPSBub3RGb3VuZCA/IG1f
YXR0cmlidXRlRGF0YS0+YXR0cmlidXRlSXRlbShpbmRleCkgOiAwOwogICAgIGlmICh2YWx1ZS5p
c051bGwoKSkgewogICAgICAgICBpZiAob2xkKQotICAgICAgICAgICAgYXR0cmlidXRlRGF0YS0+
cmVtb3ZlQXR0cmlidXRlKGluZGV4LCB0aGlzLCBpblVwZGF0ZVN0eWxlQXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIG1fYXR0cmlidXRlRGF0YS0+cmVtb3ZlQXR0cmlidXRlKGluZGV4LCB0aGlzLCBp
blVwZGF0ZVN0eWxlQXR0cmlidXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
ICghb2xkKSB7Ci0gICAgICAgIGF0dHJpYnV0ZURhdGEtPmFkZEF0dHJpYnV0ZShBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpLCB0aGlzLCBpblVwZGF0ZVN0eWxlQXR0cmlidXRlKTsKKyAgICAgICAgbV9h
dHRyaWJ1dGVEYXRhLT5hZGRBdHRyaWJ1dGUoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSwgdGhpcywg
aW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2
NiwzMiArNzYwLDMyIEBAIHZvaWQgRWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBW
ZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yLCBGcmFnCiAgICAgaWYgKGF0dHJpYnV0
ZVZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxBdHRyaWJ1
dGU+IGZpbHRlcmVkQXR0cmlidXRlcyA9IGF0dHJpYnV0ZVZlY3RvcjsKKyAgICBjcmVhdGVBdHRy
aWJ1dGVEYXRhKCk7CisgICAgbV9hdHRyaWJ1dGVEYXRhLT5tX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVWZWN0b3I7CisgICAgbV9hdHRyaWJ1dGVEYXRhLT5tX2F0dHJpYnV0ZXMuc2hyaW5rVG9GaXQo
KTsKIAogICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQgYXMgcmVzdWx0IG9mIGEgcGFz
dGUgb3IgZHJhZy1uLWRyb3Agb3BlcmF0aW9uCiAgICAgLy8gd2Ugd2FudCB0byByZW1vdmUgYWxs
IHRoZSBzY3JpcHQgYW5kIGV2ZW50IGhhbmRsZXJzLgogICAgIGlmIChzY3JpcHRpbmdQZXJtaXNz
aW9uID09IERpc2FsbG93U2NyaXB0aW5nQ29udGVudCkgewogICAgICAgICB1bnNpZ25lZCBpID0g
MDsKLSAgICAgICAgd2hpbGUgKGkgPCBmaWx0ZXJlZEF0dHJpYnV0ZXMuc2l6ZSgpKSB7Ci0gICAg
ICAgICAgICBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGZpbHRlcmVkQXR0cmlidXRlc1tpXTsKLSAg
ICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkg
ewotICAgICAgICAgICAgICAgIGZpbHRlcmVkQXR0cmlidXRlcy5yZW1vdmUoaSk7CisgICAgICAg
IHdoaWxlIChpIDwgbV9hdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKSkgeworICAgICAgICAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IG1fYXR0cmlidXRlRGF0YS0+bV9hdHRy
aWJ1dGVzW2ldLm5hbWUoKTsKKyAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlckF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlRGF0YS0+bV9h
dHRyaWJ1dGVzLnJlbW92ZShpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzQXR0cmlidXRlVG9SZW1vdmUoYXR0cmlidXRlLm5h
bWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXRW
YWx1ZShudWxsQXRvbSk7CisgICAgICAgICAgICBpZiAoaXNBdHRyaWJ1dGVUb1JlbW92ZShhdHRy
aWJ1dGVOYW1lLCBtX2F0dHJpYnV0ZURhdGEtPm1fYXR0cmlidXRlc1tpXS52YWx1ZSgpKSkKKyAg
ICAgICAgICAgICAgICBtX2F0dHJpYnV0ZURhdGEtPm1fYXR0cmlidXRlc1tpXS5zZXRWYWx1ZShu
dWxsQXRvbSk7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2F0
dHJpYnV0ZURhdGEgPSBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y3JlYXRlSW1tdXRhYmxlKGZpbHRl
cmVkQXR0cmlidXRlcyk7Ci0KLSAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHNldCBvZiBhdHRyaWJ1
dGVzIHdlIGFscmVhZHkgaGF2ZSBvbiB0aGUgc3RhY2sgaW4gY2FzZQorICAgIC8vIFN0b3JlIHRo
ZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQgb24gdGhlIHN0YWNrIGluIGNhc2UKICAg
ICAvLyBhdHRyaWJ1dGVDaGFuZ2VkIG11dGF0ZXMgbV9hdHRyaWJ1dGVEYXRhLgotICAgIC8vIEZJ
WE1FOiBGaW5kIGEgd2F5IHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcy4KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmlsdGVyZWRBdHRyaWJ1dGVzLnNpemUoKTsgKytpKQotICAgICAg
ICBhdHRyaWJ1dGVDaGFuZ2VkKGZpbHRlcmVkQXR0cmlidXRlc1tpXSk7CisgICAgVmVjdG9yPEF0
dHJpYnV0ZT4gY2xvbmVkQXR0cmlidXRlcyA9IG1fYXR0cmlidXRlRGF0YS0+Y2xvbmVkQXR0cmli
dXRlVmVjdG9yKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNsb25lZEF0dHJpYnV0
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoY2xvbmVkQXR0cmlidXRl
c1tpXSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CkBAIC04MDIs
OCArNzk2LDggQEAgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKIAogYm9vbCBF
bGVtZW50OjpoYXNFcXVpdmFsZW50QXR0cmlidXRlcyhjb25zdCBFbGVtZW50KiBvdGhlcikgY29u
c3QKIHsKLSAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVw
ZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7Ci0gICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIG90
aGVyQXR0cmlidXRlRGF0YSA9IG90aGVyLT51cGRhdGVkQXR0cmlidXRlRGF0YSgpOworICAgIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEo
KTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogb3RoZXJBdHRyaWJ1dGVEYXRhID0gb3RoZXIt
PnVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgaWYgKGF0dHJpYnV0ZURhdGEpCiAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVEYXRhLT5pc0VxdWl2YWxlbnQob3RoZXJBdHRyaWJ1dGVEYXRhKTsK
ICAgICBpZiAob3RoZXJBdHRyaWJ1dGVEYXRhKQpAQCAtODQ5LDYgKzg0MywxMSBAQCBLVVJMIEVs
ZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogICAgIHJldHVybiBLVVJMKHBhcmVudEJhc2UsIGJhc2VB
dHRyaWJ1dGUpOwogfQogCit2b2lkIEVsZW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZURhdGEoKSBjb25z
dAoreworICAgIG1fYXR0cmlidXRlRGF0YSA9IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpjcmVhdGUo
KTsKK30KKwogY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3JjQXR0cjsKQEAgLTEzNzksNiArMTM3OCw4
IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShBdHRyKiBhdHRy
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgRWxl
bWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbnN1cmVVcGRhdGVkQXR0cmlidXRl
RGF0YSgpOworCiAgICAgUmVmUHRyPEF0dHI+IG9sZEF0dHIgPSBhdHRySWZFeGlzdHMoYXR0ci0+
cXVhbGlmaWVkTmFtZSgpKTsKICAgICBpZiAob2xkQXR0ci5nZXQoKSA9PSBhdHRyKQogICAgICAg
ICByZXR1cm4gYXR0cjsgLy8gVGhpcyBBdHRyIGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gdGhlIGVs
ZW1lbnQuCkBAIC0xMzkwLDggKzEzOTEsNiBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
ID0gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKLQogICAgIHNpemVfdCBpbmRleCA9IGF0dHJpYnV0
ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChhdHRyLT5xdWFsaWZpZWROYW1lKCkpOwogICAg
IEF0dHJpYnV0ZSogb2xkQXR0cmlidXRlID0gaW5kZXggIT0gbm90Rm91bmQgPyBhdHRyaWJ1dGVE
YXRhLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSA6IDA7CiAKQEAgLTE0MjksNyArMTQyOCw3IEBAIFBh
c3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiBhdHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogICAgIEFTU0VSVChkb2N1bWVudCgpID09IGF0dHItPmRvY3Vt
ZW50KCkpOwogCi0gICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEg
PSB1cGRhdGVkQXR0cmlidXRlRGF0YSgpOworICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRy
aWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKICAgICBBU1NFUlQoYXR0cmlidXRl
RGF0YSk7CiAKICAgICBzaXplX3QgaW5kZXggPSBhdHRyaWJ1dGVEYXRhLT5nZXRBdHRyaWJ1dGVJ
dGVtSW5kZXgoYXR0ci0+cXVhbGlmaWVkTmFtZSgpKTsKQEAgLTE0NjQsMjAgKzE0NjMsMjEgQEAg
dm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VS
VChhdHRyaWJ1dGVEYXRhKCkpOwogICAgIEFTU0VSVChpbmRleCA8PSBhdHRyaWJ1dGVDb3VudCgp
KTsKLSAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgsIHRo
aXMpOworICAgIGF0dHJpYnV0ZURhdGEoKS0+cmVtb3ZlQXR0cmlidXRlKGluZGV4LCB0aGlzKTsK
IH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIGlmICghYXR0cmlidXRlRGF0YSgpKQorICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBh
dHRyaWJ1dGVEYXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpOworICAgIGlmICghYXR0cmlidXRl
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwotICAgIHNpemVf
dCBpbmRleCA9IGF0dHJpYnV0ZURhdGEoKS0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KGxvY2FsTmFt
ZSwgZmFsc2UpOworICAgIHNpemVfdCBpbmRleCA9IGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0
ZUl0ZW1JbmRleChsb2NhbE5hbWUsIGZhbHNlKTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG11dGFibGVBdHRyaWJ1dGVEYXRhKCktPnJlbW92ZUF0
dHJpYnV0ZShpbmRleCwgdGhpcyk7CisgICAgYXR0cmlidXRlRGF0YS0+cmVtb3ZlQXR0cmlidXRl
KGluZGV4LCB0aGlzKTsKIH0KIAogdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOUyhjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpCkBAIC0xNDg3
LDcgKzE0ODcsNyBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTgogCiBQYXNzUmVmUHRyPEF0dHI+
IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGNv
bnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0
ZURhdGEoKTsKKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVwZGF0
ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVEYXRhKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gYXR0cmlidXRlRGF0YS0+Z2V0QXR0cmlidXRlTm9kZShuYW1lLCBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpLCB0aGlzKTsKQEAgLTE0OTUsNyArMTQ5NSw3
IEBAIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJp
bmcmIG5hbWUpCiAKIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5T
KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkKIHsK
LSAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVwZGF0ZWRB
dHRyaWJ1dGVEYXRhKCk7CisgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEg
PSB1cGRhdGVkQXR0cmlidXRlRGF0YSgpOwogICAgIGlmICghYXR0cmlidXRlRGF0YSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZU5vZGUo
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCB0aGlzKTsK
QEAgLTE1MDMsMTggKzE1MDMsMTkgQEAgUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGVOb2RlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFMKIAogYm9vbCBF
bGVtZW50OjpoYXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIGlm
ICghYXR0cmlidXRlRGF0YSgpKQorICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVE
YXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAgICBpZiAoIWF0dHJpYnV0ZURhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFRoaXMgY2FsbCB0byBTdHJpbmc6Omxvd2Vy
KCkgc2VlbXMgdG8gYmUgcmVxdWlyZWQgYnV0CiAgICAgLy8gdGhlcmUgbWF5IGJlIGEgd2F5IHRv
IHJlbW92ZSBpdC4KICAgICBTdHJpbmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7Ci0gICAgcmV0dXJuIHVwZGF0ZWRBdHRy
aWJ1dGVEYXRhKCktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lLCBmYWxzZSk7CisgICAgcmV0
dXJuIGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lLCBmYWxzZSk7CiB9
CiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VV
UkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdAogewotICAgIGNvbnN0IEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAg
ICBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVwZGF0ZWRBdHRyaWJ1dGVE
YXRhKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEtPmdldEF0dHJpYnV0ZUl0ZW0oUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKQEAgLTE3MjEsMTEgKzE3MjIsMTIg
QEAgdm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKICAgICBpZiAoIWhhc0F0dHJM
aXN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRh
KiBhdHRyaWJ1dGVEYXRhID0gdXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKKyAgICBFbGVtZW50QXR0
cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7CiAgICAg
QVNTRVJUKGF0dHJpYnV0ZURhdGEpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRy
aWJ1dGVEYXRhLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8QXR0cj4gYXR0
ciA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVEYXRhLT5hdHRyaWJ1dGVJdGVtKGkpLT5uYW1lKCkp
KQorICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlRGF0
YS0+YXR0cmlidXRlVmVjdG9yKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1
dGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChSZWZQdHI8QXR0cj4gYXR0ciA9IGF0dHJJ
ZkV4aXN0cyhhdHRyaWJ1dGVzW2ldLm5hbWUoKSkpCiAgICAgICAgICAgICBhdHRyLT5ub3JtYWxp
emUoKTsKICAgICB9CiB9CkBAIC0yMTQ5LDggKzIxNTEsOCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkKIAogdm9pZCBFbGVtZW50Ojpj
bG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKIHsKLSAgICBp
ZiAoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBvdGhlci51cGRh
dGVkQXR0cmlidXRlRGF0YSgpKQotICAgICAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5jbG9u
ZURhdGFGcm9tKCphdHRyaWJ1dGVEYXRhLCBvdGhlciwgKnRoaXMpOworICAgIGlmIChFbGVtZW50
QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IG90aGVyLnVwZGF0ZWRBdHRyaWJ1dGVEYXRh
KCkpCisgICAgICAgIGVuc3VyZVVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCktPmNsb25lRGF0YUZyb20o
KmF0dHJpYnV0ZURhdGEsIG90aGVyLCAqdGhpcyk7CiAgICAgZWxzZSBpZiAobV9hdHRyaWJ1dGVE
YXRhKSB7CiAgICAgICAgIG1fYXR0cmlidXRlRGF0YS0+Y2xlYXJBdHRyaWJ1dGVzKHRoaXMpOwog
ICAgICAgICBtX2F0dHJpYnV0ZURhdGEuY2xlYXIoKTsKQEAgLTIxNjMsMTIgKzIxNjUsNCBAQCB2
b2lkIEVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQog
ICAgIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQob3RoZXIpOwogfQogCi12
b2lkIEVsZW1lbnQ6OmNyZWF0ZU11dGFibGVBdHRyaWJ1dGVEYXRhKCkKLXsKLSAgICBpZiAoIW1f
YXR0cmlidXRlRGF0YSkKLSAgICAgICAgbV9hdHRyaWJ1dGVEYXRhID0gRWxlbWVudEF0dHJpYnV0
ZURhdGE6OmNyZWF0ZSgpOwotICAgIGVsc2UKLSAgICAgICAgbV9hdHRyaWJ1dGVEYXRhID0gbV9h
dHRyaWJ1dGVEYXRhLT5tYWtlTXV0YWJsZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NjdmOTNlZmYyYjg1NTM4ZTc1NDg3ZWQ5OTI4MzZjOWJh
ZGVjOGIxLi4wYzMzOGQ2Y2I1YmZhZjEyYjMwN2ZkYWM3MDdmOTMxOTQyNWRkNTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTI0NiwxMSArMjQ2LDEwIEBAIHB1YmxpYzoKICAgICAvLyBPbmx5IGNh
bGxlZCBieSB0aGUgcGFyc2VyIGltbWVkaWF0ZWx5IGFmdGVyIGVsZW1lbnQgY29uc3RydWN0aW9u
LgogICAgIHZvaWQgcGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYs
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAKLSAgICBjb25zdCBFbGVtZW50QXR0cmli
dXRlRGF0YSogYXR0cmlidXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlRGF0YS5n
ZXQoKTsgfQotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBtdXRhYmxlQXR0cmlidXRlRGF0YSgp
OwotICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBlbnN1cmVBdHRyaWJ1dGVEYXRhKCk7Ci0gICAg
Y29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIHVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCkgY29uc3Q7
Ci0gICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGVuc3VyZVVwZGF0ZWRBdHRyaWJ1dGVEYXRhKCk7
CisgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZURhdGEuZ2V0KCk7IH0KKyAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogZW5z
dXJlQXR0cmlidXRlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiB1cGRh
dGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBlbnN1
cmVVcGRhdGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0OwogCiAgICAgLy8gQ2xvbmVzIGF0dHJpYnV0
ZXMgb25seS4KICAgICB2b2lkIGNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmKTsKQEAgLTQzMCwxMCArNDI5LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogICAgIHsKLSAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPEVsZW1lbnQ+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwotICAgICAgICBpbmZv
LnZpc2l0QmFzZUNsYXNzPENvbnRhaW5lck5vZGU+KHRoaXMpOwotICAgICAgICBpbmZvLnJlcG9y
dEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOwotICAgICAgICBpbmZvLnJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVEYXRhLmdldCgpKTsKKyAgICAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7CisgICAgICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmpl
Y3QobV90YWdOYW1lKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihtX2F0dHJpYnV0ZURhdGEuZ2V0KCkpOwogICAgIH0KIAogcHJvdGVjdGVkOgpA
QCAtNDc0LDYgKzQ3Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBzZXVkb1N0eWxlQ2FjaGVJ
c0ludmFsaWQoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIG5l
d1N0eWxlKTsKIAorICAgIHZvaWQgY3JlYXRlQXR0cmlidXRlRGF0YSgpIGNvbnN0OworCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxlQXR0cmlidXRlKCkgY29uc3QgeyB9CiAKICNpZiBFTkFC
TEUoU1ZHKQpAQCAtNTAyLDggKzUwMyw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVucmVnaXN0
ZXJOYW1lZEZsb3dDb250ZW50Tm9kZSgpOwogCi0gICAgdm9pZCBjcmVhdGVNdXRhYmxlQXR0cmli
dXRlRGF0YSgpOwotCiBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVudFJhcmVE
YXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKQEAgLTU2OCwyNSArNTY3LDIzIEBAIGlubGluZSBFbGVtZW50KiBFbGVtZW50OjpuZXh0RWxl
bWVudFNpYmxpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7
CiB9CiAKLWlubGluZSBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogRWxlbWVudDo6dXBkYXRl
ZEF0dHJpYnV0ZURhdGEoKSBjb25zdAoraW5saW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVt
ZW50OjplbnN1cmVBdHRyaWJ1dGVEYXRhKCkgY29uc3QKIHsKLSAgICB1cGRhdGVJbnZhbGlkQXR0
cmlidXRlcygpOwotICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCk7CisgICAgaWYgKCFtX2F0dHJp
YnV0ZURhdGEpCisgICAgICAgIGNyZWF0ZUF0dHJpYnV0ZURhdGEoKTsKKyAgICByZXR1cm4gbV9h
dHRyaWJ1dGVEYXRhLmdldCgpOwogfQogCi1pbmxpbmUgRWxlbWVudEF0dHJpYnV0ZURhdGEqIEVs
ZW1lbnQ6OmVuc3VyZUF0dHJpYnV0ZURhdGEoKQoraW5saW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
KiBFbGVtZW50Ojp1cGRhdGVkQXR0cmlidXRlRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fYXR0
cmlidXRlRGF0YSkKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlRGF0YS5nZXQoKTsKLSAgICBy
ZXR1cm4gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKTsKKyAgICB1cGRhdGVJbnZhbGlkQXR0cmlidXRl
cygpOworICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCk7CiB9CiAKLWlubGluZSBFbGVtZW50QXR0
cmlidXRlRGF0YSogRWxlbWVudDo6ZW5zdXJlVXBkYXRlZEF0dHJpYnV0ZURhdGEoKQoraW5saW5l
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVtZW50OjplbnN1cmVVcGRhdGVkQXR0cmlidXRlRGF0
YSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlSW52YWxpZEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAobV9h
dHRyaWJ1dGVEYXRhKQotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVEYXRhLmdldCgpOwotICAg
IHJldHVybiBtdXRhYmxlQXR0cmlidXRlRGF0YSgpOworICAgIHJldHVybiBlbnN1cmVBdHRyaWJ1
dGVEYXRhKCk7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZU5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld05hbWUpCkBAIC03MzEs
MTMgKzcyOCw2IEBAIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0NsYXNzKCkgY29uc3QKICAgICBy
ZXR1cm4gYXR0cmlidXRlRGF0YSgpICYmIGF0dHJpYnV0ZURhdGEoKS0+aGFzQ2xhc3MoKTsKIH0K
IAotaW5saW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBFbGVtZW50OjptdXRhYmxlQXR0cmlidXRl
RGF0YSgpCi17Ci0gICAgaWYgKCFtX2F0dHJpYnV0ZURhdGEgfHwgIW1fYXR0cmlidXRlRGF0YS0+
aXNNdXRhYmxlKCkpCi0gICAgICAgIGNyZWF0ZU11dGFibGVBdHRyaWJ1dGVEYXRhKCk7Ci0gICAg
cmV0dXJuIG1fYXR0cmlidXRlRGF0YS5nZXQoKTsKLX0KLQogLy8gUHV0IGhlcmUgdG8gbWFrZSB0
aGVtIGlubGluZS4KIGlubGluZSBib29sIE5vZGU6Omhhc0lEKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGYyZTI4ZDU2YTY4ZjAy
MGQ0YTY3N2ZjNGM0MGE0YzE0YzI3NzhkOGIuLmFiMjc2OGU2NjVmODI4YzkzZTU1MTdiZDcxZmJk
YzEwN2ViMDZlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmNwcApAQCAtMzIsNTQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3du
UHRyPEVsZW1lbnRBdHRyaWJ1dGVEYXRhPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Y3JlYXRlSW1t
dXRhYmxlKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQotewotICAgIHZvaWQq
IHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZW9mKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKSAtIHNp
emVvZih2b2lkKikgKyBzaXplb2YoQXR0cmlidXRlKSAqIGF0dHJpYnV0ZXMuc2l6ZSgpKTsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IChzbG90KSBFbGVtZW50QXR0cmlidXRlRGF0YShhdHRyaWJ1
dGVzKSk7Ci19Ci0KLUVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50QXR0cmlidXRlRGF0YSgp
Ci0gICAgOiBtX2lzTXV0YWJsZSh0cnVlKQotICAgICwgbV9hcnJheVNpemUoMCkKLSAgICAsIG1f
bXV0YWJsZUF0dHJpYnV0ZVZlY3RvcihuZXcgVmVjdG9yPEF0dHJpYnV0ZSwgND4pCi17Ci19Ci0K
LUVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50QXR0cmlidXRlRGF0YShjb25zdCBWZWN0b3I8
QXR0cmlidXRlPiYgYXR0cmlidXRlcykKLSAgICA6IG1faXNNdXRhYmxlKGZhbHNlKQotICAgICwg
bV9hcnJheVNpemUoYXR0cmlidXRlcy5zaXplKCkpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG5ldyAoJmFycmF5KClbaV0p
IEF0dHJpYnV0ZShhdHRyaWJ1dGVzW2ldKTsKLX0KLQotRWxlbWVudEF0dHJpYnV0ZURhdGE6OkVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBvdGhlcikKLSAg
ICA6IG1faW5saW5lU3R5bGVEZWNsKG90aGVyLm1faW5saW5lU3R5bGVEZWNsKQotICAgICwgbV9h
dHRyaWJ1dGVTdHlsZShvdGhlci5tX2F0dHJpYnV0ZVN0eWxlKQotICAgICwgbV9jbGFzc05hbWVz
KG90aGVyLm1fY2xhc3NOYW1lcykKLSAgICAsIG1faWRGb3JTdHlsZVJlc29sdXRpb24ob3RoZXIu
bV9pZEZvclN0eWxlUmVzb2x1dGlvbikKLSAgICAsIG1faXNNdXRhYmxlKHRydWUpCi0gICAgLCBt
X2FycmF5U2l6ZSgwKQotICAgICwgbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yKG5ldyBWZWN0b3I8
QXR0cmlidXRlLCA0PikKLXsKLSAgICAvLyBUaGlzIGNvcHkgY29uc3RydWN0b3Igc2hvdWxkIG9u
bHkgYmUgdXNlZCBieSBtYWtlTXV0YWJsZSgpIHRvIGdvIGZyb20gaW1tdXRhYmxlIHRvIG11dGFi
bGUuCi0gICAgQVNTRVJUKCFvdGhlci5tX2lzTXV0YWJsZSk7Ci0KLSAgICAvLyBSZXNlcnZlIHNw
YWNlIGZvciBvbmUgZXh0cmEgYXR0cmlidXRlIHNpbmNlIHRoZSB0eXBpY2FsIHJlYXNvbiB3ZSdy
ZSBoZXJlIGlzIGJlY2F1c2UgYW4KLSAgICAvLyBhdHRyaWJ1dGUgaXMgYmVpbmcgYWRkZWQuCi0g
ICAgbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG90aGVy
Lm1fYXJyYXlTaXplICsgMSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG90aGVyLm1f
YXJyYXlTaXplOyArK2kpCi0gICAgICAgIG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rvci0+dW5jaGVj
a2VkQXBwZW5kKG90aGVyLmFycmF5KClbaV0pOwotfQotCi1FbGVtZW50QXR0cmlidXRlRGF0YTo6
fkVsZW1lbnRBdHRyaWJ1dGVEYXRhKCkKLXsKLSAgICBpZiAoaXNNdXRhYmxlKCkpCi0gICAgICAg
IGRlbGV0ZSBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3I7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fYXJyYXlTaXplOyArK2kpCi0gICAgICAgIGFycmF5KClbaV0ufkF0dHJpYnV0ZSgp
OwotfQotCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QXR0cj4gPiBBdHRyTGlzdDsKIHR5cGVkZWYg
SGFzaE1hcDxFbGVtZW50KiwgT3duUHRyPEF0dHJMaXN0PiA+IEF0dHJMaXN0TWFwOwogCkBAIC0x
MjksMTQgKzgxLDE0IEBAIHN0YXRpYyBBdHRyKiBmaW5kQXR0ckluTGlzdChBdHRyTGlzdCogYXR0
ckxpc3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QXR0cj4gRWxlbWVudEF0dHJpYnV0ZURhdGE6OmF0dHJJZkV4aXN0cyhFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAorUGFzc1JlZlB0cjxB
dHRyPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6YXR0cklmRXhpc3RzKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKEF0dHJMaXN0KiBhdHRyTGlz
dCA9IGF0dHJMaXN0Rm9yRWxlbWVudChlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZpbmRBdHRy
SW5MaXN0KGF0dHJMaXN0LCBuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxB
dHRyPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cihFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAorUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50
QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKQogewogICAgIEF0dHJMaXN0KiBhdHRyTGlzdCA9IGVuc3VyZUF0dHJMaXN0
Rm9yRWxlbWVudChlbGVtZW50KTsKICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGZpbmRBdHRySW5M
aXN0KGF0dHJMaXN0LCBuYW1lKTsKQEAgLTE0Nyw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8QXR0cj4g
RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUF0dHIoRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
UXVhbGlmCiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQogCi12b2lkIEVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjpzZXRBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIEF0dHIqIGF0dHIpIGNvbnN0Cit2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpzZXRB
dHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEF0dHIqIGF0
dHIpCiB7CiAgICAgQXR0ckxpc3QqIGF0dHJMaXN0ID0gZW5zdXJlQXR0ckxpc3RGb3JFbGVtZW50
KGVsZW1lbnQpOwogCkBAIC0xNTgsNyArMTEwLDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0
YTo6c2V0QXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLAog
ICAgIGF0dHItPmF0dGFjaFRvRWxlbWVudChlbGVtZW50KTsKIH0KIAotdm9pZCBFbGVtZW50QXR0
cmlidXRlRGF0YTo6cmVtb3ZlQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAordm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cihF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIEF0dHJM
aXN0KiBhdHRyTGlzdCA9IGF0dHJMaXN0Rm9yRWxlbWVudChlbGVtZW50KTsKICAgICBBU1NFUlQo
YXR0ckxpc3QpOwpAQCAtMTc1LDkgKzEyNywxMyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
OjpyZW1vdmVBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
OjpzZXRDbGFzcyhjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgYm9vbCBzaG91bGRGb2xkQ2FzZSkK
K3sKKyAgICBtX2NsYXNzTmFtZXMuc2V0KGNsYXNzTmFtZSwgc2hvdWxkRm9sZENhc2UpOworfQor
ICAgIAogU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZUlubGlu
ZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGlzTXV0YWJsZSgp
KTsKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAgICAgICAgIEFTU0VSVChlbGVtZW50
LT5pc1N0eWxlZEVsZW1lbnQoKSk7CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gU3R5bGVQ
cm9wZXJ0eVNldDo6Y3JlYXRlKHN0cmljdFRvQ1NTUGFyc2VyTW9kZShlbGVtZW50LT5pc0hUTUxF
bGVtZW50KCkgJiYgIWVsZW1lbnQtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSk7CkBAIC0x
ODcsNyArMTQzLDYgQEAgU3R5bGVQcm9wZXJ0eVNldCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVu
c3VyZUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQKIAogU3R5bGVQcm9wZXJ0eVNl
dCogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZShTdHlsZWRF
bGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChpc011dGFibGUoKSk7CiAgICAgaWYgKG1f
aW5saW5lU3R5bGVEZWNsICYmICFtX2lubGluZVN0eWxlRGVjbC0+aXNNdXRhYmxlKCkpIHsKICAg
ICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBtX2lubGluZVN0eWxlRGVjbC0+Y29weSgpOwogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7CkBAIC0yMDYsNyArMTYxLDcgQEAg
dm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0
aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW0KICAgICBtX2lubGluZVN0eWxlRGVjbC0+cGFyc2VEZWNs
YXJhdGlvbih0ZXh0LCBlbGVtZW50LT5kb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKS0+Y29udGVu
dHMoKSk7CiB9CiAKLXZvaWQgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmRlc3Ryb3lJbmxpbmVTdHls
ZShTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAordm9pZCBFbGVtZW50QXR0cmlidXRlRGF0
YTo6ZGVzdHJveUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYg
KCFtX2lubGluZVN0eWxlRGVjbCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE2LDEyICsxNzEsMTAg
QEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGVzdHJveUlubGluZVN0eWxlKFN0eWxlZEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmFkZEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgRWxlbWVudCogZWxlbWVudCwgRUlu
VXBkYXRlU3R5bGVBdHRyaWJ1dGUgaW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSkKIHsKLSAgICBBU1NF
UlQoaXNNdXRhYmxlKCkpOwotCiAgICAgaWYgKGVsZW1lbnQgJiYgaW5VcGRhdGVTdHlsZUF0dHJp
YnV0ZSA9PSBOb3RJblVwZGF0ZVN0eWxlQXR0cmlidXRlKQogICAgICAgICBlbGVtZW50LT53aWxs
TW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIG51bGxBdG9tLCBhdHRyaWJ1dGUudmFs
dWUoKSk7CiAKLSAgICBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPmFwcGVuZChhdHRyaWJ1dGUp
OworICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoYXR0cmlidXRlKTsKIAogICAgIGlmIChlbGVtZW50
ICYmIGluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgPT0gTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSkK
ICAgICAgICAgZWxlbWVudC0+ZGlkQWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7CkBAIC0yMzEsNyAr
MTg0LDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cmlidXRlKHNpemVf
dCBpbmRleCwgRWxlbWVudCogZWxlbWVudCwgRUluVXAKIHsKICAgICBBU1NFUlQoaW5kZXggPCBs
ZW5ndGgoKSk7CiAKLSAgICBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IG1fbXV0YWJsZUF0dHJpYnV0
ZVZlY3Rvci0+YXQoaW5kZXgpOworICAgIEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gbV9hdHRyaWJ1
dGVzW2luZGV4XTsKICAgICBRdWFsaWZpZWROYW1lIG5hbWUgPSBhdHRyaWJ1dGUubmFtZSgpOwog
CiAgICAgaWYgKGVsZW1lbnQgJiYgaW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSA9PSBOb3RJblVwZGF0
ZVN0eWxlQXR0cmlidXRlKQpAQCAtMjQwLDcgKzE5Myw3IEBAIHZvaWQgRWxlbWVudEF0dHJpYnV0
ZURhdGE6OnJlbW92ZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIEVsZW1lbnQqIGVsZW1lbnQsIEVJ
blVwCiAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyID0gYXR0cklmRXhpc3RzKGVsZW1lbnQsIG5h
bWUpKQogICAgICAgICBhdHRyLT5kZXRhY2hGcm9tRWxlbWVudFdpdGhWYWx1ZShhdHRyaWJ1dGUu
dmFsdWUoKSk7CiAKLSAgICBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPnJlbW92ZShpbmRleCk7
CisgICAgbV9hdHRyaWJ1dGVzLnJlbW92ZShpbmRleCk7CiAKICAgICBpZiAoZWxlbWVudCAmJiBp
blVwZGF0ZVN0eWxlQXR0cmlidXRlID09IE5vdEluVXBkYXRlU3R5bGVBdHRyaWJ1dGUpCiAgICAg
ICAgIGVsZW1lbnQtPmRpZFJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKQEAgLTI1Niw5ICsyMDksOCBA
QCBib29sIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjppc0VxdWl2YWxlbnQoY29uc3QgRWxlbWVudEF0
dHJpYnV0ZURhdGEqIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgY29uc3QgQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICBjb25zdCBBdHRyaWJ1
dGUqIG90aGVyQXR0ciA9IG90aGVyLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgp
KTsKLSAgICAgICAgaWYgKCFvdGhlckF0dHIgfHwgYXR0cmlidXRlLT52YWx1ZSgpICE9IG90aGVy
QXR0ci0+dmFsdWUoKSkKKyAgICAgICAgQXR0cmlidXRlKiBvdGhlckF0dHIgPSBvdGhlci0+Z2V0
QXR0cmlidXRlSXRlbShtX2F0dHJpYnV0ZXNbaV0ubmFtZSgpKTsKKyAgICAgICAgaWYgKCFvdGhl
ckF0dHIgfHwgbV9hdHRyaWJ1dGVzW2ldLnZhbHVlKCkgIT0gb3RoZXJBdHRyLT52YWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjY5LDEwICsyMjEsOSBAQCB2
b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpkZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmhhc0F0dHJMaXN0KCkpOwog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICBp
ZiAoUmVmUHRyPEF0dHI+IGF0dHIgPSBhdHRySWZFeGlzdHMoZWxlbWVudCwgYXR0cmlidXRlLT5u
YW1lKCkpKQotICAgICAgICAgICAgYXR0ci0+ZGV0YWNoRnJvbUVsZW1lbnRXaXRoVmFsdWUoYXR0
cmlidXRlLT52YWx1ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdHRyaWJ1
dGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChSZWZQdHI8QXR0cj4gYXR0ciA9IGF0dHJJ
ZkV4aXN0cyhlbGVtZW50LCBtX2F0dHJpYnV0ZXNbaV0ubmFtZSgpKSkKKyAgICAgICAgICAgIGF0
dHItPmRldGFjaEZyb21FbGVtZW50V2l0aFZhbHVlKG1fYXR0cmlidXRlc1tpXS52YWx1ZSgpKTsK
ICAgICB9CiAKICAgICAvLyBUaGUgbG9vcCBhYm92ZSBzaG91bGQgaGF2ZSBjbGVhbmVkIG91dCB0
aGlzIGVsZW1lbnQncyBBdHRyIG1hcC4KQEAgLTI4MiwxNiArMjMzLDE1IEBAIHZvaWQgRWxlbWVu
dEF0dHJpYnV0ZURhdGE6OmRldGFjaEF0dHJPYmplY3RzRnJvbUVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4
U2xvd0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJp
YnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAgLy8gQ29udGludWUgdG8gY2hlY2tpbmcgY2FzZS1pbnNl
bnNpdGl2ZWx5IGFuZC9vciBmdWxsIG5hbWVzcGFjZWQgbmFtZXMgaWYgbmVjZXNzYXJ5OgotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKCFh
dHRyaWJ1dGUtPm5hbWUoKS5oYXNQcmVmaXgoKSkgewotICAgICAgICAgICAgaWYgKHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgYXR0cmlidXRlLT5s
b2NhbE5hbWUoKSkpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXR0cmlidXRlcy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIW1fYXR0cmlidXRlc1tpXS5uYW1lKCkuaGFzUHJl
Zml4KCkpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlICYmIGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsIG1fYXR0cmlidXRlc1tpXS5sb2NhbE5hbWUoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogV291bGQgYmUgZmFzdGVyIHRvIGRvIHRoaXMgY29tcGFyaXNvbiB3aXRob3V0IGNhbGxp
bmcgdG9TdHJpbmcsIHdoaWNoCiAgICAgICAgICAgICAvLyBnZW5lcmF0ZXMgYSB0ZW1wb3Jhcnkg
c3RyaW5nIGJ5IGNvbmNhdGVuYXRpb24uIEJ1dCB0aGlzIGJyYW5jaCBpcyBvbmx5IHJlYWNoZWQK
ICAgICAgICAgICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgbmFtZSBoYXMgYSBwcmVmaXgsIHdoaWNo
IGlzIHJhcmUgaW4gSFRNTC4KLSAgICAgICAgICAgIGlmIChlcXVhbFBvc3NpYmx5SWdub3JpbmdD
YXNlKG5hbWUsIGF0dHJpYnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCksIHNob3VsZElnbm9yZUF0dHJp
YnV0ZUNhc2UpKQorICAgICAgICAgICAgaWYgKGVxdWFsUG9zc2libHlJZ25vcmluZ0Nhc2UobmFt
ZSwgbV9hdHRyaWJ1dGVzW2ldLm5hbWUoKS50b1N0cmluZygpLCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQogICAgIH0KQEAg
LTMwMCw5ICsyNTAsNiBAQCBzaXplX3QgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0
ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgbgogCiB2b2lkIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjpjbG9uZURhdGFGcm9tKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBz
b3VyY2VEYXRhLCBjb25zdCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBFbGVtZW50JiB0YXJnZXRF
bGVtZW50KQogewotICAgIC8vIEZJWE1FOiBDbG9uZWQgZWxlbWVudHMgY291bGQgc3RhcnQgb3V0
IHdpdGggaW1tdXRhYmxlIGF0dHJpYnV0ZSBkYXRhLgotICAgIEFTU0VSVChpc011dGFibGUoKSk7
Ci0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElEID0gdGFyZ2V0RWxlbWVudC5nZXRJZEF0
dHJpYnV0ZSgpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3SUQgPSBzb3VyY2VFbGVtZW50
LmdldElkQXR0cmlidXRlKCk7CiAKQEAgLTMxNiwyMyArMjYzLDEzIEBAIHZvaWQgRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmNsb25lRGF0YUZyb20oY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEmIHNv
dXJjZURhdGEsCiAgICAgICAgIHRhcmdldEVsZW1lbnQudXBkYXRlTmFtZShvbGROYW1lLCBuZXdO
YW1lKTsKIAogICAgIGNsZWFyQXR0cmlidXRlcygmdGFyZ2V0RWxlbWVudCk7Ci0KLSAgICBpZiAo
c291cmNlRGF0YS5pc011dGFibGUoKSkKLSAgICAgICAgKm1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rv
ciA9ICpzb3VyY2VEYXRhLm1fbXV0YWJsZUF0dHJpYnV0ZVZlY3RvcjsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rvci0+aXNFbXB0eSgpKTsKLSAgICAg
ICAgbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJj
ZURhdGEubV9hcnJheVNpemUpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291
cmNlRGF0YS5tX2FycmF5U2l6ZTsgKytpKQotICAgICAgICAgICAgbV9tdXRhYmxlQXR0cmlidXRl
VmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoc291cmNlRGF0YS5hcnJheSgpW2ldKTsKLSAgICB9Ci0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgewotICAgICAgICBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3Rvci0+YXQo
aSk7Ci0gICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmlzU3R5bGVkRWxlbWVudCgpICYmIGF0dHJp
YnV0ZS5uYW1lKCkgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIpIHsKLSAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFN0eWxlZEVsZW1lbnQmPih0YXJnZXRFbGVtZW50KS5zdHlsZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0cmlidXRlLnZhbHVlKCksIFN0eWxlZEVsZW1lbnQ6OkRvTm90UmVwYXJzZVN0eWxlQXR0
cmlidXRlKTsKKyAgICBtX2F0dHJpYnV0ZXMgPSBzb3VyY2VEYXRhLm1fYXR0cmlidXRlczsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmlzU3R5bGVkRWxlbWVudCgpICYmIG1fYXR0cmlidXRl
c1tpXS5uYW1lKCkgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIpIHsKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFN0eWxlZEVsZW1lbnQmPih0YXJnZXRFbGVtZW50KS5zdHlsZUF0dHJpYnV0ZUNoYW5n
ZWQobV9hdHRyaWJ1dGVzW2ldLnZhbHVlKCksIFN0eWxlZEVsZW1lbnQ6OkRvTm90UmVwYXJzZVN0
eWxlQXR0cmlidXRlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAg
IHRhcmdldEVsZW1lbnQuYXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUpOworICAgICAgICB0YXJn
ZXRFbGVtZW50LmF0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVzW2ldKTsKICAgICB9CiAKICAg
ICBpZiAodGFyZ2V0RWxlbWVudC5pc1N0eWxlZEVsZW1lbnQoKSAmJiBzb3VyY2VEYXRhLm1faW5s
aW5lU3R5bGVEZWNsKSB7CkBAIC0zNDUsMzAgKzI4MiwyNyBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhOjpjbG9uZURhdGFGcm9tKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBzb3VyY2VE
YXRhLAogCiB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpjbGVhckF0dHJpYnV0ZXMoRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoaXNNdXRhYmxlKCkpOwotCiAgICAgaWYgKGVsZW1l
bnQtPmhhc0F0dHJMaXN0KCkpCiAgICAgICAgIGRldGFjaEF0dHJPYmplY3RzRnJvbUVsZW1lbnQo
ZWxlbWVudCk7CiAKICAgICBjbGVhckNsYXNzKCk7Ci0gICAgbV9tdXRhYmxlQXR0cmlidXRlVmVj
dG9yLT5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwogfQogCiB2b2lkIEVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjpyZXBsYWNlQXR0cmlidXRlKHNpemVfdCBpbmRleCwgY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGlzTXV0
YWJsZSgpKTsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3Ro
KCkpOwogCi0gICAgZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgp
LCBtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPmF0KGluZGV4KS52YWx1ZSgpLCBhdHRyaWJ1dGUu
dmFsdWUoKSk7Ci0gICAgKCptX211dGFibGVBdHRyaWJ1dGVWZWN0b3IpW2luZGV4XSA9IGF0dHJp
YnV0ZTsKKyAgICBlbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCks
IG1fYXR0cmlidXRlc1tpbmRleF0udmFsdWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOworICAgIG1f
YXR0cmlidXRlc1tpbmRleF0gPSBhdHRyaWJ1dGU7CiAgICAgZWxlbWVudC0+ZGlkTW9kaWZ5QXR0
cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudEF0dHJpYnV0
ZURhdGE6OmdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGVsZW1lbnQpOwotICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRl
SXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKKyAgICBBdHRyaWJ1dGUqIGF0
dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0obmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSk7CiAgICAgaWYgKCFhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBj
b25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4odGhpcyktPmVuc3VyZUF0dHIoZWxlbWVu
dCwgYXR0cmlidXRlLT5uYW1lKCkpOwpAQCAtMzc3LDEwICszMTEsMTEgQEAgUGFzc1JlZlB0cjxB
dHRyPiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wKIFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0
dHJpYnV0ZU5vZGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgY29uc3QgQXR0cmlidXRlKiBhdHRy
aWJ1dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOworICAgIEF0dHJpYnV0ZSogYXR0cmlidXRl
ID0gZ2V0QXR0cmlidXRlSXRlbShuYW1lKTsKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJpYnV0ZURhdGEqPih0
aGlzKS0+ZW5zdXJlQXR0cihlbGVtZW50LCBhdHRyaWJ1dGUtPm5hbWUoKSk7CiB9CiAKKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCBmYWQ1NWY5Yjc1
YzVlYWRhYzE1NTY3YTkxYzliODgwYTUxNzk2OWRhLi5hMTNkNGQyNThlYmZlZTZmZDk0N2NmNDM3
MmY4ODBhZWJmYzhkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURh
dGEuaApAQCAtNTEsMzggKzUxLDM2IEBAIGVudW0gRUluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgeyBO
b3RJblVwZGF0ZVN0eWxlQXR0cmlidXRlLCBJblVwZGF0ZVN0eWxlQXR0cmlidXRlCiBjbGFzcyBF
bGVtZW50QXR0cmlidXRlRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWxlbWVudEF0dHJpYnV0ZURhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbGVtZW50QXR0cmlidXRlRGF0YSk7IH0KLSAgICBzdGF0
aWMgUGFzc093blB0cjxFbGVtZW50QXR0cmlidXRlRGF0YT4gY3JlYXRlSW1tdXRhYmxlKGNvbnN0
IFZlY3RvcjxBdHRyaWJ1dGU+Jik7Ci0gICAgfkVsZW1lbnRBdHRyaWJ1dGVEYXRhKCk7CisgICAg
c3RhdGljIFBhc3NPd25QdHI8RWxlbWVudEF0dHJpYnV0ZURhdGE+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKTsKKyAgICB9
CiAKICAgICB2b2lkIGNsZWFyQ2xhc3MoKSB7IG1fY2xhc3NOYW1lcy5jbGVhcigpOyB9Ci0gICAg
dm9pZCBzZXRDbGFzcyhjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSwgYm9vbCBzaG91bGRG
b2xkQ2FzZSkgY29uc3QgeyBtX2NsYXNzTmFtZXMuc2V0KGNsYXNzTmFtZSwgc2hvdWxkRm9sZENh
c2UpOyB9CisgICAgdm9pZCBzZXRDbGFzcyhjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgYm9vbCBz
aG91bGRGb2xkQ2FzZSk7CiAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lczsgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBpZEZvclN0eWxlUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faWRGb3JTdHlsZVJlc29s
dXRpb247IH0KLSAgICB2b2lkIHNldElkRm9yU3R5bGVSZXNvbHV0aW9uKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SWQpIGNvbnN0IHsgbV9pZEZvclN0eWxlUmVzb2x1dGlvbiA9IG5ld0lkOyB9Cisg
ICAgdm9pZCBzZXRJZEZvclN0eWxlUmVzb2x1dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5ld0lk
KSB7IG1faWRGb3JTdHlsZVJlc29sdXRpb24gPSBuZXdJZDsgfQogCi0gICAgY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCogaW5saW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZVN0eWxlRGVj
bC5nZXQoKTsgfQogICAgIFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlKCkgeyByZXR1cm4g
bV9pbmxpbmVTdHlsZURlY2wuZ2V0KCk7IH0KICAgICBTdHlsZVByb3BlcnR5U2V0KiBlbnN1cmVJ
bmxpbmVTdHlsZShTdHlsZWRFbGVtZW50Kik7CiAgICAgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJl
TXV0YWJsZUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIHVwZGF0ZUlubGlu
ZVN0eWxlQXZvaWRpbmdNdXRhdGlvbihTdHlsZWRFbGVtZW50KiwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKLSAgICB2b2lkIGRlc3Ryb3lJbmxpbmVTdHlsZShTdHlsZWRFbGVtZW50KikgY29uc3Q7Cisg
ICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGUoU3R5bGVkRWxlbWVudCopOwogCiAgICAgU3R5bGVQ
cm9wZXJ0eVNldCogYXR0cmlidXRlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZVN0
eWxlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVTdHlsZShQYXNzUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHN0eWxlKSBjb25zdCB7IG1fYXR0cmlidXRlU3R5bGUgPSBzdHlsZTsgfQor
ICAgIHZvaWQgc2V0QXR0cmlidXRlU3R5bGUoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSkgeyBtX2F0dHJpYnV0ZVN0eWxlID0gc3R5bGU7IH0KIAotICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBzaXplX3QgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5pc0VtcHR5KCk7IH0KIAogICAgIFBhc3NSZWZQ
dHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJpbmcmLCBib29sIHNob3VsZElnbm9y
ZUF0dHJpYnV0ZUNhc2UsIEVsZW1lbnQqKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdl
dEF0dHJpYnV0ZU5vZGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEVsZW1lbnQqKSBjb25zdDsKIAog
ICAgIC8vIEludGVybmFsIGludGVyZmFjZS4KLSAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIGNvbnN0IEF0dHJpYnV0ZSogZ2V0QXR0
cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgQXR0cmlidXRlKiBh
dHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KTsKLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJp
YnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVzW2luZGV4XTsgfQorICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVy
biBmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBuYW1lKTsgfQogICAgIHNpemVf
dCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAg
IHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OwogCkBAIC05Nyw4MyArOTUsNDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VxdWl2YWxlbnQoY29uc3QgRWxlbWVudEF0dHJpYnV0
ZURhdGEqIG90aGVyKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QXR0cihFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIEF0dHIqKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZUF0dHIoRWxlbWVu
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGF0
dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIFBh
c3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OworICAgIHZvaWQgc2V0QXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IEF0dHIqKTsKKyAgICB2b2lkIHJlbW92ZUF0dHIoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICBQYXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvPEVsZW1lbnRBdHRyaWJ1dGVEYXRhPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgaW5mby5yZXBv
cnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW5saW5lU3R5bGVEZWNsLmdldCgpKTsKLSAgICAgICAg
aW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlU3R5bGUuZ2V0KCkpOwot
ICAgICAgICBpbmZvLnJlcG9ydE9iamVjdChtX2NsYXNzTmFtZXMpOwotICAgICAgICBpbmZvLnJl
cG9ydE9iamVjdChtX2lkRm9yU3R5bGVSZXNvbHV0aW9uKTsKLSAgICAgICAgaWYgKG1faXNNdXRh
YmxlKQotICAgICAgICAgICAgaW5mby5yZXBvcnRQb2ludGVyKG1fbXV0YWJsZUF0dHJpYnV0ZVZl
Y3Rvcik7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5y
ZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW5saW5lU3R5bGVEZWNsLmdldCgpKTsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2F0dHJpYnV0
ZVN0eWxlLmdldCgpKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1f
Y2xhc3NOYW1lcyk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2lk
Rm9yU3R5bGVSZXNvbHV0aW9uKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0KG1fYXR0cmlidXRlcyk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBF
bGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZTsKIAotICAgIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKCk7Ci0gICAgRWxlbWVudEF0dHJpYnV0ZURhdGEoY29uc3QgRWxl
bWVudEF0dHJpYnV0ZURhdGEmKTsKLSAgICBFbGVtZW50QXR0cmlidXRlRGF0YShjb25zdCBWZWN0
b3I8QXR0cmlidXRlPiYpOworICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKCkKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0
dHJpYnV0ZVZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogCiAgICAgdm9p
ZCBkZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50KEVsZW1lbnQqKTsKLSAgICBBdHRyaWJ1dGUq
IGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UpOwotICAgIGNvbnN0IEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3Q7CisgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICBz
aXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OwogICAgIHZvaWQgY2xv
bmVEYXRhRnJvbShjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSYgc291cmNlRGF0YSwgY29uc3Qg
RWxlbWVudCYgc291cmNlRWxlbWVudCwgRWxlbWVudCYgdGFyZ2V0RWxlbWVudCk7CiAgICAgdm9p
ZCBjbGVhckF0dHJpYnV0ZXMoRWxlbWVudCopOwogICAgIHZvaWQgcmVwbGFjZUF0dHJpYnV0ZShz
aXplX3QgaW5kZXgsIGNvbnN0IEF0dHJpYnV0ZSYsIEVsZW1lbnQqKTsKIAotICAgIGJvb2wgaXNN
dXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc011dGFibGU7IH0KLSAgICBQYXNzT3duUHRyPEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhPiBtYWtlTXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBFbGVtZW50QXR0cmlidXRlRGF0YSgqdGhpcykpOyB9Ci0KLSAgICBBdHRyaWJ1dGUqIGFy
cmF5KCk7Ci0gICAgY29uc3QgQXR0cmlidXRlKiBhcnJheSgpIGNvbnN0OwotCi0gICAgbXV0YWJs
ZSBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9pbmxpbmVTdHlsZURlY2w7Ci0gICAgbXV0YWJs
ZSBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9hdHRyaWJ1dGVTdHlsZTsKLSAgICBtdXRhYmxl
IFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwotICAgIG11dGFibGUgQXRvbWljU3RyaW5n
IG1faWRGb3JTdHlsZVJlc29sdXRpb247Ci0KLSAgICB1bnNpZ25lZCBtX2lzTXV0YWJsZSA6IDE7
Ci0gICAgdW5zaWduZWQgbV9hcnJheVNpemUgOiAzMTsKLQotICAgIHVuaW9uIHsKLSAgICAgICAg
VmVjdG9yPEF0dHJpYnV0ZSwgND4qIG1fbXV0YWJsZUF0dHJpYnV0ZVZlY3RvcjsKLSAgICAgICAg
dm9pZCogbV9hdHRyaWJ1dGVzOwotICAgIH07CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IG1faW5saW5lU3R5bGVEZWNsOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX2F0dHJp
YnV0ZVN0eWxlOworICAgIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOworICAgIEF0b21p
Y1N0cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1f
YXR0cmlidXRlczsKIH07CiAKLWlubGluZSBzaXplX3QgRWxlbWVudEF0dHJpYnV0ZURhdGE6Omxl
bmd0aCgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTXV0YWJsZSgpKQotICAgICAgICByZXR1cm4gbV9t
dXRhYmxlQXR0cmlidXRlVmVjdG9yLT5zaXplKCk7Ci0gICAgcmV0dXJuIG1fYXJyYXlTaXplOwot
fQotCi1pbmxpbmUgYm9vbCBFbGVtZW50QXR0cmlidXRlRGF0YTo6aXNFbXB0eSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFsZW5ndGgoKTsKLX0KLQotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmFycmF5KCkKLXsKLSAgICAvLyBGSVhNRTogSXQgZG9lc24ndCByZWFsbHkg
bWFrZSBzZW5zZSB0byBoYXZlIGEgbm9uLWNvbnN0IGFycmF5KCksIGF0IGxlYXN0IG5vdCBpbiB0
aGUgaGVhZGVyIGZpbGUuCi0gICAgQVNTRVJUKCFpc011dGFibGUoKSk7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8QXR0cmlidXRlKj4oJm1fYXR0cmlidXRlcyk7Ci19Ci0KLWlubGluZSBj
b25zdCBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjphcnJheSgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKCFpc011dGFibGUoKSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgQXR0cmlidXRlKj4oJm1fYXR0cmlidXRlcyk7Ci19Ci0KIGlubGluZSB2b2lkIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVt
SW5kZXgobmFtZSk7CkBAIC0xODEsMjggKzE0MiwyMSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50QXR0
cmlidXRlRGF0YTo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEVs
ZQogICAgICAgICByZXR1cm47CiAKICAgICByZW1vdmVBdHRyaWJ1dGUoaW5kZXgsIGVsZW1lbnQp
OworICAgIHJldHVybjsKIH0KIAotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0dHJpYnV0ZURh
dGE6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpCitpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50QXR0cmlidXRl
RGF0YTo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGJvb2wgc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICBzaXplX3QgaW5kZXggPSBnZXRB
dHRyaWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7CiAgICAg
aWYgKGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlSXRlbShpbmRl
eCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBjb25zdCBBdHRyaWJ1dGUqIEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Ym9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAotewotICAgIHNpemVfdCBpbmRl
eCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVJ
dGVtKGluZGV4KTsKKyAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVE
YXRhKj4odGhpcyktPm1fYXR0cmlidXRlc1tpbmRleF07CiAgICAgcmV0dXJuIDA7CiB9CiAKIGlu
bGluZSBzaXplX3QgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVJdGVtKGkpLT5u
YW1lKCkubWF0Y2hlcyhuYW1lKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdHRy
aWJ1dGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuYXQoaSkubmFt
ZSgpLm1hdGNoZXMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9CiAgICAgcmV0
dXJuIG5vdEZvdW5kOwpAQCAtMjE3LDkgKzE3MSw4IEBAIGlubGluZSBzaXplX3QgRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5h
CiAKICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGF0dHJpYnV0ZSBleGlz
dHMgYW5kIGl0cyBuYW1lIGV4YWN0bHkgbWF0Y2hlcy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBh
dHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICBpZiAoIWF0dHJpYnV0ZS0+bmFtZSgpLmhhc1ByZWZp
eCgpKSB7Ci0gICAgICAgICAgICBpZiAobmFtZSA9PSBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpKQor
ICAgICAgICBpZiAoIW1fYXR0cmlidXRlc1tpXS5uYW1lKCkuaGFzUHJlZml4KCkpIHsKKyAgICAg
ICAgICAgIGlmIChuYW1lID09IG1fYXR0cmlidXRlc1tpXS5sb2NhbE5hbWUoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkb1Nsb3dDaGVj
ayA9IHRydWU7CkBAIC0yMzAsNDAgKzE4Myw2IEBAIGlubGluZSBzaXplX3QgRWxlbWVudEF0dHJp
YnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hCiAg
ICAgcmV0dXJuIG5vdEZvdW5kOwogfQogCi1pbmxpbmUgY29uc3QgQXR0cmlidXRlKiBFbGVtZW50
QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVJdGVtKGkpLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAg
ICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVJdGVtKGkpOwotICAgIH0KLSAgICByZXR1cm4gMDsK
LX0KLQotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgewotICAgICAgICBpZiAoYXR0cmlidXRlSXRlbShpKS0+
bmFtZSgpLm1hdGNoZXMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlSXRlbShp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBjb25zdCBBdHRyaWJ1dGUqIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhOjphdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ewotICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKLSAgICBpZiAoaXNNdXRhYmxlKCkpCi0g
ICAgICAgIHJldHVybiAmbV9tdXRhYmxlQXR0cmlidXRlVmVjdG9yLT5hdChpbmRleCk7Ci0gICAg
cmV0dXJuICZhcnJheSgpW2luZGV4XTsKLX0KLQotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi17Ci0gICAgQVNTRVJU
KGluZGV4IDwgbGVuZ3RoKCkpOwotICAgIGlmIChpc011dGFibGUoKSkKLSAgICAgICAgcmV0dXJu
ICZtX211dGFibGVBdHRyaWJ1dGVWZWN0b3ItPmF0KGluZGV4KTsKLSAgICByZXR1cm4gJmFycmF5
KClbaW5kZXhdOwotfQotCiB9CiAKICNlbmRpZiAvLyBFbGVtZW50QXR0cmlidXRlRGF0YV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDZmMTEzYjNh
M2YwMjZiMjlmY2UxYWJmYzY5OTNmODg2ZmY2ZGQzNC4uN2EwZDQxYzUwNTBiMDkxMWRmYjQ0NTgz
MjVhMzg5MTc1ZWMxNWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUlu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uaApAQCAtODEsNyArODEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwor
ICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOworCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgICAgY2xhc3MgSW5zdHJ1bWVudGVkUG9pbnRlciA6IHB1YmxpYyBJbnN0cnVtZW50
ZWRQb2ludGVyQmFzZSB7CiAgICAgcHVibGljOgpAQCAtMTA3LDE1ICsxMDgsMjkgQEAgcHVibGlj
OgogICAgICAgICAsIG1fb2JqZWN0U2l6ZSgwKQogICAgICB7IH0KIAotICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3RUeXBlOyB9Ci0gICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25zdCB7IHJldHVybiBtX29iamVj
dFNpemU7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lkIHJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIoY29uc3QgUCogbWVtYmVyUG9pbnRlcikKKyAgICB7CisgICAgICAgIG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1lbWJlclBv
aW50ZXIpOworICAgIH0KIAotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1
bWVudGF0aW9uKCkgeyByZXR1cm4gbV9tZW1vcnlJbnN0cnVtZW50YXRpb247IH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgUCogcG9pbnRl
ciwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgewor
ICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0UG9pbnRlcihwb2ludGVyLCBv
YmplY3RUeXBlKTsKKyAgICB9CiAKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGZyaWVuZCBjbGFzcyBNZW1vcnlDbGFzc0luZm87CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgbWVtYmVyT2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1l
bnRlZE9iamVjdChtZW1iZXJPYmplY3QpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIHZvaWQgcmVwb3J0T2JqZWN0KGNvbnN0IFQmIG9iamVjdCkgeyBtX21lbW9yeUlu
c3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9iamVjdCk7IH0KIAotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIHJlcG9ydE9iamVjdEluZm8oY29uc3QgVCosIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUpCiAgICAgewogICAgICAgICBpZiAobV9vYmplY3RU
eXBlICE9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMjMsNDEgKzEzOCw0NCBAQCBwcml2YXRlOgogICAgICAgICBtX29iamVjdFNpemUgPSBz
aXplb2YoVCk7CiAgICAgfQogCi0gICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX21lbW9yeUlu
c3RydW1lbnRhdGlvbjsKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgbV9v
YmplY3RUeXBlOwotICAgIHNpemVfdCBtX29iamVjdFNpemU7Ci19OworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBIYXNoTWFwVHlwZT4KKyAgICB2b2lkIHJlcG9ydEhhc2hNYXAoY29uc3QgSGFzaE1h
cFR5cGUmIG1hcCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRIYXNoTWFwKG1hcCwgb2JqZWN0VHlwZSgpLCB0cnVlKTsKKyAgICB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgTWVtb3J5Q2xhc3NJbmZvIHsKLXB1YmxpYzoKLSAgICBNZW1vcnlD
bGFzc0luZm8oTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29uc3QgVCogcHRy
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkKLSAgICAgICAg
OiBtX21lbW9yeU9iamVjdEluZm8obWVtb3J5T2JqZWN0SW5mbykKLSAgICAgICAgLCBtX21lbW9y
eUluc3RydW1lbnRhdGlvbihtZW1vcnlPYmplY3RJbmZvLT5tZW1vcnlJbnN0cnVtZW50YXRpb24o
KSkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+CisgICAgdm9pZCByZXBvcnRI
YXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpCiAgICAgewotICAgICAgICBtX21lbW9yeU9i
amVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8ocHRyLCBvYmplY3RUeXBlKTsKLSAgICAgICAgbV9v
YmplY3RUeXBlID0gbWVtb3J5T2JqZWN0SW5mby0+b2JqZWN0VHlwZSgpOworICAgICAgICBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0SGFzaFNldChzZXQsIG9iamVjdFR5cGUoKSwgdHJ1
ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+IHZvaWQgdmlzaXRCYXNlQ2xh
c3MoY29uc3QgUCogcHRyKSB7IHB0ci0+UDo6cmVwb3J0TWVtb3J5VXNhZ2UobV9tZW1vcnlPYmpl
Y3RJbmZvKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+CisgICAg
dm9pZCByZXBvcnRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5cGUmIHNldCkKKyAgICB7
CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRMaXN0SGFzaFNldChzZXQs
IG9iamVjdFR5cGUoKSwgdHJ1ZSk7CisgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1lbWJl
clBvaW50ZXIpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+IHZvaWQgcmVwb3J0SW5zdHJ1
bWVudGVkT2JqZWN0KGNvbnN0IE8mIG1lbWJlck9iamVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRh
dGlvbi0+cmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KG1lbWJlck9iamVjdCk7IH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4KKyAgICB2b2lkIHJlcG9ydFZlY3Rvcihjb25zdCBW
ZWN0b3JUeXBlJiB2ZWN0b3IpCisgICAgeworICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi0+cmVwb3J0VmVjdG9yKHZlY3Rvciwgb2JqZWN0VHlwZSgpLCB0cnVlKTsKKyAgICB9CiAKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4gdm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IFAqIHBvaW50
ZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFBvaW50ZXIocG9pbnRlciwgbV9v
YmplY3RUeXBlKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPPiB2b2lkIHJlcG9ydE9iamVj
dChjb25zdCBPJiBvYmplY3QpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydE9iamVj
dChvYmplY3QpOyB9CisgICAgdm9pZCByZXBvcnRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CisgICAgeworICAgICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U3RyaW5nKG9i
amVjdFR5cGUoKSwgc3RyaW5nKTsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFz
aE1hcFR5cGU+IHZvaWQgcmVwb3J0SGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0
cnVlKTsgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCByZXBvcnRI
YXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PnJlcG9ydEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCByZXBvcnRMaXN0SGFzaFNldChjb25zdCBM
aXN0SGFzaFNldFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0TGlz
dEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFZlY3RvclR5cGU+IHZvaWQgcmVwb3J0VmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3Rv
cikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0VmVjdG9yKHZlY3RvciwgbV9vYmpl
Y3RUeXBlLCB0cnVlKTsgfQorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBv
YmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBlOyB9CisgICAgc2l6ZV90IG9i
amVjdFNpemUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0KIAotICAgIHZvaWQgcmVw
b3J0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5yZXBvcnRTdHJpbmcobV9vYmplY3RUeXBlLCBzdHJpbmcpOyB9CisgICAgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbjsgfQogCi1wcml2YXRlOgotICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5
T2JqZWN0SW5mbzsKKyBwcml2YXRlOgogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1v
cnlJbnN0cnVtZW50YXRpb247CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBl
IG1fb2JqZWN0VHlwZTsKKyAgICBzaXplX3QgbV9vYmplY3RTaXplOwogfTsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOTM0ODFhMzNiOTE5MGI5MjU5OTIwYTJj
NGViNTIxMWZhNjRiODY1Ny4uOWQ4M2M5N2U5NTdlZDQ5MThhNjNmZmZkMzBlZTFlNDg2NTkyZDE3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjgwMSwxMiArMjgwMSwxMiBAQCB2b2lkIE5vZGU6OnJl
bW92ZWRMYXN0UmVmKCkKIAogdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewotICAgIE1lbW9yeUNsYXNzSW5mbzxO
b2RlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
RE9NKTsKLSAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVy
Tm9kZT4gPih0aGlzKTsKLSAgICBpbmZvLnZpc2l0QmFzZUNsYXNzPFNjcmlwdFdyYXBwYWJsZT4o
dGhpcyk7Ci0gICAgaW5mby5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fZG9jdW1lbnQpOwot
ICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX25leHQpOwotICAgIGluZm8ucmVw
b3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAg
ICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV9k
b2N1bWVudCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9uZXh0KTsKKyAgICBtZW1vcnlPYmplY3RJ
bmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fcHJldmlvdXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCAyODQ1ZTc3
NTlhZjUwMDMyMzczYjQxNDQ4YzE5MjZhYTdlYTdlNjcyLi4xOTA3Yjg3NzRiNjdjZTE5MDg1ZTlj
YTZjZjVkMzlmZDRjM2I0NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTUy
LDExICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICB7Ci0gICAg
ICAgICAgICBNZW1vcnlDbGFzc0luZm88UXVhbGlmaWVkTmFtZUltcGw+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwotICAgICAgICAgICAg
aW5mby5yZXBvcnRPYmplY3QobV9wcmVmaXgpOwotICAgICAgICAgICAgaW5mby5yZXBvcnRPYmpl
Y3QobV9sb2NhbE5hbWUpOwotICAgICAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9uYW1lc3Bh
Y2UpOwotICAgICAgICAgICAgaW5mby5yZXBvcnRPYmplY3QobV9sb2NhbE5hbWVVcHBlcik7Cisg
ICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJl
cG9ydE9iamVjdChtX3ByZWZpeCk7CisgICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3QobV9sb2NhbE5hbWUpOworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0T2JqZWN0KG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJl
cG9ydE9iamVjdChtX2xvY2FsTmFtZVVwcGVyKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6CiAg
ICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkpCkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7
Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbzxRdWFsaWZpZWROYW1lPiBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKLSAgICAgICAgaW5mby5y
ZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW1wbCk7CisgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwor
ICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW1w
bCk7CiAgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTIx
ZTUyNjYwNjgwZWE2Y2IzMDliY2NjZTU3MzVlOTg0YzU1NzQ2OC4uYTY3MzM1MTZkMDU3MzFjYjdh
YWY0Zjg1NmJhMTliMmQ1NThjZWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIFN0eWxlZEVsZW1lbnQ6On5TdHlsZWRFbGVtZW50KCkKIAog
Q1NTU3R5bGVEZWNsYXJhdGlvbiogU3R5bGVkRWxlbWVudDo6c3R5bGUoKQogewotICAgIHJldHVy
biBlbnN1cmVJbmxpbmVTdHlsZSgpLT5lbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKHRo
aXMpOworICAgIHJldHVybiBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxp
bmVTdHlsZSh0aGlzKS0+ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbih0aGlzKTsgCiB9
CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNsYXNz
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAg
ICAgICBpZiAoRE9NVG9rZW5MaXN0KiBjbGFzc0xpc3QgPSBvcHRpb25hbENsYXNzTGlzdCgpKQog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2xhc3NMaXN0Kj4oY2xhc3NMaXN0KS0+cmVzZXQobmV3
Q2xhc3NTdHJpbmcpOwogICAgIH0gZWxzZQotICAgICAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgp
LT5jbGVhckNsYXNzKCk7CisgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+Y2xlYXJDbGFzcygpOwog
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIApAQCAtMjEwLDIxICsyMTAsMjEgQEAgdm9p
ZCBTdHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogICAgIAogYm9vbCBTdHlsZWRF
bGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQogewotICAgIGVuc3VyZUlubGluZVN0eWxl
KCktPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KTsKKyAgICBlbnN1cmVBdHRyaWJ1dGVEYXRh
KCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKS0+c2V0UHJvcGVydHkocHJvcGVydHlJ
RCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpLCBpbXBv
cnRhbnQpOwogICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMg
dW5pdCwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgZW5zdXJlSW5saW5lU3R5bGUoKS0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUsIHVuaXQp
LCBpbXBvcnRhbnQpOworICAgIGVuc3VyZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlTXV0YWJsZUlu
bGluZVN0eWxlKHRoaXMpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZSh2YWx1ZSwgdW5pdCksIGltcG9ydGFudCk7CiAgICAgaW5saW5lU3R5bGVDaGFu
Z2VkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIGJvb2wgY2hhbmdlcyA9IGVuc3VyZUlubGlu
ZVN0eWxlKCktPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGRvY3Vt
ZW50KCktPmVsZW1lbnRTaGVldCgpLT5jb250ZW50cygpKTsKKyAgICBib29sIGNoYW5nZXMgPSBl
bnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgZG9jdW1lbnQoKS0+ZWxlbWVu
dFNoZWV0KCktPmNvbnRlbnRzKCkpOwogICAgIGlmIChjaGFuZ2VzKQogICAgICAgICBpbmxpbmVT
dHlsZUNoYW5nZWQoKTsKICAgICByZXR1cm4gY2hhbmdlczsKQEAgLTIzMiw5ICsyMzIsMTAgQEAg
Ym9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW4KIAogYm9vbCBTdHlsZWRFbGVtZW50OjpyZW1vdmVJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKLSAgICBpZiAoIWF0
dHJpYnV0ZURhdGEoKSB8fCAhYXR0cmlidXRlRGF0YSgpLT5pbmxpbmVTdHlsZSgpKQorICAgIFN0
eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gYXR0cmlidXRlRGF0YSgpID8gYXR0cmlidXRl
RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMDsKKyAgICBpZiAoIWlubGluZVN0eWxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjaGFuZ2VzID0gbXV0YWJsZUF0dHJpYnV0ZURhdGEo
KS0+aW5saW5lU3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgYm9vbCBj
aGFuZ2VzID0gaW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgIGlm
IChjaGFuZ2VzKQogICAgICAgICBpbmxpbmVTdHlsZUNoYW5nZWQoKTsKICAgICByZXR1cm4gY2hh
bmdlczsKQEAgLTI0Miw3ICsyNDMsNyBAQCBib29sIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZUlubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogCiB2b2lkIFN0eWxlZEVs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJs
cykgY29uc3QKIHsKLSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUg
PSBhdHRyaWJ1dGVEYXRhKCkgPyBhdHRyaWJ1dGVEYXRhKCktPmlubGluZVN0eWxlKCkgOiAwKQor
ICAgIGlmIChTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGF0dHJpYnV0ZURhdGEoKSA/
IGF0dHJpYnV0ZURhdGEoKS0+aW5saW5lU3R5bGUoKSA6IDApCiAgICAgICAgIGlubGluZVN0eWxl
LT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQo
KS0+Y29udGVudHMoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDBm
NjFkMWM2NmIzZTE2NzY4YThhZmM0MDU3MmY0MmFhNTA3OWJlZmMuLmFiZDQ5YWRjN2NmYTBmMWU1
ZGIxMTBkY2RmMzE4ZWU4ZTYyNDYzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKTsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gYXR0cmlidXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5pbmxpbmVTdHlsZSgp
IDogMDsgfQotICAgIFN0eWxlUHJvcGVydHlTZXQqIGVuc3VyZUlubGluZVN0eWxlKCkgeyByZXR1
cm4gbXV0YWJsZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKHRoaXMp
OyB9CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJlSW5saW5lU3R5bGUoKSB7IHJl
dHVybiBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZUlubGluZVN0eWxlKHRoaXMpOyB9CiAg
ICAgCiAgICAgLy8gVW5saWtlIFN0eWxlUHJvcGVydHlTZXQgc2V0dGVycywgdGhlc2UgaW1wbGVt
ZW50IGludmFsaWRhdGlvbi4KICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmlu
ZGV4IGQ0MDY2N2NlNTAxZjllZDZhNGQ5Y2Y4YTRkODZiODVjYTcxYTNmNmYuLjRkYTdhN2FlOWM2
MTJlMDVkYmM3NDYyZGY0NGE2MDQ2OTdjMzM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTQzOCwxMSArNDM4LDgg
QEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVs
ZW1lbnRGcm9tU2F2ZWRFbGVtZW50KEVsZW0KICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpKTsgLy8gb3RoZXJ3aXNlIGxvY2FsTmFtZSgpIG1pZ2h0IGJlIHdyb25nLgogCiAgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gY2xvbmVkQXR0cmlidXRlczsKLSAgICBpZiAoY29uc3QgRWxlbWVu
dEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbGVtZW50LT51cGRhdGVkQXR0cmlidXRl
RGF0YSgpKSB7Ci0gICAgICAgIGNsb25lZEF0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShhdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgY2xvbmVkQXR0
cmlidXRlcy51bmNoZWNrZWRBcHBlbmQoKmF0dHJpYnV0ZURhdGEtPmF0dHJpYnV0ZUl0ZW0oaSkp
OwotICAgIH0KKyAgICBpZiAoRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBl
bGVtZW50LT51cGRhdGVkQXR0cmlidXRlRGF0YSgpKQorICAgICAgICBjbG9uZWRBdHRyaWJ1dGVz
ID0gYXR0cmlidXRlRGF0YS0+Y2xvbmVkQXR0cmlidXRlVmVjdG9yKCk7CiAKICAgICBBdG9taWNI
VE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgZWxlbWVudC0+bG9j
YWxOYW1lKCksIGNsb25lZEF0dHJpYnV0ZXMpOwogICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVu
dChmYWtlVG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNo
YXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDQ0ZGMx
NmZiZmE4ZDE2MjZhZmQwZmRiZDIwM2IyZTY5Y2VmYjY1NGYuLjZjNDE1NGVkZTdhYzk3MjgyYjU0
NzY5NTgzOTMzYmY0NjYzZjE0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgK
QEAgLTExMyw4ICsxMTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAg
ICBNZW1vcnlDbGFzc0luZm88VHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+ID4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7
Ci0gICAgICAgIGluZm8ucmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX3BhcmVudCk7CisgICAg
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVt
ZW50ZWRQb2ludGVyKG1fcGFyZW50KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcAppbmRleCBjYmVjOGEw
ZTNkYzE4ZWRlYzc5OWRlMGQ5MThjMGU4OGM4ZWI1OWRiLi41OWQ5NDQ5MzQyMDExY2FjNDFmNWNh
ZjdhNWMyZTQwZTdmMzU1MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTEzOCw5ICsxMzgsOSBAQCBYTUxEb2N1bWVudFBh
cnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1l
bnQqIHBhcmVudAogCiAgICAgUVhtbFN0cmVhbU5hbWVzcGFjZURlY2xhcmF0aW9ucyBuYW1lc3Bh
Y2VzOwogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IGVsZW1TdGFjay5sYXN0KCk7ICFlbGVt
U3RhY2suaXNFbXB0eSgpOyBlbGVtU3RhY2sucmVtb3ZlTGFzdCgpKSB7Ci0gICAgICAgIGlmIChj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cnMgPSBlbGVtZW50LT51cGRhdGVkQXR0cmli
dXRlRGF0YSgpKSB7CisgICAgICAgIGlmIChFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cnMgPSBl
bGVtZW50LT51cGRhdGVkQXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAg
ICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0gInhtbG5zIikKICAgICAgICAgICAg
ICAgICAgICAgbV9kZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChhdHRyLT5wcmVmaXgoKSA9PSAieG1sbnMiKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>