<?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>101716</bug_id>
          
          <creation_ts>2012-11-08 23:36:22 -0800</creation_ts>
          <short_desc>REGRESSION(r134010): Broke the chromium windows build. (Requested by noel_ on #webkit).</short_desc>
          <delta_ts>2012-11-08 23:41:53 -0800</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>100426</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>alecflett</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762620</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 23:36:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134010 broke the build:
Broke the chromium windows build. (Requested by noel_ 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>762624</commentid>
    <comment_count>1</comment_count>
      <attachid>173216</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 23:37:02 -0800</bug_when>
    <thetext>Created attachment 173216
ROLLOUT of r134010

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>762627</commentid>
    <comment_count>2</comment_count>
      <attachid>173216</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 23:41:50 -0800</bug_when>
    <thetext>Comment on attachment 173216
ROLLOUT of r134010

Clearing flags on attachment: 173216

Committed r134022: &lt;http://trac.webkit.org/changeset/134022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762628</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 23:41:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173216</attachid>
            <date>2012-11-08 23:37:02 -0800</date>
            <delta_ts>2012-11-08 23:41:49 -0800</delta_ts>
            <desc>ROLLOUT of r134010</desc>
            <filename>bug-101716-20121109074323.patch</filename>
            <type>text/plain</type>
            <size>66738</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA1YzRiMmQzMTFkZjRi
ODc3Yjc1MWFiNTI2MGM2YmVmY2E3MWRlMS4uN2EyOWNjM2Y2NmY0MzQ4YjY2ZjU5N2QxNjViZDNl
NTAwMjEyYTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTExLTA4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTM0MDEwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMzQwMTAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMTcxNgorCisgICAgICAgIEJyb2tlIHRoZSBjaHJvbWl1bSB3aW5kb3dzIGJ1
aWxkLiAoUmVxdWVzdGVkIGJ5IG5vZWxfIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmdldE9iamVjdFN0b3Jl
SWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRh
dGE6OmNvbnRhaW5zSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0
YTo6ZmluZE9iamVjdFN0b3JlKToKKyAgICAgICAgKElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YTo6Y29udGFpbnNPYmplY3RTdG9yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhlc1JlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omdl
dEluZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Z2V0SW5kZXhJZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oOgorCiAyMDEyLTExLTA4ICBHcnplZ29yeiBDemFqa293c2tp
ICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBhIG1ldGhv
ZCB0byB0aGUgVGV4dENoZWNrZXJFbmNoYW50IGNsYXNzIHRvIGNoZWNrIHdoZXRoZXIgYW55IGRp
Y3Rpb25hcnkgaXMgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNlNzJkODVj
MjIxNGFlYjZjMGE1OTBmOGY2MWRhN2M5OGJjODhmYjcuLmQ1ODZmYmE0MzIyMzkyZGVjYmI3NTNj
YzRkYzBiNGEwMDE0ODFhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDkgQEAKKzIwMTItMTEtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQwMTAuCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNDAxMAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNzE2CisKKyAgICAgICAgQnJva2Ug
dGhlIGNocm9taXVtIHdpbmRvd3MgYnVpbGQuIChSZXF1ZXN0ZWQgYnkgbm9lbF8gb24KKyAgICAg
ICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjpwdXRXaXRoSW5kZXhLZXlzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2Vi
S2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6c2V0SW5kZXhlc1JlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUluZGV4KToKKyAg
ICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFz
ZUltcGw6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6
CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6
OnB1dFdpdGhJbmRleEtleXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJPYmplY3RTdG9yZUltcGw6OnNldEluZGV4ZXNSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJP
YmplY3RTdG9yZUltcGw6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorICAgICAgICAq
IHNyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbkltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oOgorICAgICAgICAqIHRlc3RzL0lEQlJlcXVl
c3RUZXN0LmNwcDoKKwogMjAxMi0xMS0wOCAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBzd2l0Y2ggZnJvbnRlbmQgdG8gdXNlIGludDY0
X3QtYmFzZWQgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkFueS5jcHAKaW5kZXggYzlkMzA2ZGYzYzY5YzU3ZTMzZTVkYTQxMDZiNjMzYmUzODUwM2MxZS4u
YzYwMzI1NWE3ZTdjMDhiMDc2NmEzNTVkMGY5ODVkZmZkYTEyMmFhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURC
T2JqZWN0U3RvcmUuaCIKLSNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxs
YmFja3MuaAppbmRleCBkMTUxMTQ1NGQ4MTg5NzBhMjNmNWRlZDhiNjIyODMwNzNjYjE4MjU0Li5k
ZmQ4ZTIwOTIwNGVjMGU0YmI5YWMyOTk5NzFjZjIyY2M0ZjFmMDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaApAQCAtMjksNiArMjksNyBA
QAogI2lmbmRlZiBJREJDYWxsYmFja3NfaAogI2RlZmluZSBJREJDYWxsYmFja3NfaAogCisjaW5j
bHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXku
aCIKQEAgLTQwLDcgKzQxLDYgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApp
bmRleCAyMGIwZmY4OWJhMWNhYjRhODk1MTI4ZjE0NDYyZmNkZjQyMzIyYTUzLi5mY2NiNDU2YzVk
NjhhMjE0NjdmNThmMDljZGM2MjdmYzMwZmQ5NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIklEQkFueS5oIgpAQCAtMTQzLDcgKzE0Miw3IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvCiAgICAgICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aChrZXlQYXRoU3RyaW5nKTsKICAg
ICB9CiAKLSAgICBpZiAoY29udGFpbnNPYmplY3RTdG9yZShuYW1lKSkgeworICAgIGlmIChtX21l
dGFkYXRhLmNvbnRhaW5zT2JqZWN0U3RvcmUobmFtZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
QEAgLTE4OSwxMyArMTg4LDEzIEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpbnQ2NCBvYmplY3RTdG9yZUlkID0gZmluZE9iamVjdFN0b3JlSWQobmFt
ZSk7CisgICAgaW50NjQgb2JqZWN0U3RvcmVJZCA9IG1fbWV0YWRhdGEuZmluZE9iamVjdFN0b3Jl
KG5hbWUpOwogICAgIGlmIChvYmplY3RTdG9yZUlkID09IElEQk9iamVjdFN0b3JlTWV0YWRhdGE6
OkludmFsaWRJZCkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfTk9U
X0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2VuZC0+ZGVs
ZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOworICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwg
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmICghZWMp
IHsKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRl
ZChuYW1lKTsKICAgICAgICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMucmVtb3ZlKG9iamVjdFN0
b3JlSWQpOwpAQCAtMjQ0LDIxICsyNDMsMTggQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3Jl
SWRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RvcmVOYW1lcy0+bGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBmaW5kT2JqZWN0U3RvcmVJZChz
dG9yZU5hbWVzLT5pdGVtKGkpKTsKLSAgICAgICAgaWYgKG9iamVjdFN0b3JlSWQgPT0gSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKSB7CisgICAgICAgIGlmICghbV9tZXRhZGF0YS5j
b250YWluc09iamVjdFN0b3JlKHN0b3JlTmFtZXMtPml0ZW0oaSkpKSB7CiAgICAgICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIG9iamVjdFN0b3JlSWRzLmFwcGVuZChvYmpl
Y3RTdG9yZUlkKTsKICAgICB9CiAKICAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyB0cmFu
c2FjdGlvbiBzeW5jaHJvbm91c2x5LiBMb2NrcyBhcmUgYWNxdWlyZWQgYXN5bmNocm9ub3VzbHku
IE9wZXJhdGlvbnMKICAgICAvLyBjYW4gYmUgcXVldWVkIGFnYWluc3QgdGhlIHRyYW5zYWN0aW9u
IGF0IGFueSBwb2ludC4gVGhleSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBhcyBzb29uIGFzIHRoZQog
ICAgIC8vIGFwcHJvcHJpYXRlIGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJlZC4KICAgICAvLyBBbHNv
IG5vdGUgdGhhdCBlYWNoIGJhY2tlbmQgb2JqZWN0IGNvcnJlc3BvbmRzIHRvIGV4YWN0bHkgb25l
IElEQlRyYW5zYWN0aW9uIG9iamVjdC4KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQtPnRyYW5zYWN0aW9uKG9i
amVjdFN0b3JlSWRzLCBtb2RlKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQtPnRyYW5zYWN0aW9uKHN0b3Jl
TmFtZXMuZ2V0KCksIG1vZGUsIGVjKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uQmFja2VuZCkgewog
ICAgICAgICBBU1NFUlQoZWMpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTM1OCwxNyArMzU0LDYg
QEAgYm9vbCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKICAgICByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOwog
fQogCi1pbnQ2NF90IElEQkRhdGFiYXNlOjpmaW5kT2JqZWN0U3RvcmVJZChjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0Ci17Ci0gICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9y
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigp
OyBpdCAhPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBp
ZiAoaXQtPnZhbHVlLm5hbWUgPT0gbmFtZSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5rZXkg
IT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKTsKLSAgICAgICAgICAgIHJldHVy
biBpdC0+a2V5OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBJREJPYmplY3RTdG9yZU1l
dGFkYXRhOjpJbnZhbGlkSWQ7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQogewogICAg
IEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNzljODczZDU2MjU0MjQ5NWE4YTYyNzFjNjYwMGZm
ODc3Zjg4NTFjOC4uNTgxNjE2NzNjNWIwMzQ5NmY2MDQwNzQ3ZjJlMmE1YTRlOGVjOWRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC05
MSwxOSArOTEsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKLSAgICBpbnQ2NF90IGZpbmRPYmplY3RTdG9yZUlkKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWluc09iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaW5kT2JqZWN0
U3RvcmVJZChuYW1lKSAhPSBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQ7Ci0gICAg
fQotCiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46OnJlZjsKICAgICB1c2luZyBS
ZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCi0KICAgICAv
LyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCBlOGUxNDNmNDc4ODRlMDA3YTFhMGVlZTQ0NWE4ZTc5Mzcx
YmQ4NDNjLi41YzdiYmQ4ZjY1NGEwMjJjYTEwMzI0MzdhZjU1MzYyZGQwMGUzMTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCkBA
IC0yMTEsNiArMjEyLDE2IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmUoaW50NjRfCiAgICAgcmV0dXJuIG1f
b2JqZWN0U3RvcmVzLmdldChpZCk7CiB9CiAKK2ludDY0X3QgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6Z2V0T2JqZWN0U3RvcmVJZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChPYmpl
Y3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBp
dCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnZhbHVl
LT5uYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBBU1NFUlQobV9vYmplY3RTdG9yZXMuY29udGFpbnMoaWQpKTsKQEAgLTI2Myw4ICsy
NzQsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRzOwotICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gdGhpcy0+dHJh
bnNhY3Rpb24ob2JqZWN0U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7
CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiB0cmFuc2FjdGlvbkludGVyZmFjZSA9IHRoaXMtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFt
ZXMuZ2V0KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgZWMpOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOwogICAgIEFTU0VS
VCghZWMpOwogCkBAIC00MjMsMTMgKzQzNCwxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgIEFTU0VSVChtX3BlbmRpbmdPcGVuQ2FsbHMu
aXNFbXB0eSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCitQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJh
bnNhY3Rpb24oRE9NU3RyaW5nTGlzdCosIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNv
ZGUmKQogewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlv
biA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZUlkcywgbW9k
ZSwgdGhpcyk7CisgICAgLy8gRklYTUU6IEZpcnN0IHBhcmFtZXRlciBpc24ndCB1c2VkIGZvciBh
bnl0aGluZyB5ZXQgYW55d2F5LCBhbmQgdGhpcyBtZXRob2QgaXMgZ29pbmcgYXdheS4KKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUoVmVjdG9yPGludDY0X3Q+KCksIG1vZGUsIHRoaXMpOwog
ICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIHRy
YW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCit7Cisg
ICAgcmV0dXJuIHRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKTsKK30KKwogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFz
ZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwpAQCAtNDc3
LDE1ICs0OTQsMTkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFZlY3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkczsKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkludGVyZmFjZSA9IHRy
YW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0Up
OworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5n
TGlzdDo6Y3JlYXRlKCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRlcmZhY2UgPSB0cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWVzLmdldCgpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UsIGVjKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJm
YWNlLmdldCgpKTsKKyAgICBBU1NFUlQoIWVjKTsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CiAgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGludFZlcnNpb25UYXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCByZXF1ZXN0
ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbik7CiAg
ICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHJlc2V0VmVyc2lvbk9uQWJv
cnRUYXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNl
dFZlcnNpb24sIGRhdGFiYXNlLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVy
c2lvbik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGludFZlcnNpb25UYXNr
LnJlbGVhc2UoKSwgcmVzZXRWZXJzaW9uT25BYm9ydFRhc2sucmVsZWFzZSgpKSkgeworICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgIH0KICAgICBBU1NFUlQoIW1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuV2l0aFZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRk
KGRhdGFiYXNlQ2FsbGJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCBmMGY0OTM4ZDE3YmVh
ZDhjZDFkNDI1NGEwNzk4YjZkNmRlMzZiMTRmLi44MTRmMWRlMjFkZmJhODk1Y2Q4NWVmZWRlZTQ3
NjI5MTE3YjQ4Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02MiwxMiArNjIsMTUgQEAgcHVi
bGljOgogICAgIC8vIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQogICAgIHZpcnR1YWwgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0
X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHJldHVybiBkZWxldGVPYmplY3RTdG9yZShnZXRPYmplY3RTdG9yZUlkKG5h
bWUpLCB0cmFuc2FjdGlvblB0ciwgZWMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RT
dG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQpOwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQp
OworICAgIGludDY0X3QgZ2V0T2JqZWN0U3RvcmVJZChjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICAgICB2b2lkIHRy
YW5zYWN0aW9uU3RhcnRlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsK
ICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDlhYWI1NjQ0YmE0
ODYzYzA3YTY3ZTQxZDkwN2Y0MWQxZDE4ZTQ4MzUuLjBjNTNjZDdjZjE1ODkxYzA1MTdmZDkzMjQz
OWNlMWI3YTE5MTk3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNs
YXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgSURC
S2V5UGF0aDsKQEAgLTU0LDggKzU1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihjb25zdCBWZWN0b3I8aW50NjRf
dD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKaW5kZXgg
YzNiMzMzNDYzMDFjYzcxZTZlMGIwYjVlY2FjMGE4YzY1MTUwNDg0ZS4uMWIwMzg0YmQ5NTY5MWU0
Y2ZhNzcxYzQxOTI4NTcyYzljMmIxNjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC03Niw2ICs3NiwxNCBAQCBzdHJ1Y3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQkluZGV4
TWV0YWRhdGE+IEluZGV4TWFwOwogICAgIEluZGV4TWFwIGluZGV4ZXM7CiAKKyAgICBib29sIGNv
bnRhaW5zSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgZm9y
IChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbmRleGVzLmJlZ2luKCk7IGl0ICE9IGlu
ZGV4ZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUubmFtZSA9PSBu
YW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiB9OwogCiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CkBA
IC0xMDAsNiArMTA4LDIyIEBAIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKICAgICB7CiAg
ICAgfQogCisgICAgaW50NjRfdCBmaW5kT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdAorICAgIHsKKyAgICAgICAgZm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBvYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0
KSB7CisgICAgICAgICAgICBpZiAoaXQtPnZhbHVlLm5hbWUgPT0gbmFtZSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChpdC0+a2V5ICE9IElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJ
ZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0LT5rZXk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZDsK
KyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbmRPYmplY3RTdG9yZShuYW1lKSAhPSBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQ7CisgICAgfQorCiAgICAgU3RyaW5nIG5h
bWU7CiAgICAgaW50NjRfdCBpZDsKICAgICBTdHJpbmcgdmVyc2lvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBmMTU3
OWQ5YjM3OTdiMzU0NmFlYTI3MzQ5Y2Q0YjBlY2JhNzM5MjYyLi5kOWQyZWMyODA0OTU5NGUyNzA4
OGQxZmZjZmQyMzIxNjk3NjUxNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yMDQsMTcgKzIwNCwxOCBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlOjpQdXRNbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBWZWN0
b3I8aW50NjRfdD4gaW5kZXhJZHM7CisgICAgVmVjdG9yPFN0cmluZz4gaW5kZXhOYW1lczsKICAg
ICBWZWN0b3I8SW5kZXhLZXlzPiBpbmRleEtleXM7CiAgICAgZm9yIChJREJPYmplY3RTdG9yZU1l
dGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMu
YmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IEluZGV4S2V5cyBrZXlzOwogICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKGl0LT52
YWx1ZSwgdmFsdWUsICZrZXlzKTsKLSAgICAgICAgaW5kZXhJZHMuYXBwZW5kKGl0LT5rZXkpOwor
ICAgICAgICBpbmRleE5hbWVzLmFwcGVuZChpdC0+dmFsdWUubmFtZSk7CiAgICAgICAgIGluZGV4
S2V5cy5hcHBlbmQoa2V5cyk7CiAgICAgfQorICAgIEFTU0VSVChpbmRleEtleXMuc2l6ZSgpID09
IGluZGV4TmFtZXMuc2l6ZSgpKTsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNvdXJjZSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7
Ci0gICAgbV9iYWNrZW5kLT5wdXQoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKSwga2V5LnJlbGVh
c2UoKSwgcHV0TW9kZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBpbmRleElk
cywgaW5kZXhLZXlzKTsKKyAgICBtX2JhY2tlbmQtPnB1dFdpdGhJbmRleEtleXMoc2VyaWFsaXpl
ZFZhbHVlLnJlbGVhc2UoKSwga2V5LnJlbGVhc2UoKSwgcHV0TW9kZSwgcmVxdWVzdCwgbV90cmFu
c2FjdGlvbi0+YmFja2VuZCgpLCBpbmRleE5hbWVzLCBpbmRleEtleXMsIGVjKTsKICAgICBBU1NF
UlQoIWVjKTsKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CkBAIC0zMTgsOCArMzE5
LDggQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGN1cnNvckFueS0+dHlwZSgpID09IElEQkFueTo6
SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkKICAgICAgICAgICAgIGN1cnNvciA9IGN1cnNvckFueS0+
aWRiQ3Vyc29yV2l0aFZhbHVlKCk7CiAKLSAgICAgICAgVmVjdG9yPGludDY0X3QsIDE+IGluZGV4
SWRzOwotICAgICAgICBpbmRleElkcy5hcHBlbmQobV9pbmRleE1ldGFkYXRhLmlkKTsKKyAgICAg
ICAgVmVjdG9yPFN0cmluZywgMT4gaW5kZXhOYW1lczsKKyAgICAgICAgaW5kZXhOYW1lcy5hcHBl
bmQobV9pbmRleE1ldGFkYXRhLm5hbWUpOwogICAgICAgICBpZiAoY3Vyc29yKSB7CiAgICAgICAg
ICAgICBjdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFl
Yyk7CkBAIC0zMzMsMTIgKzMzNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmVjdG9yPElE
Qk9iamVjdFN0b3JlOjpJbmRleEtleXMsIDE+IGluZGV4S2V5c0xpc3Q7CiAgICAgICAgICAgICBp
bmRleEtleXNMaXN0LmFwcGVuZChpbmRleEtleXMpOwogCi0gICAgICAgICAgICBtX29iamVjdFN0
b3JlQmFja2VuZC0+c2V0SW5kZXhLZXlzKHByaW1hcnlLZXksIGluZGV4SWRzLCBpbmRleEtleXNM
aXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIG1fb2JqZWN0U3RvcmVCYWNr
ZW5kLT5zZXRJbmRleEtleXMocHJpbWFyeUtleSwgaW5kZXhOYW1lcywgaW5kZXhLZXlzTGlzdCwg
bV90cmFuc2FjdGlvbi5nZXQoKSk7CiAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8v
IE5vdyB0aGF0IHdlIGFyZSBkb25lIGluZGV4aW5nLCB0ZWxsIHRoZSBiYWNrZW5kIHRvIGdvCiAg
ICAgICAgICAgICAvLyBiYWNrIHRvIHByb2Nlc3NpbmcgdGFza3Mgb2YgdHlwZSBOb3JtYWxUYXNr
LgotICAgICAgICAgICAgbV9vYmplY3RTdG9yZUJhY2tlbmQtPnNldEluZGV4ZXNSZWFkeShpbmRl
eElkcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBtX29iamVjdFN0b3JlQmFj
a2VuZC0+c2V0SW5kZXhlc1JlYWR5KGluZGV4TmFtZXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgICAgICAgICAgbV9vYmplY3RTdG9yZUJhY2tlbmQuY2xlYXIoKTsKICAgICAgICAgICAgIG1f
dHJhbnNhY3Rpb24uY2xlYXIoKTsKICAgICAgICAgfQpAQCAtMzgxLDcgKzM4Miw3IEBAIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0CiAgICAgICAgIGVjID0gTkFUSVZFX1RZUEVfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKGNvbnRhaW5zSW5kZXgobmFtZSkpIHsKKyAgICBp
ZiAobV9tZXRhZGF0YS5jb250YWluc0luZGV4KG5hbWUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CkBAIC00NDMsMTMgKzQ0NCwxMiBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIGlmIChp
dCAhPSBtX2luZGV4TWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwogCi0gICAg
aW50NjRfdCBpbmRleElkID0gZmluZEluZGV4SWQobmFtZSk7Ci0gICAgaWYgKGluZGV4SWQgPT0g
SURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CisgICAgaWYgKCFtX21ldGFkYXRhLmNvbnRh
aW5zSW5kZXgobmFtZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X05PVF9GT1VORF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+aW5kZXgo
aW5kZXhJZCk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNr
ZW5kID0gbV9iYWNrZW5kLT5pbmRleChuYW1lLCBlYyk7CiAgICAgQVNTRVJUKCFlYyAmJiBpbmRl
eEJhY2tlbmQpOwogCiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSogaW5kZXhNZXRhZGF0YSgw
KTsKQEAgLTQ3NiwxNCArNDc2LDE0IEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpbnQ2NF90IGluZGV4SWQgPSBmaW5kSW5kZXhJZChuYW1lKTsKLSAg
ICBpZiAoaW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKKyAgICBpZiAo
IW1fbWV0YWRhdGEuY29udGFpbnNJbmRleChuYW1lKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fYmFja2VuZC0+ZGVsZXRlSW5kZXgoaW5kZXhJZCwgbV90cmFuc2FjdGlvbi0+YmFj
a2VuZCgpLCBlYyk7CisgICAgbV9iYWNrZW5kLT5kZWxldGVJbmRleChuYW1lLCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoIWVjKSB7CisgICAgICAgIEFTU0VSVChtX21l
dGFkYXRhLmNvbnRhaW5zSW5kZXgobmFtZSkpOwogICAgICAgICBJREJJbmRleE1hcDo6aXRlcmF0
b3IgaXQgPSBtX2luZGV4TWFwLmZpbmQobmFtZSk7CiAgICAgICAgIGlmIChpdCAhPSBtX2luZGV4
TWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBtX21ldGFkYXRhLmluZGV4ZXMucmVtb3ZlKGl0LT52
YWx1ZS0+aWQoKSk7CkBAIC01NTgsMTYgKzU1OCw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OnRy
YW5zYWN0aW9uRmluaXNoZWQoKQogICAgIG1faW5kZXhNYXAuY2xlYXIoKTsKIH0KIAotaW50NjRf
dCBJREJPYmplY3RTdG9yZTo6ZmluZEluZGV4SWQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAot
ewotICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1fbWV0YWRhdGEuaW5k
ZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLm5hbWUgPT0gbmFtZSkg
ewotICAgICAgICAgICAgQVNTRVJUKGl0LT5rZXkgIT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxp
ZElkKTsKLSAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQ7Ci19CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKaW5kZXggOWNiMmFkNjMzZDNiYjM4N2NkYzA1NWJjZjRkODBhODFkYzc2MDRh
OS4uOWYwMjdlYTBjNjQ2MjhmNmRkZTA3MDEyMmRhMWE4ZmFlNmZlYjI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC02Niw5
ICs2Niw5IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIGFkZChjb250ZXh0LCB2YWx1ZSwgMCwgZWMpOyAgfQogICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1dChjb250
ZXh0LCB2YWx1ZSwgMCwgZWMpOyAgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDAp
LCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQoKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29y
KGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQorICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBz
dGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KDApLCBlYyk7IH0gCisgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4g
b3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCks
IGVjKTsgfSAKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRp
cmVjdGlvbk5leHQoKSwgZWMpOyB9IAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHJhbmdlLCBkaXJlY3Rpb24sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgZWMpOyB9CiAgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTo6VGFza1R5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCS2V5PiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTEwNSwxMiArMTA1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZShj
b25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogCi0gICAgaW50NjRfdCBmaW5kSW5k
ZXhJZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmluZEluZGV4
SWQobmFtZSkgIT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkOwotICAgIH0KLQogICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBiNTRmMDA4
YzY5ZTk3ZWFlYjkyYzJjNTgyMzdmYzY1MzQyZmE4OTYyLi40NjQwYzEzZGQyZTNjNzdiMmRlODBj
YzBkYjdhZGJmNTkwM2UwM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBW
YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewotICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Iik7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpwdXRXaXRoSW5kZXhLZXlzIik7CiAKICAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CkBAIC0xMjYsNiArMTI2LDEwIEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikp
OwogfQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dFdpdGhJbmRleEtleXMo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25Q
dHIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8SW5kZXhL
ZXlzPiYgaW5kZXhLZXlzLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICByZXR1cm4gcHV0KHBycFZh
bHVlLCBwcnBLZXksIHB1dE1vZGUsIHBycENhbGxiYWNrcywgdHJhbnNhY3Rpb25QdHIsIGdldElu
ZGV4SWRzKGluZGV4TmFtZXMpLCBpbmRleEtleXMpOworfQogbmFtZXNwYWNlIHsKIGNsYXNzIElu
ZGV4V3JpdGVyIHsKIHB1YmxpYzoKQEAgLTI1NSw2ICsyNTksMTIgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGMKICAgICB9CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0
SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW5kZXhOYW1lcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0cikKK3sKKyAgICBW
ZWN0b3I8aW50NjRfdD4gaW5kZXhJZHMgPSBnZXRJbmRleElkcyhpbmRleE5hbWVzKTsKKyAgICBy
ZXR1cm4gc2V0SW5kZXhLZXlzKHBycFByaW1hcnlLZXksIGluZGV4SWRzLCBpbmRleEtleXMsIHRy
YW5zYWN0aW9uUHRyKTsKK30KKwogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJ
bmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbkludGVyZmFjZSkKIHsKICAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFkeSIpOwpAQCAtMjY5
LDYgKzI3OSwyMiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNS
ZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLAogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mIGluZGV4TmFtZXMsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25JbnRlcmZhY2UpCit7CisgICAgVmVjdG9yPGlu
dDY0X3Q+IGluZGV4SWRzKGluZGV4TmFtZXMuc2l6ZSgpKTsKKyAgICAvLyBGSVhNRTogV2UgbWFu
dWFsbHkgY29udmVydCBlYWNoIG5hbWUgdG8gYW4gaW5kZXhJZCwgZXZlbiBpZiB0aGUgbmFtZSBo
YXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQsIGJlY2F1c2Ugd2UgaGF2ZSB0byByZW1vdmUgZXhhY3Rs
eSB0aGF0IG1hbnkgcHJlZW1wdGl2ZSBldmVudHMsIGJ1dCB0aGlzIHdpbGwgZ28gYXdheSB3aGVu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MjYgbGFuZHMuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleE5hbWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGluZGV4SWRzW2ldID0gSW52YWxpZElkOworICAgICAgICBmb3IgKEluZGV4TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBpbmRleE5hbWVz
W2ldKSB7CisgICAgICAgICAgICAgICAgaW5kZXhJZHNbaV0gPSBpdC0+a2V5OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBzZXRJbmRleGVzUmVhZHkoaW5kZXhJZHMsIHRyYW5zYWN0aW9uSW50ZXJmYWNlKTsKK30KKwog
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHlJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSwgUGFzc093blB0cjxWZWN0b3I8aW50NjRfdD4gPiBwb3BJbmRleElk
cywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNSZWFk
eUludGVybmFsIik7CkBAIC00NDQsNiArNDcwLDI5IEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmRleChpbnQ2NF90IGlu
CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgcmV0dXJuIGluZGV4KGdldEluZGV4
SWQobmFtZSkpOworfQorCitpbnQ2NF90IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldElu
ZGV4SWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytp
dCkgeworICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBpdC0+a2V5OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworVmVjdG9yPGludDY0X3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmdldEluZGV4SWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKK3sKKyAgICBWZWN0b3I8
aW50NjRfdD4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0SW5kZXhJZChuYW1lc1tpXSkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVs
ZXRlSW5kZXgoaW50NjRfdCBpbmRleElkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQobV9pbmRl
eGVzLmNvbnRhaW5zKGluZGV4SWQpKTsKQEAgLTQ2Miw2ICs1MTEsMTEgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IGluZGV4SWQsIElEQlRyYW5z
YWN0aW9uQmFja2UKICAgICBtX2luZGV4ZXMucmVtb3ZlKGluZGV4SWQpOwogfQogCit2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgcmV0dXJuIGRlbGV0ZUluZGV4KGdldEluZGV4SWQobmFtZSksIHRy
YW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKIHsKICAgICBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0
ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9y
ZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCmluZGV4IGNmZGUzYmU3YjM0NTFiYjJiNjMyNmVkYWI2MDdlZDI4MGI0
MzQyMDQuLmMyZWZkM2IwZTNhMjFiNjEyNGUwNDljYjAxMjBkN2JmMjRmNjhjOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmgKQEAgLTY0LDE1ICs2NCwyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHV0V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIFB1
dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRl
eEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8SW5k
ZXhLZXlzPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZpcnR1YWwg
dm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGludDY0X3QpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5k
ZXgoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkxLDYgKzk2LDkgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlLT5iYWNraW5nU3RvcmUoKTsgfQogICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2UtPmlkKCk7IH0KIAorICAgIGludDY0X3QgZ2V0
SW5kZXhJZChjb25zdCBTdHJpbmcmKTsKKyAgICBWZWN0b3I8aW50NjRfdD4gZ2V0SW5kZXhJZHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXgg
ODNiZGZkY2VkOTA2ZjBiYjc2MTU5ODNiYzIyNmYyZDJmMjNmOGE0OC4uOWFiZTg4M2NiYThlZWNk
MTQyYzBjYzljNjgwZTg2OGQ0YWFlYjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBE
T01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlOwogY2xhc3MgSURCS2V5OwpAQCAtNjEsMTUgKzYyLDIwIEBAIHB1YmxpYzoKIAog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gSW5kZXhLZXlzOwogCisgICAgdmly
dHVhbCB2b2lkIHB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBWZWN0
b3I8SW5kZXhLZXlzPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChpbnQ2NF90LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBy
cFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5
cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFk
eShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoaW50NjRfdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
SW5kZXgoaW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDUzMWYyZjA5MTU4YTI3NTY5NjVlNTEzYTM2YjZhMTJj
ZGI2NmZjZjguLjVkOGFjNWZjYTVmMWU1OTc5NDlhODZlYmQwNjI0ZmYyYTAzZTI5YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQlRy
YW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwCiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0KLSAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtX2RhdGFiYXNl
LT5maW5kT2JqZWN0U3RvcmVJZChuYW1lKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJZCAhPSBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOwotICAgIFJlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+b2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVJZCwgZWMpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+b2JqZWN0U3Rv
cmUobmFtZSwgZWMpOwogICAgIEFTU0VSVCghZWMgJiYgb2JqZWN0U3RvcmVCYWNrZW5kKTsKIAog
ICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhID0gbV9kYXRhYmFzZS0+bWV0
YWRhdGEoKTsKKyAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtZXRhZGF0YS5maW5kT2JqZWN0
U3RvcmUobmFtZSk7CisKKyAgICBBU1NFUlQob2JqZWN0U3RvcmVJZCAhPSBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhOjpJbnZhbGlkSWQpOwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmpl
Y3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWV0YWRhdGEub2JqZWN0U3RvcmVzLmdl
dChvYmplY3RTdG9yZUlkKSwgb2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsKICAgICBvYmplY3RT
dG9yZUNyZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cAppbmRleCBlMzcyNjJhNGYyNDliNDBjMTNhYzJiMjBjMzQ0NzRhNTI4MzMyYmFhLi5lMTY1MmQ2
OTVkZjg1MzQxYjM2MDg2ZDg2NzliMTM3NDQwMmZmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsLmNwcApAQCAtNzYsNiArNzYsMTEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om9iamVjdFN0b3IKICAgICBy
ZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICByZXR1cm4g
b2JqZWN0U3RvcmUobV9kYXRhYmFzZS0+Z2V0T2JqZWN0U3RvcmVJZChuYW1lKSwgZWMpOworfQor
CiBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0
eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIFBhc3NP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrKQogewogICAgIGlm
IChtX3N0YXRlID09IEZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IGU2MjRl
ZDQwYzU4ZjlmOTYwYWNiNjQ5MjRhMWU0M2Q3ZDFjYTNkMGUuLjRlNGRkZWNjMTEyMzY5NmNhNDY1
NzUzZGI1ZjEyOTJiYzNjZTM2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwo
KTsKIAogICAgIC8vIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGludDY0X3QsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7
CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IDJmNGNmMzI3YTBiODE2OWZhYTUzN2Y0ZjVlMzVkNTkzYjUxMWJjYTkuLmQxMWUx
ODExY2U0MzViZjY3ZjA4MzNkM2U1NTgwNmI4ODdjZTRlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJlZW1w
dGl2ZVRhc2sKICAgICB9OwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGludDY0X3QsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDgxY2I1NDllNTQ3NzU5ZjM0MWUxMTQzOWI1ODk3OGUx
MzAwZTJiMDcuLjQyYWM3NmJhNTU3MjFkYmI5YzFhMjE5NDNhNjM5OGI2ODZmMjY1NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVk
ZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IGY3YjllZGMzZTUzMWE4
YmRjZWVlOTMzODc1ZmVlZDRlOGQwMzU0YjIuLmY2ZDk2NDQ3MGVmYjQxNTE0NGZkYzFkMDQwODI5
MDljZGNkOGU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTk5LDYgKzk5LDE3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBu
ZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKK1Bhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgV2ViRE9NU3RyaW5nTGlzdCBuYW1lcyhzdG9y
ZU5hbWVzKTsKKyAgICBPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gYWRv
cHRQdHIobV93ZWJJREJEYXRhYmFzZS0+dHJhbnNhY3Rpb24obmFtZXMsIG1vZGUsIGVjKSk7Cisg
ICAgaWYgKCF0cmFuc2FjdGlvbikgeworICAgICAgICBBU1NFUlQoZWMpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVh
dGUodHJhbnNhY3Rpb24ucmVsZWFzZSgpKTsKK30KKwogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp0cmFuc2FjdGlvbihj
b25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
KQogewogICAgIE93blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBhZG9wdFB0
cihtX3dlYklEQkRhdGFiYXNlLT50cmFuc2FjdGlvbihvYmplY3RTdG9yZUlkcywgbW9kZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmgKaW5kZXggM2RjYzI5NWYyMWVmZjliM2MxMTEzYzAyYzUzZWFlMTBjOTUwYmQ1NC4uOTE2
ZjgzM2FiN2VmYmZjZDQwNjYxZWRhNzdmYTlhYzk1MzhkYzQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00OCw2
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3QsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBz
dG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgdW5zaWduZWQgc2hv
cnQgbW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
RGF0YWJhc2VDYWxsYmFja3M+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IDhlODlkZWIwMzNm
M2RlYzk4OGFhNjdhYzNjZGU0YTVkOTY5NWZiZmQuLjZhMGQwMjc3MmI4NDRjN2VmNmFjMjBmYmNl
YzNjYzMxZDFmMzYxNDIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTY3LDYgKzY3LDE2IEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgUGFzc1JlZlB0CiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Z2V0KGtleVJh
bmdlLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5OjpwdXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUHV0TW9kZSBwdXRNb2RlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5kZXhOYW1lcywg
Y29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBv
aW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwg
aW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAg
IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nh
c3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgV2ViVmVj
dG9yPFdlYlN0cmluZz4gd2ViSW5kZXhOYW1lcyhpbmRleE5hbWVzKTsKKyAgICBXZWJWZWN0b3I8
SW5kZXhLZXlzPiB3ZWJJbmRleEtleXMoaW5kZXhLZXlzKTsKKyAgICBtX3dlYklEQk9iamVjdFN0
b3JlLT5wdXRXaXRoSW5kZXhLZXlzKHZhbHVlLCBrZXksIHN0YXRpY19jYXN0PFdlYklEQk9iamVj
dFN0b3JlOjpQdXRNb2RlPihwdXRNb2RlKSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIHdlYkluZGV4
TmFtZXMsIHdlYkluZGV4S2V5cywgZWMpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5OjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtl
eXM+JiBpbmRleEtleXMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKQEAgLTc1LDYgKzg1LDE2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6
OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhCiAgICAgbV93
ZWJJREJPYmplY3RTdG9yZS0+cHV0KHZhbHVlLCBrZXksIHN0YXRpY19jYXN0PFdlYklEQk9iamVj
dFN0b3JlOjpQdXRNb2RlPihwdXRNb2RlKSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGluZGV4SWRz
LCBpbmRleEtleXMpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpzZXRJ
bmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBpbmRleE5hbWVzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQoreworICAgIC8vIFRo
ZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEg
cHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0
aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+IHdlYkluZGV4TmFtZXMoaW5kZXhOYW1lcyk7CisgICAgV2ViVmVjdG9yPEluZGV4S2V5cz4g
d2ViSW5kZXhLZXlzKGluZGV4S2V5cyk7CisgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+c2V0SW5k
ZXhLZXlzKHBycFByaW1hcnlLZXksIHdlYkluZGV4TmFtZXMsIHdlYkluZGV4S2V5cywgKnRyYW5z
YWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCkpOworfQorCiB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFBy
aW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JiBpbmRleEtleXMsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24pCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
QEAgLTExMCw2ICsxMzAsMjUgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChpbnQKICAgICByZXR1cm4g
SURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleC5yZWxlYXNlKCkpOwogfQogCitQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhl
IHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBw
cm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRp
b25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgT3duUHRyPFdlYklEQkluZGV4
PiBpbmRleCA9IGFkb3B0UHRyKG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUs
IGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklE
QlRyYW5zYWN0aW9uKCksIGVjKSk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgp
KTsKK30KKwordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6c2V0SW5kZXhlc1JlYWR5
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVy
IGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0
aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNl
cyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJh
bnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4o
dHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnNldEluZGV4ZXNSZWFkeShX
ZWJWZWN0b3I8V2ViU3RyaW5nPihpbmRleE5hbWVzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCkpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKIHsKICAgICAvLyBUaGUgdHJh
bnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5
IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApAQCAtMTE4LDYgKzE1NywxNCBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcwogICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnNldEluZGV4ZXNSZWFk
eShXZWJWZWN0b3I8bG9uZyBsb25nPihpbmRleElkcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRX
ZWJJREJUcmFuc2FjdGlvbigpKTsKIH0KIAorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIE93blB0cjxXZWJJREJJbmRleD4gaW5kZXgg
PSBhZG9wdFB0cihtX3dlYklEQk9iamVjdFN0b3JlLT5pbmRleChuYW1lLCBlYykpOworICAgIGlm
ICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJJbmRleEJhY2tlbmRQ
cm94eTo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSk7Cit9CisKIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6aW5kZXgoaW50NjRf
dCBpbmRleElkKQogewogICAgIE93blB0cjxXZWJJREJJbmRleD4gaW5kZXggPSBhZG9wdFB0ciht
X3dlYklEQk9iamVjdFN0b3JlLT5pbmRleChpbmRleElkKSk7CkBAIC0xMjYsNiArMTczLDE0IEBA
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eTo6aW5kZXgoaW50NjRfdCBpCiAgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5
OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKIH0KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAv
LyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0
byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBpbXBsZW1l
bnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAgSURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBtX3dlYklEQk9iamVj
dFN0b3JlLT5kZWxldGVJbmRleChuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJh
bnNhY3Rpb24oKSwgZWMpOworfQorCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpk
ZWxldGVJbmRleChjb25zdCBpbnQ2NF90IGluZGV4SWQsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0
cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJv
eHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAppbmRleCBkYThmNmJi
ZGQ4MmQxZjJiMDg5NDNlNzgzMmVlNThhZWJlMjI1OWVjLi43OTExM2FlOTU2NWEzMTRkY2NmMmJh
Yzc4MGViYTc1Mzk0ZjZjZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKQEAgLTQ0LDE1ICs0NCwyMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBwdXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9y
PEluZGV4S2V5cz4mLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lk
IHB1dChQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBX
VEY6OlZlY3RvcjxpbnQ2NF90PiYsIGNvbnN0IFdURjo6VmVjdG9yPEluZGV4S2V5cz4mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
Jik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlz
PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFdURjo6VmVjdG9yPGludDY0X3Q+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5
cz4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
ZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKIAorICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXgoaW50NjRfdCk7CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QsIFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
S2V5UmFuZ2U+LCBXZWJDb3JlOjpJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U6OlRhc2tUeXBlLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA1OWFiZDUzMjkyODAxZjMwNDkzZGJkMGM0
N2Y2ZTAwZDM2MGJkZDQxLi45MGMyNjIzODk0OWU0NGEwNzQyOTk1NGNmN2Q4OWUxNTY1MGUxYWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKQEAgLTcwLDYgKzcwLDExIEBAIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFz
ZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViCiAgICAgcmV0
dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIFdl
YklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCB0
cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOworfQor
CiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIG9i
amVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZU9iamVjdFN0
b3JlKG9iamVjdFN0b3JlSWQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7CkBAIC04MCw2ICs4NSwxNyBAQCB2b2lkIFdlYklEQkRhdGFiYXNlSW1w
bDo6c2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyog
YwogICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5zZXRWZXJzaW9uKHZlcnNpb24sIElEQkNhbGxiYWNr
c1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG1fZGF0YWJhc2VDYWxsYmFja3Ms
IGVjKTsKIH0KIAorV2ViSURCVHJhbnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1wbDo6dHJhbnNh
Y3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUs
IFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBuYW1l
TGlzdCA9IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4obmFtZXMpOworICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uID0gbV9kYXRhYmFzZUJhY2tl
bmQtPnRyYW5zYWN0aW9uKG5hbWVMaXN0LmdldCgpLCBtb2RlLCBlYyk7CisgICAgaWYgKCF0cmFu
c2FjdGlvbikgeworICAgICAgICBBU1NFUlQoZWMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgcmV0dXJuIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pOworfQor
CiBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25z
dCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUpCiB7CiAgICAgVmVjdG9yPGludDY0X3Q+IG9iamVjdFN0b3JlSWRMaXN0KG9iamVjdFN0b3Jl
SWRzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCmluZGV4IGU3Mjg3NDJjNjQ3NDg0MTI2Y2YzZWE3ZGQ5NTZlZGZmMzJjNzI4MGYu
LjY1YTE5NjY4YTliNzI5Nzc0Nzc5YjZiZTc0MTZiN2I3NDhmMjgxNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC01Myw4ICs1Mywx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUobG9u
ZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFj
a3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0
IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbihjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgbmFtZXMsIHVuc2lnbmVk
IHNob3J0IG1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAxMDI4MDRiYzgxZGY2NDhhZWJmYjA5MmUwYzE0
YTg5MzIyYjlkNTk3Li44NWJhYzEzYjM0ODAwZDQyMGYxY2QxODc2MGJkOTU2MzhjZDY0ZTVjIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAKQEAgLTU4LDYgKzU4LDIzIEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpn
ZXQoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCBXZWJJREJDYWxsYmFja3MqCiAgICAg
bV9vYmplY3RTdG9yZS0+Z2V0KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwogfQogCit2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6cHV0V2l0
aEluZGV4S2V5cyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBX
ZWJJREJLZXkmIGtleSwgUHV0TW9kZSBwdXRNb2RlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgd2ViSW5kZXhOYW1lcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4m
IHdlYkluZGV4S2V5cywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKHdlYklu
ZGV4TmFtZXMuc2l6ZSgpID09IHdlYkluZGV4S2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxTdHJp
bmc+IGluZGV4TmFtZXMod2ViSW5kZXhOYW1lcy5zaXplKCkpOworICAgIFZlY3RvcjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4gaW5kZXhLZXlzKHdlYkluZGV4S2V5
cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJJbmRleE5hbWVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGluZGV4TmFtZXNbaV0gPSB3ZWJJbmRleE5hbWVzW2ldOwor
ICAgICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBpbmRleEtleUxpc3Qod2ViSW5kZXhLZXlz
W2ldLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgd2ViSW5kZXhLZXlz
W2ldLnNpemUoKTsgKytqKQorICAgICAgICAgICAgaW5kZXhLZXlMaXN0W2pdID0gd2ViSW5kZXhL
ZXlzW2ldW2pdOworICAgICAgICBpbmRleEtleXNbaV0gPSBpbmRleEtleUxpc3Q7CisgICAgfQor
CisgICAgbV9vYmplY3RTdG9yZS0+cHV0V2l0aEluZGV4S2V5cyh2YWx1ZSwga2V5LCBzdGF0aWNf
Y2FzdDxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGU+KHB1dE1vZGUpLCBJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlv
bi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgaW5kZXhOYW1lcywgaW5kZXhL
ZXlzLCBlYyk7Cit9CisKIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpwdXQoY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5JiBrZXksIFB1dE1v
ZGUgcHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIHdlYkluZGV4
SWRzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYgd2ViSW5kZXhLZXlzKQogewogICAg
IEFTU0VSVCh3ZWJJbmRleElkcy5zaXplKCkgPT0gd2ViSW5kZXhLZXlzLnNpemUoKSk7CkBAIC03
NSw2ICs5MiwyMiBAQCB2b2lkIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6cHV0KGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYgogICAgIG1fb2JqZWN0U3RvcmUt
PnB1dCh2YWx1ZSwga2V5LCBzdGF0aWNfY2FzdDxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U6OlB1dE1vZGU+KHB1dE1vZGUpLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRy
KGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSwgaW5kZXhJZHMsIGluZGV4S2V5cyk7CiB9CiAKK3ZvaWQgV2ViSURCT2JqZWN0U3RvcmVJ
bXBsOjpzZXRJbmRleEtleXMoY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiYgd2ViSW5kZXhOYW1lcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4
S2V5cz4mIHdlYkluZGV4S2V5cywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQoreworICAgIEFTU0VSVCh3ZWJJbmRleE5hbWVzLnNpemUoKSA9PSB3ZWJJbmRleEtleXMuc2l6
ZSgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBpbmRleE5hbWVzKHdlYkluZGV4TmFtZXMuc2l6ZSgp
KTsKKyAgICBWZWN0b3I8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+
IGluZGV4S2V5cyh3ZWJJbmRleEtleXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd2ViSW5kZXhOYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICBpbmRleE5hbWVzW2ld
ID0gd2ViSW5kZXhOYW1lc1tpXTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gaW5k
ZXhLZXlMaXN0KHdlYkluZGV4S2V5c1tpXS5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8IHdlYkluZGV4S2V5c1tpXS5zaXplKCk7ICsraikKKyAgICAgICAgICAgIGluZGV4
S2V5TGlzdFtqXSA9IHdlYkluZGV4S2V5c1tpXVtqXTsKKyAgICAgICAgaW5kZXhLZXlzW2ldID0g
aW5kZXhLZXlMaXN0OworICAgIH0KKyAgICBtX29iamVjdFN0b3JlLT5zZXRJbmRleEtleXMocHJp
bWFyeUtleSwgaW5kZXhOYW1lcywgaW5kZXhLZXlzLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UoKSk7Cit9CisKIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjpzZXRJbmRleEtleXMoY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJWZWN0
b3I8bG9uZyBsb25nPiYgd2ViSW5kZXhJZHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJbmRleEtleXM+
JiB3ZWJJbmRleEtleXMsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsK
ICAgICBBU1NFUlQod2ViSW5kZXhJZHMuc2l6ZSgpID09IHdlYkluZGV4S2V5cy5zaXplKCkpOwpA
QCAtOTEsNiArMTI0LDE0IEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpzZXRJbmRleEtl
eXMoY29uc3QgV2ViSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJWCiAgICAgbV9vYmplY3RT
dG9yZS0+c2V0SW5kZXhLZXlzKHByaW1hcnlLZXksIGluZGV4SWRzLCBpbmRleEtleXMsIHRyYW5z
YWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKIH0KIAordm9pZCBX
ZWJJREJPYmplY3RTdG9yZUltcGw6OnNldEluZGV4ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiYgd2ViSW5kZXhOYW1lcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGluZGV4TmFtZXMod2ViSW5kZXhOYW1lcy5zaXpl
KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViSW5kZXhOYW1lcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgaW5kZXhOYW1lc1tpXSA9IHdlYkluZGV4TmFtZXNbaV07CisgICAgbV9vYmpl
Y3RTdG9yZS0+c2V0SW5kZXhlc1JlYWR5KGluZGV4TmFtZXMsIHRyYW5zYWN0aW9uLmdldElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpKTsKK30KKwogdm9pZCBXZWJJREJPYmplY3RTdG9y
ZUltcGw6OnNldEluZGV4ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgd2ViSW5k
ZXhOYW1lcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIFZl
Y3RvcjxpbnQ2NF90PiBpbmRleElkcyh3ZWJJbmRleE5hbWVzLnNpemUoKSk7CkBAIC0xMTcsNiAr
MTU4LDE0IEBAIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4
KGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBuCiAgICAgcmV0dXJuIG5ldyBXZWJJREJJ
bmRleEltcGwoaW5kZXgpOwogfQogCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBs
OjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9y
ZS0+aW5kZXgobmFtZSwgZWMpOworICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBuZXcgV2ViSURCSW5kZXhJbXBsKGluZGV4KTsKK30KKwogV2ViSURCSW5kZXgq
IFdlYklEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgobG9uZyBsb25nIG9iamVjdFN0b3JlSWQpCiB7
CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0
b3JlLT5pbmRleChvYmplY3RTdG9yZUlkKTsKQEAgLTEyNSw2ICsxNzQsMTEgQEAgV2ViSURCSW5k
ZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6aW5kZXgobG9uZyBsb25nIG9iamVjdFN0b3JlSWQp
CiAgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwogfQogCit2b2lkIFdlYklE
Qk9iamVjdFN0b3JlSW1wbDo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUluZGV4KG5hbWUsIHRyYW5zYWN0aW9uLmdldElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisKIHZvaWQgV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsOjpkZWxldGVJbmRleChsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVJbmRleChvYmplY3RTdG9yZUlkLCB0cmFuc2FjdGlv
bi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA3MGYx
OWNjOGZiN2Q5NjI2ZjMwOGM2NTBmNTRkOGQyYzBlYjg0ZjhkLi41ZGUzYzlhMTVhZDhlZjVmNDYw
YTg4NmFjMWNkZWFiY2NiZDU4MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNDYsMTQgKzQ2LDE5IEBAIHB1YmxpYzoK
ICAgICB+V2ViSURCT2JqZWN0U3RvcmVJbXBsKCk7CiAKICAgICB2b2lkIGdldChjb25zdCBXZWJJ
REJLZXlSYW5nZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcHV0V2l0aEluZGV4S2V5cyhjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJLZXkmLCBQdXRNb2RlLCBXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiwgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3Qg
V2ViSURCS2V5JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIGNvbnN0IFdlYlZlY3RvcjxXZWJJ
bmRleEtleXM+Jik7CisgICAgdm9pZCBzZXRJbmRleEtleXMoY29uc3QgV2ViSURCS2V5JiwgY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIGluZGV4TmFtZXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJ
bmRleEtleXM+JiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIHNldEluZGV4
S2V5cyhjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgaW5kZXhO
YW1lcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYpOworICAgIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJp
bmc+JiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIHNldEluZGV4ZXNSZWFk
eShjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJik7
CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJik7CiAKICAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgobG9u
ZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViSURCSW5kZXgqIGluZGV4KGxvbmcgbG9u
Zyk7CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5k
ZXgobG9uZyBsb25nLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkN1
cnNvcjo6RGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJUcmFuc2FjdGlvbjo6VGFz
a1R5cGUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5j
cHAKaW5kZXggNDBkN2Q3NTYzMTZjM2MzMWVhOGFiYzU0NDAwOWEwMDY2MjY5YzI0NS4uNjYxNmQ2
NzFmYzMwYzk3ZTY3MjYxNGMxYTQxOTllM2E3ZDA4ODU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCkBAIC00Nyw2ICs0
NywxNCBAQCBXZWJJREJUcmFuc2FjdGlvbkltcGw6On5XZWJJREJUcmFuc2FjdGlvbkltcGwoKQog
ewogfQogCitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCVHJhbnNhY3Rpb25JbXBsOjpvYmplY3RT
dG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9iYWNr
ZW5kLT5vYmplY3RTdG9yZShuYW1lLCBlYyk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0
U3RvcmUpOworfQorCiBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCVHJhbnNhY3Rpb25JbXBsOjpv
YmplY3RTdG9yZShsb25nIGxvbmcgaW5kZXhJZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2Jh
Y2tlbmQtPm9iamVjdFN0b3JlKGluZGV4SWQsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKaW5kZXggMGZiNjUzNzY3NjMxNmNl
NzAwY2ZiYWM4ZGU4OTkzY2VjNjQ2NmE3Ny4uMWVlNmFiODAxOTdlZjc4ZmFmYTEzZTk2ZmQwNWY3
MGYzN2JhZDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIFdlYklEQlRy
YW5zYWN0aW9uSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB+V2ViSURCVHJhbnNhY3Rpb25JbXBsKCk7CiAK
KyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZShsb25nIGxvbmcgaW5kZXhJZCwgV2ViRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKaW5kZXgg
MjdmNmMxZTZiMzY0YTRlMjIzNmExNDI1NzViMzI5N2U2OWFmNmNmZS4uNTJhMDM4ZDViZjU3NDRj
ZmI2MmZkYWYwOTE0YzBjMTA3YjFlMTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUg
IklEQlJlcXVlc3QuaCIKIAotI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>