<?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>95239</bug_id>
          
          <creation_ts>2012-08-28 13:28:31 -0700</creation_ts>
          <short_desc>REGRESSION(r126914): it breaks everything and fixes nothing (Requested by pizlo on #webkit).</short_desc>
          <delta_ts>2012-08-28 13:54:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82784</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>cmarcelo</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706676</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 13:28:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126914 broke the build:
it breaks everything and fixes nothing (Requested by pizlo 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>706679</commentid>
    <comment_count>1</comment_count>
      <attachid>161047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 13:29:34 -0700</bug_when>
    <thetext>Created attachment 161047
ROLLOUT of r126914

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>706694</commentid>
    <comment_count>2</comment_count>
      <attachid>161047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 13:54:37 -0700</bug_when>
    <thetext>Comment on attachment 161047
ROLLOUT of r126914

Clearing flags on attachment: 161047

Committed r126926: &lt;http://trac.webkit.org/changeset/126926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706695</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 13:54:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161047</attachid>
            <date>2012-08-28 13:29:34 -0700</date>
            <delta_ts>2012-08-28 13:54:37 -0700</delta_ts>
            <desc>ROLLOUT of r126914</desc>
            <filename>bug-95239-20120828203554.patch</filename>
            <type>text/plain</type>
            <size>712949</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjU3MTI1NzllNDYwNWMwMWU0Y2YyZTVlN2ZkZDJmY2M5MDMxODRhLi43MWU0Y2JlNGRjZWJiNmUy
MTBiZGUyYzY5Zjc3MzBlYTVlMzlkNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMTItMDgtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjkxNAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMzkKKworICAgICAgICBp
dCBicmVha3MgZXZlcnl0aGluZyBhbmQgZml4ZXMgbm90aGluZyAoUmVxdWVzdGVkIGJ5IHBpemxv
IG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5
TWFwOjpnZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAg
ICAgICAgKEpTQzo6OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBBUEkvSlNDbGFz
c1JlZi5jcHA6CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjp+T3BhcXVlSlNDbGFzcyk6CisgICAg
ICAgIChPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSk6
CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvZGUvSnVtcFRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAg
ICAgICAoSlNDOjpTdHJpbmdKdW1wVGFibGU6OmN0aUZvclZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkxhenlPcGVy
YW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1NhbXBsaW5nVG9vbC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVG9vbDo6ZHVtcCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnRWYWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5j
cHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6b2JzZXJ2ZUJh
ZEFyZ3VtZW50c1VzZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRp
b25QaGFzZTo6b2JzZXJ2ZVByb3BlckFyZ3VtZW50c1VzZSk6CisgICAgICAgIChKU0M6OkRGRzo6
QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6aXNPS1RvT3B0aW1pemUpOgorICAgICAgICAo
SlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJlbW92ZUFyZ3VtZW50c1Jl
ZmVyZW5jaW5nUGhhbnRvbUNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFw
Rm9yKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlQ2FjaGU6On5CeXRlQ29kZUNhY2hlKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZUNhY2hlOjpnZXQpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZTo6cnVu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2U6Om5vdGlj
ZVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0
aW5nUGhhc2U6Om5vdGljZUNsb2JiZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKToKKyAgICAgICAgKiBoZWFwL0hl
YXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwpOgorICAgICAg
ICAqIGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91
dGluZVNldDo6bWFya1Nsb3cpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVs
ZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAgICAgICAgKiBoZWFwL01hcmtT
dGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQpOgorICAg
ICAgICAqIGhlYXAvV2Vhay5oOgorICAgICAgICAoSlNDOjp3ZWFrUmVtb3ZlKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlTdHVi
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0
cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21wYXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSk6CisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6U3BhcnNl
QXJyYXlWYWx1ZU1hcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmVu
dGVyRGljdGlvbmFyeU1vZGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWZpbmVPd25OdW1l
cmljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0
KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlOjpp
bnZhbGlkYXRlQ29kZSk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAg
KEpTQzo6V2Vha0dDTWFwOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToK
KyAgICAgICAgKiB0b29scy9Qcm9maWxlVHJlZU5vZGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmls
ZVRyZWVOb2RlOjpzYW1wbGVDaGlsZCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6
Y2hpbGRDb3VudCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6ZHVtcEludGVybmFs
KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZVRyZWVOb2RlOjpjb21wYXJlRW50cmllcyk6CisKIDIw
MTItMDgtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFA
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1
ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkZjkwYmJhYzI2YWRhMzk4YjIyYTZhYWFlN2Nj
NDgzOTFiZTdjOGQ2Li5iY2M3MWRkYzE0N2NmYzc4YTU4ZjMwNWUxZmMzMjUxMTk3ODdjMjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2
OTE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY5MTQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjM5CisKKyAg
ICAgICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5kIGZpeGVzIG5vdGhpbmcgKFJlcXVlc3RlZCBi
eSBwaXpsbyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIHd0Zi9IYXNoQ291bnRl
ZFNldC5oOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChXVEY6Ojo6cmVtb3ZlKToK
KyAgICAgICAgKFdURjo6Y29weVRvVmVjdG9yKToKKyAgICAgICAgKiB3dGYvSGFzaEl0ZXJhdG9y
cy5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjo6Z2V0KToKKyAg
ICAgICAgKFdURjo6SGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAg
KFdURjo6SGFzaFRhYmxlS2V5c0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpIYXNoVGFi
bGVWYWx1ZXNJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAg
ICAoV1RGOjpLZXlWYWx1ZVBhaXJLZXlFeHRyYWN0b3I6OmV4dHJhY3QpOgorICAgICAgICAoV1RG
OjpIYXNoTWFwVmFsdWVUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hN
YXBUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOgorICAgICAgICAoV1RGOjpIYXNoTWFwVHJhbnNsYXRv
ckFkYXB0ZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKFdU
Rjo6OjpnZXQpOgorICAgICAgICAoV1RGOjo6OnRha2UpOgorICAgICAgICAoV1RGOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmRlbGV0ZUFsbFBhaXJTZWNvbmRz
KToKKyAgICAgICAgKFdURjo6ZGVsZXRlQWxsVmFsdWVzKToKKyAgICAgICAgKFdURjo6ZGVsZXRl
QWxsUGFpckZpcnN0cyk6CisgICAgICAgIChXVEY6OmRlbGV0ZUFsbEtleXMpOgorICAgICAgICAq
IHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6aGFzaFRhYmxlU3dhcCk6CisgICAgICAg
IChXVEY6Ojo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSk6CisgICAgICAgICogd3Rm
L0hhc2hUcmFpdHMuaDoKKyAgICAgICAgKFdURjo6S2V5VmFsdWVQYWlyOjpLZXlWYWx1ZVBhaXIp
OgorICAgICAgICAoS2V5VmFsdWVQYWlyKToKKyAgICAgICAgKFdURjo6S2V5VmFsdWVQYWlySGFz
aFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6S2V5VmFsdWVQ
YWlySGFzaFRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAqIHd0Zi9NZXRhQWxsb2Nh
dG9yLmNwcDoKKyAgICAgICAgKFdURjo6TWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlKToKKyAg
ICAgICAgKFdURjo6TWV0YUFsbG9jYXRvcjo6aW5jcmVtZW50UGFnZU9jY3VwYW5jeSk6CisgICAg
ICAgIChXVEY6Ok1ldGFBbGxvY2F0b3I6OmRlY3JlbWVudFBhZ2VPY2N1cGFuY3kpOgorICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwOgorICAgICAgICAoV1RGOjpSZWZDb3Vu
dGVkTGVha0NvdW50ZXI6On5SZWZDb3VudGVkTGVha0NvdW50ZXIpOgorICAgICAgICAqIHd0Zi9S
ZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKFdURjo6Ojpn
ZXQpOgorICAgICAgICAoV1RGOjo6OmlubGluZUdldCk6CisgICAgICAgIChXVEY6Ojo6dGFrZSk6
CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQp
OgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OmJ1aWxkTGlzdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAg
ICAgKFdURjo6aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZSk6CisKIDIwMTItMDgtMjggIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0
ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxZWFlYzAzNTA1NDAzZTAyMGYxNTA2ZTdmNGZkZTZkMzIz
OTEzYjcuLjJjOTQ0YjI0Njk3ZWFlMDJmYzFiMDA4ZTJlMzZkMmZhOTVjMDE5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NzIgQEAKKzIwMTItMDgtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MjY5MTQuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjkxNAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMzkKKwor
ICAgICAgICBpdCBicmVha3MgZXZlcnl0aGluZyBhbmQgZml4ZXMgbm90aGluZyAoUmVxdWVzdGVk
IGJ5IHBpemxvIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
V2F0Y2hlcnM6OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OldhdGNoZXJz
OjpyZW1vdmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6bWFrZUluZGV4V3JpdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9u
QWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JD
b250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3Jk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdpblVzYWdlUmVjb3JkOjpkaXNrVXNhZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJl
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpyZWxl
YXNlTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpz
aHV0ZG93bik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFz
ZVRyYWNrZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6Z2V0RGF0YWJhc2VTaXplQW5kU3BhY2VBdmFpbGFibGVUb09yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVz
cG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXI6OmFwcGVuZEFjY2VwdGVkRXh0ZW5zaW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6fkFY
T2JqZWN0Q2FjaGUpOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvRE9NT2JqZWN0Q2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Y2xlYXJCeUZyYW1lKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6fkRPTU9iamVjdEhhc2hUYWJsZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVNYXA6OmdldCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9N
U3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldERPTUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVy
OjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFt
ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3Jp
cHRDYWNoZWRGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhOjpyZXN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlUm9vdE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhbnVwU2NyaXB0T2JqZWN0
c0ZvclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhclNj
cmlwdE9iamVjdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NoZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4aXN0aW5nV2luZG93U2hlbGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJp
YWxpemVyOjpjaGVja0ZvckR1cGxpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXpl
cjo6d3JpdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
RmxvYXQ2NEFycmF5OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0UmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RJbnRlcmZhY2U6OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
T2JqOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OkdldFRl
bXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XcmFwcGVyV29ybGQ6OmdldE9yQ3JlYXRlSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmcmVlVjhOUE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpucENyZWF0ZVY4U2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpyZXNldElzb2xhdGVkV29ybGRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhbnVwU2NyaXB0T2Jq
ZWN0c0ZvclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjb2xs
ZWN0SXNvbGF0ZWRDb250ZXh0cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2Vha1JlZmVyZW5jZU1hcDo6cmVtb3ZlSWZQcmVzZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OnZpc2l0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbnVtZXJhdGVHbG9iYWxI
YW5kbGVzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmRpc3Bvc2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L25wcnVudGltZS5jcHA6CisgICAgICAgICogYnJpZGdlL0lkZW50aWZpZXJSZXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWRlbnRpZmllclJlcDo6Z2V0KToKKyAgICAgICAgKiBi
cmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoT2JqZWN0TWFwOjphZGQpOgorICAgICAg
ICAoT2JqZWN0TWFwOjpyZW1vdmUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFz
c0pTQy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6On5KYXZhQ2xhc3MpOgorICAgICAgICAqIGJy
aWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpXZWFrTWFw
OjpzZXQpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Um9vdE9iamVjdDo6aW52YWxpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0Nh
bnZhc1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpjYW52YXND
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpjYW52YXNSZXNpemVk
KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvdW50ZXJUb0NTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmNyb3Nz
ZmFkZUNoYW5nZWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAq
IGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVj
dG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjpnZXRGb250RGF0YSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6YWRkQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpnZXRJbWFnZSk6Cisg
ICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YSk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwYXJzZVBzZXVkb1R5
cGUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
bHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OmNsb25lQW5kQ2FjaGVGb3JDU1NPTSk6CisgICAgICAgICogY3Nz
L1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRl
cjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNv
dW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpydWxlU2V0Rm9yU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRjaGVkUHJvcGVydGllc0NhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dCk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFkZE5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OmRldGVybWluZU5hbWVzcGFjZSk6CisgICAgICAg
ICogZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tl
ZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRp
b0J1dHRvbnM6OnJlbW92ZUJ1dHRvbik6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0
YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmNoaWxkQWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OndpbGxS
ZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpN
dXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9u
Um91dGVyOjpkZWNyZW1lbnRTY29waW5nTGV2ZWwpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6bWFya2VyQ29udGFpbmluZ1BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjo6cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVwYWludE1hcmtlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjppbnZhbGlkYXRlUmVu
ZGVyZWRSZWN0c0Zvck1hcmtlcnNJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyOjpzaG93TWFya2Vycyk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OnJlbW92
ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmVuc3VyZUF0dHJMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgICogZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rl
cjo6ZmluZFJlbGF0ZWRUYXJnZXQpOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmV2ZW50VHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3Rl
bmVyTWFwOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OnJlbW92
ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXJNYXA6OmNvcHlFdmVudExpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3Vw
VG9UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lckl0ZXJhdG9yOjpuZXh0
TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2Vy
dmVyKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRNYXBWYWx1ZXMpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
aXNPbGRWYWx1ZVJlcXVlc3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cDo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpjbGVhclJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVM
aXN0c05vZGVEYXRhOjppbnZhbGlkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVXaXRoQXRvbWljTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
YWRkQ2FjaGVXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
YWRkQ2FjaGVXaXRoUXVhbGlmaWVkTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNO
b2RlRGF0YTo6YWRvcHRUcmVlU2NvcGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVj
a1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2
YWwpOgorICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKToKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9tYWMv
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjph
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpzZXJpYWxpemVUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6YXBwZW5kQ29udHJvbFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjp0YWtlQ29udHJvbFN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1LZXlHZW5lcmF0b3I6OmZvcm1LZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Db250cm9sbGVyOjpmb3JtRWxlbWVudHNTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxl
Y3Rpb25DYWNoZUJhc2U6OmFwcGVuZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpnZXRBdHRh
Y2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OnJlbW92ZUF0dGFj
aG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1l
YnVmZmVyOjpjaGVja1N0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVy
OjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6
OmluaXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmRpZmYpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpyZW1vdmVDaGlsZEFuZE1vdmVUb05ldyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9ySWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdElkRm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2Ny
aXB0c0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OnJlbGVh
c2VPYmplY3RHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yVGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxl
U2hlZXRGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVt
b3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTW9k
aWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXRQ
c2V1ZG9TdGF0ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkVXNlRE9NU3RvcmFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Om1lbW9yeUJ5dGVz
VXNlZEJ5U3RvcmFnZUNhY2hlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJh
c2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlG
aWxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRh
YmFzZUZvcklkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVt
b3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZWFyY2hJbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZURldGFjaGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9ySGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0
ZTo6Z2V0Qm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6Z2V0U3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpnZXRMb25nKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpnZXREb3VibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3RhdGU6OmdldE9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0
eWxlV2l0aFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6aW5zcGVjdG9yU3R5bGVGb3JJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGVXb3JrZXJGcm9udGVuZENo
YW5uZWxzRm9yRXhpc3RpbmdXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpkZXN0cm95V29ya2VyRnJvbnRlbmRDaGFubmVscyk6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTaW1wbGVDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZXNzQ29udHJv
bFByZWZsaWdodFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodCk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpnZXRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCk6CisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YWluUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlOjpyZW1vdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlOjpjbGVhclN0b3JhZ2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
OjpkdW1wKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNo
TG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6c3RhcnRMb2FkaW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwOjphZGRFbnRyeSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpm
aWxsUmVzb3VyY2VMaXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5T2ZDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhblJldXNlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24pOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI6OkNhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6On5DYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpz
ZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OmdldFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzZXREaXNh
YmxlZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbkRhdGFiYXNlOjppY29uUmVjb3JkQ291bnRXaXRoRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlv
bnMpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nQmVmb3JlVW5sb2FkRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKToKKyAgICAgICAgKiBwYWdl
L1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2xlYXJMb2NhbFN0b3JhZ2VGb3JBbGxPcmlnaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2xlYXJMb2NhbFN0b3JhZ2VGb3JPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpzeW5jTG9jYWxTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OnVybEZvckJsYW5rRnJhbWUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRHZW5lcmljRm9udEZhbWlseU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6CisgICAgICAgICogcGFn
ZS9TcGVlY2hJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6cmVnaXN0
ZXJMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXaW5kb3dGZWF0dXJlczo6Ym9vbEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2luZG93RmVhdHVyZXM6OmZsb2F0RmVhdHVyZSk6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cmVzdW1lQW5p
bWF0aW9uc0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGVBbmltYXRpb246OmNsZWFyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
QW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlQW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUFuaW1hdGlvbjo6c2V0QW5pbWF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0
ZUFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlQW5pbWF0aW9uOjpnZXRBbmltYXRpb25Gb3JQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVBbmltYXRpb246OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVBbmltYXRpb246Om92ZXJyaWRlSW1wbGljaXRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lT3ZlcnJpZGRlbkltcGxp
Y2l0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246Omlz
QW5pbWF0aW5nUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9u
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxhbmd1YWdlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJ
bXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6Omdl
bmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVN
YW5hZ2VyOjpyZW1vdmVBbGxDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L0Nvb2tpZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OnJlbW92ZU9sZGVz
dENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6OmdldEFsbENoaWxkQ29va2ll
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2FkSW5mby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmFkZEhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVx
dWVzdDo6dmlzaXRIVFRQSGVhZGVyRmllbGRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVz
cG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3Bv
bnNlOjp2aXNpdEhUVFBIZWFkZXJGaWVsZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRWZXJ0aWNhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpnZXRDYWNoZWRGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OnJlbGVhc2VGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnB1cmdlSW5h
Y3RpdmVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnRyZWVHbHlw
aFBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6cGFnZUNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZVRyZWVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVU
cmVlRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnBydW5l
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnBy
dW5lRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnNob3dT
dWJ0cmVlKToKKyAgICAgICAgKHNob3dHbHlwaFBhZ2VUcmVlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OnNldEtlZXBSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjphZGRUaWxlSm9iKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZXI6OmRlbGV0ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGlsZXI6OnBydW5lVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6
YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZUZvclRpbGVkQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1
cmVGb3JDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmxheWVyRGlkRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNWaXNp
YmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVu
dHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNr
ZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRh
dGVGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlU3Ry
dWN0dXJhbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
TGF5ZXJEcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBk
YXRlTGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uT25MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRPcGFjaXR5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjp1cGRhdGVPcGFjaXR5T25MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6flRp
bGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnNldFNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVDYWNoZTo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDYWNoZTo6c2V0VGlsZURlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZUNhY2hlOjpzZXRUaWxlRGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6
OmFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAocmVzdWJtaXRBbGxBbmltYXRpb25zKToKKyAg
ICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6YW5pbWF0aW9uRm9yS2V5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMb29rdXBBbHROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRDb250YWlu
c0NoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0
aWxzQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGVyaXZlZEZvbnREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRh
dGVDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNl
dFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6cmVzZXRVcGRhdGVTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGFtYWdlVHJh
Y2tlcjo6dHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0RpcmVjdFJlbmRlcmVyOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGlu
Z0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6OnNldEJvdW5k
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVl
SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UmF0ZUxpbWl0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzdG9wUmF0ZUxpbWl0ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZU93bmVkUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6cmVzb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dXBsb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JSZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZXN0cm95Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyOjpnZXRDaGlsZFRvUGFyZW50TWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6cHJlcGFyZVNlbmRUb1BhcmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnByZXBhcmVTZW5kVG9DaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnJlY2VpdmVGcm9tQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpyZWNlaXZlRnJvbVBhcmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnRyYW5zZmVyUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp0cmltTWFpbGJveERlcXVlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6fkN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dDo6Z2V0Q29tcGlsZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnJlbW92ZUNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW06Om5vdGlmeUNsaWVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRDYWNoZWRIYXJmYnV6ekZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
cmVsZWFzZUNhY2hlZEhhcmZidXp6RmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1
enpOR0ZhY2U6OkhhcmZCdXp6TkdGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6TkdG
YWNlOjp+SGFyZkJ1enpOR0ZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9T
aW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnRE
YXRhOjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnRE
YXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcv
RUdMRGlzcGxheU9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xEaXNwbGF5T3BlblZH
Ojp+RUdMRGlzcGxheU9wZW5WRyk6CisgICAgICAgIChXZWJDb3JlOjpFR0xEaXNwbGF5T3BlblZH
OjpkZXN0cm95U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xEaXNwbGF5T3BlblZHOjpj
b250ZXh0Rm9yU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRh
OjpTaGFyZWRHTERhdGE6OmN1cnJlbnRTaGFyZWRHTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjp+U2hhcmVkR0xEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNo
YWRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXI6OmdldFNoYWRlckZvckZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvRm9udFBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFNpemVGb250
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlR2V0RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdMZWF2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ01vdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0RhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0Ry
b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z3RrU3R5bGVDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0U3R5bGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW06CisgICAgICAgICgrW1dlYlNjcm9sbGJhclByZWZzT2JzZXJ2ZXIgYXBwZWFyYW5jZVBy
ZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXA6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmdldCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVh
ZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRU
UEhlYWRlckZpZWxkcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jl
c291cmNlUmVxdWVzdEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Ojp0YXJnZXRUeXBlRnJvbU1pbWVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VGaW5hbFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SGVhZGVyRmllbGRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhh
bmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3Jt
UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVl
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp0b1NvdXBNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SdW5Mb29wUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2NyaXB0TmFtZVRvQ29kZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBydW5l
QmxhY2tsaXN0ZWRDb2RlY3MpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcFRleHRFbmNvZGluZ05h
bWVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250VHJhbnNjb2Rlcjo6Y29udmVydGVyVHlwZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okxhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldENvZGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1dpbjo6cmVn
aXN0ZXJFeHRlbmRlZEVuY29kaW5nTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
V2luOjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2Rl
Y1dpbjo6ZW51bWVyYXRlU3VwcG9ydGVkRW5jb2RpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERhdGFN
YXBJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENsaXBib2FyZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0Q2xpcGJvYXJkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OnR5cGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUnVuTG9v
cFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmly
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luY2UvTUlNRVR5cGVSZWdpc3RyeVdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51OjphcHBlbmRJdGVtKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVtb3ZlKToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OmRpc3BhdGNoQ2FsbHMpOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6c3Rh
cnRTdHJlYW0pOgorICAgICAgICAqIHBsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5EYXRhQmxhY2tC
ZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6Cisg
ICAgICAgICogcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFk
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6
dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpyZXF1aXJl
c0lkZW9ncmFwaGljQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
YWRkVGV4dEJveFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRlck5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVDb3VudGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0
eWxlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Z2V0UmVnaW9uUmFuZ2VGb3JC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGVyZm9ybU92ZXJs
YXBUZXN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlckluZm86OmZpbHRlckluZm9Gb3JS
ZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlckluZm86OmNy
ZWF0ZUZpbHRlckluZm9Gb3JSZW5kZXJMYXllcklmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6ZGVwZW5kc09uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6cHVzaERlcGVuZGVuY2llcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnNldFJlbmRlckJv
eFJlZ2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpzZXRSZWdpb25P
YmplY3RzUmVnaW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpyZXN0
b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpjb21wdXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6c3lzdGVt
Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpyZXN1bWVXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvVmVydGljYWxQb3NpdGlvbkNhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpWZXJ0aWNhbFBvc2l0aW9uQ2FjaGU6OmdldCk6CisgICAgICAgICogcmVuZGVyaW5n
L1dyYXBTaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcFNoYXBlSW5mbzo6ZW5z
dXJlV3JhcFNoYXBlSW5mb0ZvclJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lVGV4dDo6Y2hhcmFjdGVyU3RhcnRzTmV3VGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjpyZXNvdXJjZURlc3Ryb3llZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN3YXBJdGVtc0luTGF5b3V0QXR0cmlidXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5
b3V0QXR0cmlidXRlczo6ZHVtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91
dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZENoYXJhY3RlckRhdGFNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpmaWxsQ2hhcmFjdGVyRGF0YU1h
cCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmU6OmxheW91dFRleHRPbkxpbmVPclBh
dGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5k
ZXJlcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFTeW5jOjpzeW5jKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VNYXA6OnNldEl0ZW0pOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsZWFyQWxsT3JpZ2lu
c0ZvckRlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpz
eW5jKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlQW5pbWF0aW9uRWxlbWVudEZy
b21UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1v
dmVBbGxBbmltYXRpb25FbGVtZW50c0Zyb21UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjppc0VsZW1lbnRQZW5kaW5nUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21Q
ZW5kaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxFbGVt
ZW50UmVmZXJlbmNlc0ZvclRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6flNWR0VsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U01J
TFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6On5T
VkdJbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNs
aWVudEZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpyZXF1ZXN0
ZWRTaXplQW5kU2NhbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OmltYWdl
Q29udGVudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0bWFw
SW1hZ2VGb3JSZW5kZXJlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6ZWZmZWN0
UmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjphZGRCdWls
dGluRWZmZWN0cyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVk
UHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6
YWRkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpoYXNQZW5kaW5nQWN0
aXZpdHkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJFdmVudFF1ZXVlOjpjbG9zZSk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1
ZXN0SGVhZGVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Omdl
dEFsbFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpjcmVhdGVGdW5jdGlvbik6CisgICAgICAgICogeG1s
L1hQYXRoUGFyc2VyLmNwcDoKKyAgICAgICAgKGlzQXhpc05hbWUpOgorICAgICAgICAqIHhtbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4c2x0UGFyYW1BcnJh
eUZyb21QYXJhbWV0ZXJNYXApOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcpOgorCiAy
MDEyLTA4LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIENy
YXNoIGluIFdlYkNvcmU6OmxvZ1BsdWdpblJlcXVlc3QgKyAxODMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCmluZGV4IDdjZGY1OGJkNmJkZjM1N2I0NmI4ZGJkMmRmZDkwZDU4N2MxZDNlZGQu
LjU3N2U4ZTc5ZDU4ODFiZmE1MDQ1ZjNhZDhlYzZiMmY4NWMxNDBmMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA4LTI4ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTI2OTE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMjY5MTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MjM5CisKKyAgICAgICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5kIGZpeGVzIG5vdGhp
bmcgKFJlcXVlc3RlZCBieSBwaXpsbyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAq
IEFwaS9CYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVQcml2YXRlOjpzZXRCYWNraW5nU3RvcmVSZWN0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6dmlzaWJsZVRpbGVzUmVjdCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc2V0VGlsZXMp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRh
dGVUaWxlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OnVwZGF0ZVRpbGVzRm9yU2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbik6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6Om1hcEZyb21UcmFuc2Zvcm1l
ZENvbnRlbnRzVG9UaWxlcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJJbXBsOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbDo6b25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckltcGw6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhQ2xp
ZW50SW1wbDo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9BYm91dERhdGEuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpkdW1wSlNDVHlw
ZUNvdW50U2V0VG9UYWJsZUhUTUwpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMYXll
cnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGcmFtZUxheWVyczo6cmVtb3Zl
TGF5ZXJCeUZyYW1lKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RnJhbWVMYXllcnM6
OmNvbW1pdE9uV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RnJh
bWVMYXllcnM6OmNhbGN1bGF0ZVJvb3RMYXllcik6CisKIDIwMTItMDgtMjggIENhaW8gTWFyY2Vs
byBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9y
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2Mjg0NTE1ZmI0NWEwODc0ODljNjQ0NWQ4
YmNhOWRkYzExNDJhNjM0Li43ZmU2OGU0ODhmZjc0YjZhNmFjNDFiNmRmNDZhNWNiZTAwN2M0MThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTI4
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMjY5MTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MjM5CisKKyAgICAgICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5k
IGZpeGVzIG5vdGhpbmcgKFJlcXVlc3RlZCBieSBwaXpsbyBvbgorICAgICAgICAjd2Via2l0KS4K
KworICAgICAgICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVt
b3ZlKToKKyAgICAgICAgKiBzcmMvV2ViSURCTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEpOgorICAgICAgICAqIHNyYy9XZWJJbnRl
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnQ6OmV4dHJhc1ZhbHVlKToKKyAgICAg
ICAgKiB0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEyLTA4LTI4ICBXLiBKYW1lcyBNYWNMZWFuICA8d2pt
YWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbdW5yZXZpZXdlZF0gQ29tcGlsZSBmaXg6
IHdpbmRvd3MgY29tcGlsZXIgZXhwZWN0cyBmbG9hdCBidXQgZmluZCBkb3VibGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggYjdkNmIzZjEwZDRlOWRkZWFmNTU3MmU4YWQwNjllOGM5ZWJiNmJiYS4uNTlk
ZjRhZTZjYjhiMjExYzE5NDEyNTE1YzU3YjEyODAzMjExNGVlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2OTE0
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY5MTQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjM5CisKKyAgICAg
ICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5kIGZpeGVzIG5vdGhpbmcgKFJlcXVlc3RlZCBieSBw
aXpsbyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKiBld2svZXdrX2ludGVudC5jcHA6
CisgICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6CisKIDIwMTItMDgtMjggIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJh
dG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQ4YjNmMDg0ZDU1NTI4OTkyM2VkYmQ4MDNhOTZhYTFm
MzkwZGU4OTUuLjg0ZDgzMTMxYTJjZGE2MGJkYTlkMGEzOWI3YjdkZmIxYmFlZmM4MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yOCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEyNjkxNC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTI2OTE0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTIzOQorCisgICAgICAgIGl0IGJyZWFrcyBldmVyeXRoaW5nIGFuZCBmaXhlcyBub3RoaW5nIChS
ZXF1ZXN0ZWQgYnkgcGl6bG8gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzR3RrOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmF2
aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFzZUltcG9ydEZp
bmlzaGVkKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcDoKKyAgICAgICAg
KHdlYmtpdF93ZWJfcGx1Z2luX2dldF9taW1ldHlwZXMpOgorCiAyMDEyLTA4LTI4ICBDYWlvIE1h
cmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAK
ICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1hcCBpdGVy
YXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBjZWQ2YzVmNzE2ZTZlMTY1NjA5YWZlNTBkZTk2M2Ix
YzllNzliMmUzLi43ZDE5MjM0M2ZlZjJjYzc3YTNiMjZlODk3ZjRiMWI2MzFjNDg2NDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMDgtMjggIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMjY5MTQuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEyNjkxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyMzkKKworICAgICAgICBpdCBicmVha3MgZXZlcnl0aGluZyBhbmQgZml4ZXMgbm90aGluZyAo
UmVxdWVzdGVkIGJ5IHBpemxvIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogSGlz
dG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSByZW1vdmVJ
dGVtRnJvbURhdGVDYWNoZXM6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIG9yZGVy
ZWRMYXN0VmlzaXRlZERheXNdKToKKyAgICAgICAgKFdlYkhpc3RvcnlXcml0ZXI6OldlYkhpc3Rv
cnlXcml0ZXIpOgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAg
ICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRz
XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGphdmFTY3JpcHRPYmplY3RUeXBlQ291
bnRzXSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aG9zdEZv
clBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OnBs
dWdpbkhvc3REaWVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
cjo6ZGlkQ3JlYXRlV2luZG93KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0UHJv
eHk6OnBsdWdpbkhvc3REaWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6cmV0YWluKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVj
dE1hcDo6cmVsZWFzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6TG9jYWxPYmplY3RNYXA6OmZvcmdldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6d2ViRnJhbWVEaWRGaW5pc2hMb2FkV2l0aFJlYXNvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y2FuY2VsQ2hlY2tJ
ZkFsbG93ZWRUb0xvYWRVUkwpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIFBs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBs
dWdpblZpZXcgc3RvcFRpbWVyc10pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcg
c3RhcnRUaW1lcnNdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQubW06CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3cpOgorICAgICAg
ICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAo
V2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjb21tYW5kTmFtZUZvclNl
bGVjdG9yKToKKwogMjAxMi0wOC0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2Vjb25kIGJ1aWxkIGZpeCB0byByMTI2OTA5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1YWFk
ZTNiMjgwZWNhM2M3ZDljYTc2MjMyMWY5ZTQzODU1NjdiZmE2Li5iNDEyMmM4ODMyNDJhMDVkOWNh
MTUzYWMxNGQ5ODQzYmIzZDQyZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY5MTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjM5CisKKyAgICAgICAgaXQgYnJlYWtzIGV2ZXJ5
dGhpbmcgYW5kIGZpeGVzIG5vdGhpbmcgKFJlcXVlc3RlZCBieSBwaXpsbyBvbgorICAgICAgICAj
d2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChleHRyYWN0
Q29udGVudFR5cGVGcm9tUGx1Z2luVmVjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKToKKwogMjAxMi0wOC0yOCAgQ2FpbyBN
YXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRl
cmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDkzNjUzMzAyMGFjMmJiYmYxM2UzYjI3ZThkZjRi
ZTQxOWM5MDk0Yi4uZDJmNTBhODQzNmI2NzdkNTRhNjMxNTY5OTQyYzg0ZTZlZmU3NDhhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTI2OTE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xMjY5MTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MjM5CisKKyAgICAgICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5kIGZpeGVzIG5vdGhpbmcg
KFJlcXVlc3RlZCBieSBwaXpsbyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIENP
TVByb3BlcnR5QmFnLmg6CisgICAgICAgICg6OlJlYWQpOgorICAgICAgICAoOjpHZXRQcm9wZXJ0
eUluZm8pOgorICAgICAgICAqIFdlYkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgICogV2ViSGlz
dG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5OjpyZW1vdmVJdGVtRnJvbURhdGVDYWNoZXMp
OgorICAgICAgICAqIFdlYktpdENPTUFQSS5jcHA6CisgICAgICAgIChjbGFzc0ZhY3RvcnkpOgor
ICAgICAgICAqIFdlYktpdFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0U3RhdGlzdGlj
czo6Y29tQ2xhc3NOYW1lQ291bnRzKToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIu
Y3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpwb3N0Tm90aWZpY2F0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjphZGRPYnNlcnZlcik6Cisg
ICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OnJlbW92ZU9ic2VydmVyKToKKwogMjAxMi0w
OC0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGlu
IEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IDgzNWVkNjQ1ZDExMTkz
ZGRjODQ4MTY3Y2NkNGZmZjFlYmEyMDhkMDAuLmQ2NmZhNTkyMzg5YTJkOGJlMDQ5ZDBlMWEzN2E4
NzU3MDdjYjFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDgtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjkxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMzkKKworICAgICAgICBpdCBicmVha3MgZXZlcnl0aGlu
ZyBhbmQgZml4ZXMgbm90aGluZyAoUmVxdWVzdGVkIGJ5IHBpemxvIG9uCisgICAgICAgICN3ZWJr
aXQpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
Y3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8pOgor
CiAyMDEyLTA4LTI4ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZl
aXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkv
dmFsdWUgaW4gSGFzaE1hcCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYjBjZWViNTBmMTg3Mjhh
YTI1NGRlNDYxODA5ZTVlNTlhMjMzMjY3Li5iZjVlZTcyZTZmMmY4YTAwZjQxNDIxZjdiM2M2NTU5
ZDMyZGNjNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDEyLTA4LTI4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjY5MTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1MjM5CisKKyAgICAgICAgaXQgYnJlYWtzIGV2ZXJ5dGhpbmcgYW5kIGZpeGVz
IG5vdGhpbmcgKFJlcXVlc3RlZCBieSBwaXpsbyBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6U3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vZ3RrL1dvcmtRdWV1
ZUd0ay5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVy
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6dW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcik6Cisg
ICAgICAgICogUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHA6CisgICAgICAgIChXb3JrUXVl
dWU6OnVucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJlbW90ZU9i
amVjdE1hcDo6cGx1Z2luRGVzdHJveWVkKToKKyAgICAgICAgKiBTaGFyZWQvVXNlck1lc3NhZ2VD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VFbmNvZGVyOjpiYXNlRW5jb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZTo6Z2V0Qm9vbFZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvcXQvQXJndW1lbnRDb2RlcnNRdC5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcDoKKyAgICAgICAgKF9Fd2tfQmFja19Gb3J3
YXJkX0xpc3Q6On5fRXdrX0JhY2tfRm9yd2FyZF9MaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHA6CisgICAgICAgIChfRXdrX0NvbnRleHQ6On5fRXdrX0Nv
bnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKF9ld2tfdmlld19wcml2X2xvYWRpbmdfcmVzb3VyY2VzX2NsZWFyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfc3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZv
cmFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9leHBlY3RlZFByZXZpZXdDYWxsYmFja0ZvclJlY3Q6
XSk6CisgICAgICAgIChwYWdlRGlkRHJhd1RvUERGKToKKyAgICAgICAgKC1bV0tQcmludGluZ1Zp
ZXcgX2RyYXdQcmV2aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bToKKyAgICAgICAgKGNvbW1hbmROYW1lRm9yU2VsZWN0b3IpOgorICAgICAgICAoLVtXS1ZpZXcg
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y29tbWl0VGlsZU9wZXJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5
Ojp1cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OmFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OmFzc2lnbkltYWdlVG9MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVz
dHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjp+V2ViSW5zcGVj
dG9yU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpyZWdpc3Rl
clBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb246OnNlbmRIVFRQUmVzcG9uc2VIZWFkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvcXQvV2ViSW5zcGVjdG9yU2VydmVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmJ1aWxkUGFnZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGljdGlv
bmFyeUZyb21IYXNoTWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpkaWRGaW5pc2hVUkxJbXBvcnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW50ZW50RGF0YTo6ZXh0cmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmFkZEJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZnJhbWVDb3VudEluUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0Rm9yR2VvbG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3Jl
YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUludGVudDo6ZXh0cmFzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OnBvbGljeUZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpyZW1vdmVOb3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6aW52YWxpZGF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmRlc3Ryb3lTdHJlYW0pOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6dW5zY2hlZHVsZVRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmZyYW1lRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZhaWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YnVpbGRIVFRQSGVhZGVycyk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6On5QbHVnaW5WaWV3KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjps
YXllckJ5SUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
Q29vcmRpbmF0b3I6OmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVDb29yZGluYXRvcjo6cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
Ojpjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dmlzaXRlZExpbmtTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphbGxWaXNpdGVkTGlua1N0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZvY3VzZWRXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OmZy
b21Db3VudGVkU2V0VG9IYXNoTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0
VGV4dENoZWNrZXJTdGF0ZSk6CisKIDIwMTItMDgtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gRXhwb3NlIHByb2Nlc3MgbW9kZWwgYXMgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDg4
ODZmMTExNTA0ZWRkZjI3MmNjODg3NmYwNGZjMDVhNGM4MjgwYzYuLjJjM2UwZTg1OWYxNmU4OTU4
MWEyZmEzNTZiODQ5MmYyMDM3OTIwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCkBAIC04MywxMyArODMsMTMgQEAgc3RydWN0IEpTQ2FsbGJhY2tP
YmplY3REYXRhIDogV2Vha0hhbmRsZU93bmVyIHsKICAgICAgICAgICAgIFByaXZhdGVQcm9wZXJ0
eU1hcDo6Y29uc3RfaXRlcmF0b3IgbG9jYXRpb24gPSBtX3Byb3BlcnR5TWFwLmZpbmQocHJvcGVy
dHlOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICBpZiAobG9jYXRpb24gPT0gbV9wcm9wZXJ0eU1h
cC5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIGxvY2F0aW9uLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlv
bi0+c2Vjb25kLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFBy
aXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgewog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGVtcHR5OwotICAgICAgICAgICAgbV9w
cm9wZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJhdG9yLT52YWx1
ZS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlN
YXAuYWRkKHByb3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5pdGVyYXRvci0+c2Vjb25kLnNldChn
bG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2
b2lkIGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CkBAIC0xMDAsOCArMTAwLDggQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vha0hh
bmRsZU93bmVyIHsKICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKFByaXZhdGVQcm9wZXJ0eU1hcDo6aXRl
cmF0b3IgcHRyID0gbV9wcm9wZXJ0eU1hcC5iZWdpbigpOyBwdHIgIT0gbV9wcm9wZXJ0eU1hcC5l
bmQoKTsgKytwdHIpIHsKLSAgICAgICAgICAgICAgICBpZiAocHRyLT52YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnB0ci0+dmFsdWUpOworICAgICAgICAgICAgICAg
IGlmIChwdHItPnNlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnB0
ci0+c2Vjb25kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDJj
YWUyMWM1MmE4OGE4YjIyZjVjM2YzNjAzNDViZGYwMmViNzk1ZjMuLjE2MGY0ODg4N2I4NzJjMjli
YzNlMmFkYmVkYzkxZWZhZmNkNGQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC00NjUsOCArNDY1LDggQEAg
dm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAgICAgICAgICAgdHlwZWRlZiBPcGFxdWVKU0NsYXNz
U3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgICAgICAg
aXRlcmF0b3IgZW5kID0gc3RhdGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoaXRl
cmF0b3IgaXQgPSBzdGF0aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+a2V5LmdldCgpOwotICAgICAgICAg
ICAgICAgIFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBpdC0+Zmlyc3QuZ2V0KCk7CisgICAgICAgICAg
ICAgICAgU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS0+Z2V0UHJvcGVydHkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMg
JiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKSkpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElk
ZW50aWZpZXIoZXhlYywgbmFtZSkpOwogICAgICAgICAgICAgfQpAQCAtNDc2LDggKzQ3Niw4IEBA
IHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSoKICAgICAgICAgICAgIHR5cGVkZWYgT3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAg
ICAgIGl0ZXJhdG9yIGVuZCA9IHN0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgICAgICBm
b3IgKGl0ZXJhdG9yIGl0ID0gc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQtPmtleS5nZXQoKTsK
LSAgICAgICAgICAgICAgICBTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IGl0LT52YWx1ZS5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gaXQtPmZpcnN0LmdldCgp
OworICAgICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gaXQtPnNlY29u
ZC5nZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
KGV4ZWMsIG5hbWUpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2xhc3NSZWYuY3BwCmluZGV4IDk2NWVlZGQ0ZjFiODZkYWRiMzRlNjRiZWIwMzg3YWRjMzAxMjBj
NmQuLjEzNDQzMTY1NDc4OTE1ZjhhMTNhNGRiZDM4MDQ0MWVkMjRiYzRkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTA3LDEzICsxMDcsMTMgQEAgT3Bh
cXVlSlNDbGFzczo6fk9wYXF1ZUpTQ2xhc3MoKQogICAgIGlmIChtX3N0YXRpY1ZhbHVlcykgewog
ICAgICAgICBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fc3RhdGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3Rh
dGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGF0aWNWYWx1ZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNJZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+Zmlyc3QtPmlzSWRlbnRpZmllcigp
KTsKICAgICB9CiAKICAgICBpZiAobV9zdGF0aWNGdW5jdGlvbnMpIHsKICAgICAgICAgT3BhcXVl
SlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N0YXRp
Y0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0
aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhdGljRnVuY3Rpb25zLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghaXQtPmZpcnN0LT5pc0lkZW50aWZpZXIoKSk7
CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC0xNDcsOCArMTQ3LDggQEAgT3BhcXVlSlNDbGFzc0Nv
bnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBP
cGFxdWVKU0MKICAgICAgICAgc3RhdGljVmFsdWVzID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xh
c3NTdGF0aWNWYWx1ZXNUYWJsZSk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgp
OwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzSWRlbnRpZmllcigpKTsKLSAg
ICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKFN0cmluZ0ltcGw6OmNyZWF0ZShpdC0+a2V5LT5j
aGFyYWN0ZXJzKCksIGl0LT5rZXktPmxlbmd0aCgpKSwgYWRvcHRQdHIobmV3IFN0YXRpY1ZhbHVl
RW50cnkoaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQt
PnZhbHVlLT5hdHRyaWJ1dGVzKSkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+Zmlyc3QtPmlz
SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKFN0cmluZ0ltcGw6
OmNyZWF0ZShpdC0+Zmlyc3QtPmNoYXJhY3RlcnMoKSwgaXQtPmZpcnN0LT5sZW5ndGgoKSksIGFk
b3B0UHRyKG5ldyBTdGF0aWNWYWx1ZUVudHJ5KGl0LT5zZWNvbmQtPmdldFByb3BlcnR5LCBpdC0+
c2Vjb25kLT5zZXRQcm9wZXJ0eSwgaXQtPnNlY29uZC0+YXR0cmlidXRlcykpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTU2LDE1ICsxNTYsMTUgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBPcGFxdWVKU0MK
ICAgICAgICAgc3RhdGljRnVuY3Rpb25zID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NTdGF0
aWNGdW5jdGlvbnNUYWJsZSk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNU
YWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVu
ZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzSWRlbnRpZmll
cigpKTsKLSAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKFN0cmluZ0ltcGw6OmNyZWF0
ZShpdC0+a2V5LT5jaGFyYWN0ZXJzKCksIGl0LT5rZXktPmxlbmd0aCgpKSwgYWRvcHRQdHIobmV3
IFN0YXRpY0Z1bmN0aW9uRW50cnkoaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVl
LT5hdHRyaWJ1dGVzKSkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+Zmlyc3QtPmlzSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKFN0cmluZ0ltcGw6OmNy
ZWF0ZShpdC0+Zmlyc3QtPmNoYXJhY3RlcnMoKSwgaXQtPmZpcnN0LT5sZW5ndGgoKSksIGFkb3B0
UHRyKG5ldyBTdGF0aWNGdW5jdGlvbkVudHJ5KGl0LT5zZWNvbmQtPmNhbGxBc0Z1bmN0aW9uLCBp
dC0+c2Vjb25kLT5hdHRyaWJ1dGVzKSkpOwogICAgICAgICB9CiAgICAgfQogfQogCiBPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
PiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRk
KHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkK
ICAgICAgICAgY29udGV4dERhdGEgPSBhZG9wdFB0cihuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcykpOwogICAgIHJldHVybiAqY29udGV4dERhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDIz
ZGExYTllODdkZmQ3ZWJkNGE2N2ZiNjM4MzExYjIxOTBiMzFhNTIuLjNmZTI5NjVlNTFmMTAxMjAz
MTI3MzgwODZjYWQyMWQzYTlhNTE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgZGF0YUxvZygiICAlMWQgPSB7XG4iLCBp
KTsKICAgICAgICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5v
ZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgIGZvciAoU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKQotICAgICAgICAgICAgICAgIGRhdGFMb2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0
cmluZyhpdGVyLT5rZXkpLnV0ZjgoKS5kYXRhKCksIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7
CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBVU3RyaW5n
KGl0ZXItPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBpdGVyLT5zZWNvbmQuYnJhbmNoT2Zmc2V0KTsK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwogICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNp
emUoKSk7CkBAIC0xODkzLDcgKzE4OTMsNyBAQCB2b2lkIEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdn
cmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEV2YWxDYWNoZU1hcDo6aXRlcmF0
b3IgZW5kID0gbV9jYWNoZU1hcC5lbmQoKTsKICAgICBmb3IgKEV2YWxDYWNoZU1hcDo6aXRlcmF0
b3IgcHRyID0gbV9jYWNoZU1hcC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnB0ci0+dmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRy
LT5zZWNvbmQpOwogfQogCiB2b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCkBAIC0zMDA2LDggKzMwMDYsOCBAQCBVU3RyaW5nIENvZGVCbG9jazo6bmFt
ZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKIHsKICAgICBTeW1ib2xUYWJsZTo6aXRl
cmF0b3IgZW5kID0gbV9zeW1ib2xUYWJsZS0+ZW5kKCk7CiAgICAgZm9yIChTeW1ib2xUYWJsZTo6
aXRlcmF0b3IgcHRyID0gbV9zeW1ib2xUYWJsZS0+YmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIp
IHsKLSAgICAgICAgaWYgKHB0ci0+dmFsdWUuZ2V0SW5kZXgoKSA9PSByZWdpc3Rlck51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBVU3RyaW5nKHB0ci0+a2V5KTsKKyAgICAgICAgaWYgKHB0ci0+
c2Vjb25kLmdldEluZGV4KCkgPT0gcmVnaXN0ZXJOdW1iZXIpCisgICAgICAgICAgICByZXR1cm4g
VVN0cmluZyhwdHItPmZpcnN0KTsKICAgICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYm
IHJlZ2lzdGVyTnVtYmVyID09IGFjdGl2YXRpb25SZWdpc3RlcigpKQogICAgICAgICByZXR1cm4g
ImFjdGl2YXRpb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5o
CmluZGV4IDYwMzZjZGE1MWQ1YmNmNTY1ZWFlOTdlOGRiMjY1NTFjOTAyNTVjNzMuLjViYmUwNDcx
MDdmNWIwMWMwMjg5YmVhMzMxODZlMWY4NGEzYWFmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zm
c2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgICAgIHJldHVybiBsb2Mt
PnZhbHVlLmJyYW5jaE9mZnNldDsKKyAgICAgICAgICAgIHJldHVybiBsb2MtPnNlY29uZC5icmFu
Y2hPZmZzZXQ7CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCkBAIC02Nyw3ICs2Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0
ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICAgICAgaWYgKGxv
YyA9PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGN0aURlZmF1bHQ7Ci0gICAgICAgICAg
ICByZXR1cm4gbG9jLT52YWx1ZS5jdGlPZmZzZXQ7CisgICAgICAgICAgICByZXR1cm4gbG9jLT5z
ZWNvbmQuY3RpT2Zmc2V0OwogICAgICAgICB9CiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggZjkyM2U0YTI4YmJjYjAwMzlhNTM3M2U5NmY4NDUyM2U3OWNlZTA4OC4uNTlm
MGQwMjM0MzQxN2E3NDFiYzgyNTczN2QyNjExM2NkYzdhMzI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZVBhcnNlcjo6Z2V0SWZQcmVzZW50KAogICAgIGlmIChpdGVyID09IG1fbWFw
LmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICByZXR1cm4gaXRlci0+dmFsdWU7
CisgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKIH0KIAogU3BlY3VsYXRlZFR5cGUgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCmluZGV4IGY5YjgyNDVlNTQ3N2E4ZjMwZWQ1
MjFjMzEyNmJmMDE5ZDVjYjJlNjcuLmYwN2RjNzlmYjc4MjU4ZDg2MWQ0ZjQ4NTE3ZjFiNTViMjk2
Mzk1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGlu
Z1Rvb2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rv
b2wuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6OmR1bXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIFZlY3RvcjxTY3JpcHRTYW1wbGVSZWNvcmQqPiBjb2RlQmxvY2tTYW1w
bGVzKHNjb3BlQ291bnQpOwogICAgIFNjcmlwdFNhbXBsZVJlY29yZE1hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fc2NvcGVTYW1wbGVNYXAtPmJlZ2luKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
Y29wZUNvdW50OyArK2ksICsraXRlcikKLSAgICAgICAgY29kZUJsb2NrU2FtcGxlc1tpXSA9IGl0
ZXItPnZhbHVlLmdldCgpOworICAgICAgICBjb2RlQmxvY2tTYW1wbGVzW2ldID0gaXRlci0+c2Vj
b25kLmdldCgpOwogCiAgICAgcXNvcnQoY29kZUJsb2NrU2FtcGxlcy5iZWdpbigpLCBzY29wZUNv
dW50LCBzaXplb2YoU2NyaXB0U2FtcGxlUmVjb3JkKiksIGNvbXBhcmVTY3JpcHRTYW1wbGVSZWNv
cmRzKTsKIApAQCAtNDQ2LDggKzQ0Niw4IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICBWZWN0b3I8TGluZUNvdW50SW5mbz4gbGluZUNv
dW50SW5mbyhsaW5lc0NvdW50KTsKICAgICAgICAgICAgICAgICBpbnQgbGluZW5vID0gMDsKICAg
ICAgICAgICAgICAgICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsdW5zaWduZWQ+OjppdGVyYXRvciBp
dGVyID0gbGluZUNvdW50cy5iZWdpbigpOyBpdGVyICE9IGxpbmVDb3VudHMuZW5kKCk7ICsraXRl
ciwgKytsaW5lbm8pIHsKLSAgICAgICAgICAgICAgICAgICAgbGluZUNvdW50SW5mb1tsaW5lbm9d
LmxpbmUgPSBpdGVyLT5rZXk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVDb3VudEluZm9bbGlu
ZW5vXS5jb3VudCA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBsaW5lQ291bnRJ
bmZvW2xpbmVub10ubGluZSA9IGl0ZXItPmZpcnN0OworICAgICAgICAgICAgICAgICAgICBsaW5l
Q291bnRJbmZvW2xpbmVub10uY291bnQgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgcXNvcnQobGluZUNvdW50SW5mby5iZWdpbigpLCBsaW5lc0Nv
dW50LCBzaXplb2YoTGluZUNvdW50SW5mbyksIGNvbXBhcmVMaW5lQ291bnRJbmZvU2FtcGxpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCA2OGJmYzg0ZWYyMjljYzJhMWRlODU3ZjA2N2I5N2ExNmEz
ZTg1ZGIwLi4wNWRmOWNhZmJjMzM0MTE3Y2MzMzdkYTI0ODcxZDhjZTNiYmRhZGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50LCBSZWdpc3RlCiAg
ICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVu
dC5pbXBsKCksIG5ld0VudHJ5KTsKIAogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAg
ICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXRJbmRleCgp
KTsKKyAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0
SW5kZXgoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI0OCw4ICsyNDgs
OCBAQCBpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcigKICAgICAgICAgbmV3RW50
cnkuYXR0ZW1wdFRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJsZTo6QWRkUmVzdWx0IHJlc3VsdCA9
IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwogICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5ub3RpZnlX
cml0ZSgpOwotICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0SW5kZXgo
KTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKKyAgICAg
ICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOwogICAgIH0KICAg
ICByZXR1cm4gaW5kZXg7CiB9CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB1bnNpZ25lZCBCeXRlY29k
ZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJ
ZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgcmVwKSk7CiAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudFZhbHVlKEpTVmFsdWUgdikK
QEAgLTEwNzYsNyArMTA3Niw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRD
b25zdGFudFZhbHVlKEpTVmFsdWUgdikKICAgICAgICAgKyttX25leHRDb25zdGFudE9mZnNldDsK
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KEpTVmFsdWUodikpOwogICAgIH0gZWxz
ZQotICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGluZGV4
ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29s
UmVnaXN0ZXJzW2luZGV4XTsKIH0KQEAgLTEyMjMsNyArMTIyMyw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIp
CiAgICAgLy8gd29yayBjb3JyZWN0bHkgd2l0aCBOYU4gYXMgYSBrZXkuCiAgICAgaWYgKGlzbmFu
KG51bWJlcikgfHwgbnVtYmVyID09IEhhc2hUcmFpdHM8ZG91YmxlPjo6ZW1wdHlWYWx1ZSgpIHx8
IEhhc2hUcmFpdHM8ZG91YmxlPjo6aXNEZWxldGVkVmFsdWUobnVtYmVyKSkKICAgICAgICAgcmV0
dXJuIGVtaXRMb2FkKGRzdCwganNOdW1iZXIobnVtYmVyKSk7Ci0gICAgSlNWYWx1ZSYgdmFsdWVJ
bk1hcCA9IG1fbnVtYmVyTWFwLmFkZChudW1iZXIsIEpTVmFsdWUoKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1Zh
bHVlKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAgICB2
YWx1ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCB2
YWx1ZUluTWFwKTsKQEAgLTEyMzEsNyArMTIzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9
IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkKICAgICAg
ICAgc3RyaW5nSW5NYXAgPSBqc093bmVkU3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51
c3RyaW5nKCkpOwogICAgIHJldHVybiBlbWl0TG9hZChkc3QsIEpTVmFsdWUoc3RyaW5nSW5NYXAp
KTsKQEAgLTE3NzMsNyArMTc3Myw3IEBAIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRD
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVy
YXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
LSAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIu
aW1wbCgpLCAwKS5pdGVyYXRvci0+dmFsdWU7CisgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9
IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICBpZiAoIXN0cmluZ0luTWFwKSB7CiAgICAgICAgIHN0cmluZ0luTWFwID0ganNTdHJpbmco
Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAgICAgIGFkZENvbnN0YW50
VmFsdWUoc3RyaW5nSW5NYXApOwpAQCAtMTg0NSw4ICsxODQ1LDggQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRMYXp5TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
dGlvbkJvZHkKIHsKICAgICBGdW5jdGlvbk9mZnNldE1hcDo6QWRkUmVzdWx0IHB0ciA9IG1fZnVu
Y3Rpb25PZmZzZXRzLmFkZChmdW5jdGlvbiwgMCk7CiAgICAgaWYgKHB0ci5pc05ld0VudHJ5KQot
ICAgICAgICBwdHIuaXRlcmF0b3ItPnZhbHVlID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRhLCBmdW5jdGlvbikpOwotICAgIHJldHVybiBlbWl0
TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0ci5pdGVyYXRvci0+dmFsdWUsIHRydWUpOworICAg
ICAgICBwdHIuaXRlcmF0b3ItPnNlY29uZCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wo
bWFrZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24pKTsKKyAgICByZXR1cm4gZW1pdE5l
d0Z1bmN0aW9uSW50ZXJuYWwoZHN0LCBwdHIuaXRlcmF0b3ItPnNlY29uZCwgdHJ1ZSk7CiB9CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChS
ZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4LCBib29sIGRvTnVsbENoZWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IGZjNDdiYTdiY2JiYzU1ZTdjMGFiMGMyYzk2ZTI4MWEzOWNmMWQwM2IuLjBkNjM4MDgzYTYz
YmZhNDg3MWExOWVjMTQzZTFlOTZiNTI0OWQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI2MSw3ICsyNjEsNyBA
QCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBw
YWlyKG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KDApKTsKICAgICAgICAgICAgIEdl
dHRlclNldHRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+bmFtZSgpLmlt
cGwoKSwgcGFpcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2Vjb25kID0gbm9kZTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5zZWNvbmQgPSBub2RlOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSByZW1haW5pbmcgcHJvcGVydGllcyBpbiB0
aGUgbGlzdC4KQEAgLTI3OSw3ICsyNzksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAg
ICAgICAgICAgQVNTRVJUKG5vZGUtPm1fdHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkdldHRlciB8fCBu
b2RlLT5tX3R5cGUgPT0gUHJvcGVydHlOb2RlOjpTZXR0ZXIpOwogICAgICAgICAgICAgR2V0dGVy
U2V0dGVyTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG5vZGUtPm5hbWUoKS5pbXBsKCkpOwog
ICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0gICAgICAgICAgICBHZXR0ZXJT
ZXR0ZXJQYWlyJiBwYWlyID0gaXQtPnZhbHVlOworICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFp
ciYgcGFpciA9IGl0LT5zZWNvbmQ7CiAKICAgICAgICAgICAgIC8vIFdhcyB0aGlzIGFscmVhZHkg
Z2VuZXJhdGVkIGFzIGEgcGFydCBvZiBpdHMgcGFydG5lcj8KICAgICAgICAgICAgIGlmIChwYWly
LnNlY29uZCA9PSBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKaW5kZXggNTQ4M2QyZTBlNzRhNzQ2YmY2YmRkNWYyNjMxOTFiMTljMDNhZjlhNS4uMGE2
NmQ2ZjM0ZTZmNGJjOWNjNmQwNDdiZjk4NmRmYjQxYjcwZWJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSBS
ZWNvbXBpbGVyOjp+UmVjb21waWxlcigpCiAgICAgLy8gSmF2YVNjcmlwdCBpbiB0aGUgaW5zcGVj
dG9yLgogICAgIFNvdXJjZVByb3ZpZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3NvdXJj
ZVByb3ZpZGVycy5lbmQoKTsKICAgICBmb3IgKFNvdXJjZVByb3ZpZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9zb3VyY2VQcm92aWRlcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikKLSAgICAgICAgbV9kZWJ1Z2dlci0+c291cmNlUGFyc2VkKGl0ZXItPnZhbHVlLCBpdGVyLT5r
ZXksIC0xLCBVU3RyaW5nKCkpOworICAgICAgICBtX2RlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoaXRl
ci0+c2Vjb25kLCBpdGVyLT5maXJzdCwgLTEsIFVTdHJpbmcoKSk7CiB9CiAKIGlubGluZSB2b2lk
IFJlY29tcGlsZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAKaW5kZXggYWVlMjUyNzAyMjc5ZmUxODZiZTYxNmMzYzM2MzFiMjgwZDU1MDI1MC4uNjQw
YTBhOTY2NWIxNmViNTQ1ZGI1MzViMGE3ODRiY2VjMzkzOGUzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgaXQncyBhIHZhcmlhYmxlIHRoYXQgd2UgdGhpbmsg
aXMgYWxpYXNlZCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFyZ3VtZW50cywg
dGhhdCB3ZSBrbm93IHRoYXQgaXQgbWlnaHQgYWN0dWFsbHkgbm90IGJlLgogICAgICAgICAgICAg
ICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRh
KS0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2lu
Zy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEubWVyZ2VOb25Bcmd1bWVudHNBc3NpZ25tZW50KCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzMiw3ICsyMzIsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEg
PQotICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlh
YmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVu
dHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5tZXJnZUFyZ3VtZW50c0Fzc2lnbm1lbnQoKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHZhcmlhYmxlJ3MgdXNlcyBhcmUgaW4gdGhl
IHNhbWUgY29udGV4dCBhcwogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYXJndW1lbnRzIGl0
IGlzIGFsaWFzaW5nLgpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5n
RGF0YSYgZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5n
LmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS5jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEm
IGRhdGEgPQotICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5k
KHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9h
cmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAg
ICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgZmx1c2ggdGhlbiBieSBkZWZpbml0aW9uIGl0
IGVzY2FwZXMuCkBAIC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRh
JiBkYXRhID0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmlu
ZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
YXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT5zZWNvbmQ7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VOb25Bcmd1bWVudHNBc3NpZ25tZW50KCk7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTQsNyArMzU0
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQotICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKQEAgLTM3Myw3
ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2FwdHVyZWQiKTsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0
YSYgZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2
YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVu
dHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAgICAgICAg
ICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWxsQ29u
dGV4dElzVmFsaWQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0KQpAQCAtNDU0
LDcgKzQ1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpbmdzLiBOb3Rl
IGFsc28gdGhhdCB0aGUgU2V0TG9jYWwgc2hvdWxkIGJlY29tZSBkZWFkIGFzIHNvb24gYXMKICAg
ICAgICAgICAgICAgICAgICAgLy8gd2UgcmVwbGFjZSBhbGwgdXNlcyBvZiB0aGlzIHZhcmlhYmxl
IHdpdGggR2V0TXlBcmd1bWVudHNMZW5ndGggYW5kCiAgICAgICAgICAgICAgICAgICAgIC8vIEdl
dE15QXJndW1lbnRCeVZhbC4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRz
QWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZS5pc1ZhbGlkKCkpOworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxl
QWNjZXNzRGF0YSktPnNlY29uZC5pc1ZhbGlkKCkpOwogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0FyZ3VtZW50c0FsaWFzKHRydWUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC03MTQsNyAr
NzE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlz
Q2FwdHVyZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0gbV9hcmd1bWVudHNBbGlhc2luZy5m
aW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICAgICAgQXJndW1lbnRzQWxp
YXNpbmdEYXRhJiBkYXRhID0gbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNz
RGF0YSktPnNlY29uZDsKICAgICAgICAgICAgIGRhdGEuZXNjYXBlcyA9IHRydWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzYxLDcgKzc2MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFyZ3VtZW50c0Fs
aWFzaW5nRGF0YSYgZGF0YSA9IG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vz
c0RhdGEpLT52YWx1ZTsKKyAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0gbV9h
cmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAg
ICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUp
OwogICAgIH0KICAgICAKQEAgLTc4NCw3ICs3ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQXJndW1lbnRzQWxpYXNpbmdE
YXRhJiBkYXRhID0KLSAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFy
aWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CisgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlh
c2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAgICAgICAgIGlmICgh
ZGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkBAIC04MjAsNyArODIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAmJiAhbV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKGNoaWxkLmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKTsKICAgICAgICAgICAgIGJvb2wgaXNBbGlhc2VkQXJndW1lbnRzUmVnaXN0ZXIg
PQogICAgICAgICAgICAgICAgICF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKQotICAg
ICAgICAgICAgICAgICYmIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0Rh
dGEpLT52YWx1ZS5pc1ZhbGlkKCkKKyAgICAgICAgICAgICAgICAmJiBtX2FyZ3VtZW50c0FsaWFz
aW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKQogICAgICAgICAg
ICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoY2hpbGQuY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgaWYgKCFpc0RlYWRBcmd1bWVudHNSZWdpc3Rl
ciAmJiAhaXNBbGlhc2VkQXJndW1lbnRzUmVnaXN0ZXIpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAK
aW5kZXggYjViNjY4NDE4YTYzYTdjOTQ0ZGY1ZGM0N2E2MDRiMWU1MzU3NDFkNy4uNzc5OWVlNTA1
OTM1YWQ0ZTEzYmMzY2UxOGQwYjczMmEzYWE0Mjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNDksOSArNDksOSBAQCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29k
ZU1hcEZvcihDb2RlQmxvY2sqCiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9kZWNvZGVkQ29kZU1h
cHMuYWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4oKSk7CiAg
ICAgCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBjb2RlQmxvY2stPmppdENv
ZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgICAgICBjb2RlQmxv
Y2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAK
LSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVDYWNoZS5oCmluZGV4IDhlZDE1NzhmMjZk
M2E0ZTc1ZTIzYTlkOGVlZmYwOWFiNGFiNjAwOWMuLmY2YTc0NWM2NjU4NzEzM2IxMmNiZDQ0ZmYz
YTkyOWE5M2MxYmExMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVDYWNoZS5oCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIE1hcDo6aXRl
cmF0b3IgYmVnaW4gPSBtX21hcC5iZWdpbigpOwogICAgICAgICBNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1fbWFwLmVuZCgpOwogICAgICAgICBmb3IgKE1hcDo6aXRlcmF0b3IgaXRlciA9IGJlZ2luOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLmNvZGVC
bG9jaykKKyAgICAgICAgICAgIGlmICghaXRlci0+c2Vjb25kLmNvZGVCbG9jaykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5vd25lZCkgewot
ICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVyLT52YWx1ZS5jb2RlQmxvY2s7CisgICAgICAgICAg
ICBpZiAoaXRlci0+c2Vjb25kLm93bmVkKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZXIt
PnNlY29uZC5jb2RlQmxvY2s7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVy
ICE9IG1fbWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmNvZGVCbG9j
azsKKyAgICAgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQuY29kZUJsb2NrOwogICAgICAgICAK
ICAgICAgICAgQnl0ZUNvZGVDYWNoZVZhbHVlIHZhbHVlOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggM2VlM2JkMmJl
NGY5ZDE4N2Y5NzNhZTViZDkxNmViYzQ4OTZkOGY4My4uZGYxOWMzMDgyZDdjNWJhMmM2NThkNTky
MTI0MGVmMDZkYzM4ODNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKQEAgLTY2MCw5ICs2NjAsOSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgSGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9j
ZWxsQ29uc3RhbnROb2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKICAgICAgICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkZFRvR3Jh
cGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CisgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCA9IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7
CiAgICAgICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KICAgICAKICAgICBDb2Rl
T3JpZ2luIGN1cnJlbnRDb2RlT3JpZ2luKCkKQEAgLTMyMDksNyArMzIwOSw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAgICAg
SWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lkZW50
aWZpZXJNYXAuYWRkKHJlcCwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZklk
ZW50aWZpZXJzKCkpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJZGVu
dGlmaWVyKGJ5dGVDb2RlUGFyc2VyLT5tX2dsb2JhbERhdGEsIHJlcCkpOwotICAgICAgICAgICAg
bV9pZGVudGlmaWVyUmVtYXBbaV0gPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAg
ICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZD
b25zdGFudFJlZ2lzdGVycygpOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2stPmdldENvbnN0YW50KGkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CkBA
IC0zMjI3LDcgKzMyMjcsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lU3RhY2tFbnRyeSgKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxv
Y2stPmFkZENvbnN0YW50KHZhbHVlKTsKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9jb25zdGFudHMuYXBwZW5kKENvbnN0YW50UmVjb3JkKCkpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbV9jb25zdGFudFJlbWFwW2ldID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwog
ICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51
bWJlck9mR2xvYmFsUmVzb2x2ZUluZm9zKCk7ICsraSkKICAgICAgICAgICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCBhZjFkMDJh
OGQzNzI0NWZjZTE2NjZiOTQwMmNmODFkMTU1ZjY0ZDE1Li5kZWMyZTQ5ZjcyNjFjM2UyNzM1NDQ0
ODA3YjhjMWY1MzVhYmQ0ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YUxvZygiWmVyb2luZyB0aGUgc3RydWN0
dXJlIHRvIGhvaXN0IGZvciAlcyBiZWNhdXNlIHRoZSByYXRpbyBpcyAlbGYuXG4iLAogICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSh2YXJpYWJsZSks
IHZhcmlhYmxlLT52b3RlUmF0aW8oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGl0ZXItPnZhbHVl
Lm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgICAgIGl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSA9
IDA7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIERpc2FibGUgc3RydWN0dXJlIGNo
ZWNrIGhvaXN0aW5nIGZvciB2YXJpYWJsZXMgdGhhdCBjcm9zcyB0aGUgT1NSIGVudHJ5IHRoYXQK
QEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxWYXJp
YWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZCh2
YXJpYWJsZSk7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFs
dWUubV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT5zZWNvbmQubV9zdHJ1
Y3R1cmUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBtX2dyYXBoLm1fbXVzdEhhbmRsZVZhbHVlc1tpXTsKICAgICAgICAgICAg
ICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkgewpAQCAtMTYxLDE1ICsxNjEsMTUg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJaZXJvaW5nIHRoZSBzdHJ1
Y3R1cmUgdG8gaG9pc3QgZm9yICVzIGJlY2F1c2UgdGhlIE9TUiBlbnRyeSB2YWx1ZSBpcyBub3Qg
YSBjZWxsOiAlcy5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5uYW1l
T2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGUpLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKICNl
bmRpZgotICAgICAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIGl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpICE9IGl0ZXItPnZhbHVlLm1fc3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSAh
PSBpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BB
R0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlplcm9pbmcgdGhl
IHN0cnVjdHVyZSB0byBob2lzdCBmb3IgJXMgYmVjYXVzZSB0aGUgT1NSIGVudHJ5IHZhbHVlIGhh
cyBzdHJ1Y3R1cmUgJXAgYW5kIHdlIHdhbnRlZCAlcC5cbiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5uYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGUpLCB2YWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCksIGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSh2
YXJpYWJsZSksIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSwgaXRlci0+c2Vjb25kLm1fc3Ry
dWN0dXJlKTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5tX3N0cnVj
dHVyZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSA9
IDA7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTI5NiwxNSArMjk2LDE1IEBAIHB1YmxpYzoKICNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIGZvciAoSGFzaE1hcDxWYXJpYWJs
ZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7CiAg
ICAgICAgICAgICAgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgh
aXQtPnZhbHVlLm1fc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiTm90IGhv
aXN0aW5nIGNoZWNrcyBmb3IgJXMgYmVjYXVzZSBvZiBoZXVyaXN0aWNzLlxuIiwgbV9ncmFwaC5u
YW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEoaXQtPmtleSkpOworICAgICAgICAgICAgaWYgKCFpdC0+
c2Vjb25kLm1fc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiTm90IGhvaXN0
aW5nIGNoZWNrcyBmb3IgJXMgYmVjYXVzZSBvZiBoZXVyaXN0aWNzLlxuIiwgbV9ncmFwaC5uYW1l
T2ZWYXJpYWJsZUFjY2Vzc0RhdGEoaXQtPmZpcnN0KSk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLm1faXNDbG9iYmVy
ZWQgJiYgIWl0LT52YWx1ZS5tX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0
aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coIk5vdCBob2lzdGluZyBjaGVj
a3MgZm9yICVzIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBpcyBjbG9iYmVyZWQgYW5kIGhhcyBhbiBp
bnZhbGlkIHdhdGNocG9pbnQgc2V0LlxuIiwgbV9ncmFwaC5uYW1lT2ZWYXJpYWJsZUFjY2Vzc0Rh
dGEoaXQtPmtleSkpOworICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQubV9pc0Nsb2JiZXJlZCAm
JiAhaXQtPnNlY29uZC5tX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxs
VmFsaWQoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIk5vdCBob2lzdGluZyBjaGVja3Mg
Zm9yICVzIGJlY2F1c2UgdGhlIHN0cnVjdHVyZSBpcyBjbG9iYmVyZWQgYW5kIGhhcyBhbiBpbnZh
bGlkIHdhdGNocG9pbnQgc2V0LlxuIiwgbV9ncmFwaC5uYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEo
aXQtPmZpcnN0KSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJIb2lzdGluZyBjaGVja3MgZm9yICVzXG4iLCBtX2dyYXBoLm5h
bWVPZlZhcmlhYmxlQWNjZXNzRGF0YShpdC0+a2V5KSk7CisgICAgICAgICAgICBkYXRhTG9nKCJI
b2lzdGluZyBjaGVja3MgZm9yICVzXG4iLCBtX2dyYXBoLm5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0
YShpdC0+Zmlyc3QpKTsKICAgICAgICAgfQogI2VuZGlmIC8vIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgCkBAIC0zMzksOSArMzM5LDkgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0
YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIt
PnZhbHVlLm1faXNDbG9iYmVyZWQgJiYgIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlLT50cmFuc2l0
aW9uV2F0Y2hwb2ludFNldElzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlci0+c2Vjb25kLm1faXNDbG9iYmVyZWQgJiYgIWl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
bm9kZS5yZWYoKTsKQEAgLTM1NSw3ICszNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguYXBwZW5kKGdldExvY2FsKTsKICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2sgKyAxLCBnZXRMb2NhbEluZGV4KTsKICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tTdHJ1Y3R1cmUoQ2hl
Y2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChp
dGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkpLCBnZXRMb2NhbEluZGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSBjaGVja1N0cnVjdHVyZShDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwgT3BJ
bmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSkpLCBn
ZXRMb2NhbEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7
CiAgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja1N0cnVjdHVyZUluZGV4ID0gbV9n
cmFwaC5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3Ry
dWN0dXJlKTsKQEAgLTM3NSw5ICszNzUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9
IG1fbWFwLmZpbmQodmFyaWFibGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBt
X21hcC5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUubV9pc0Nsb2JiZXJl
ZCAmJiAhaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNT
dGlsbFZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT5zZWNvbmQubV9pc0Ns
b2JiZXJlZCAmJiAhaXRlci0+c2Vjb25kLm1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldElzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaW5zZXJ0IGEgZGVhZCBTZXRMb2NhbCB0byB0ZWxs
IE9TUiB0aGF0IHRoZSBjaGlsZCdzIHZhbHVlIHNob3VsZApAQCAtMzk0LDcgKzM5NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtjaGlsZDFdLnJlZigpOwogICAgICAg
ICAgICAgICAgICAgICAvLyBVc2UgYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUgdG8gaW5kaWNhdGUg
dGhhdCB3ZSBzaG91bGQgZXhpdCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBi
eXRlY29kZSBpbnN0cnVjdGlvbiByYXRoZXIgdGhhbiByZWV4ZWN1dGluZyB0aGUgY3VycmVudCBv
bmUuCi0gICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tTdHJ1Y3R1cmUoRm9yd2FyZENoZWNr
U3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRl
ci0+dmFsdWUubV9zdHJ1Y3R1cmUpKSwgY2hpbGQxKTsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZSBjaGVja1N0cnVjdHVyZShGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUpKSwgY2hp
bGQxKTsKICAgICAgICAgICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUucmVmKCk7CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja1N0cnVjdHVyZUluZGV4ID0gbV9ncmFwaC5zaXpl
KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrU3RydWN0dXJlKTsK
QEAgLTQxMCwxNiArNDEwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgSGFzaE1h
cDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBpdGVyID0gbV9tYXAu
ZmluZChjaGlsZC52YXJpYWJsZUFjY2Vzc0RhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpCisgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+c2Vjb25kLm1fc3RydWN0dXJlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUu
bV9pc0Nsb2JiZXJlZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnNlY29uZC5t
X2lzQ2xvYmJlcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnNldE9wQW5kRGVm
YXVsdEZsYWdzKFBoYW50b20pOwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUu
cmVmQ291bnQoKSA9PSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9z
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkpCisgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+c2Vjb25kLm1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldElzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSA9PSBu
b2RlLnN0cnVjdHVyZVNldCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSA9PSBub2RlLnN0cnVjdHVyZVNl
dCgpLnNpbmdsZXRvblN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS5jb252
ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCgpOwogICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NDIsOSAr
NDQyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tE
YXRhKHN0cnVjdHVyZSwgZmFsc2UpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5t
X3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZC5tX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPSAwOworICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZC5tX3N0cnVjdHVyZSA9IDA7CiAgICAgfQogICAgIAogICAgIHZv
aWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29u
c3QgU3RydWN0dXJlU2V0JiBzZXQpCkBAIC00NjIsNyArNDYyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fbWFwLmZpbmQodmFyaWFibGUpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5l
bmQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaXRlci0+dmFsdWUubV9pc0Nsb2Ji
ZXJlZCA9IHRydWU7CisgICAgICAgIGl0ZXItPnNlY29uZC5tX2lzQ2xvYmJlcmVkID0gdHJ1ZTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyKGNvbnN0IE9wZXJhbmRzPFZhcmlhYmxlQWNj
ZXNzRGF0YSo+JiBsaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA5ZTFj
NDdjYWI2ZjkyZmQ4MTVkZDZkZWJlZjg4NTYzNzMwYWRjZmRhLi42NjkxNzg4MDRlNjNmOGU3NWE3
MzZlZTRhZWFlM2IyYzhjZDE2OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApA
QCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJv
b3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiB7CiAgICAgUHJvdGVjdENvdW50U2V0OjppdGVy
YXRvciBlbmQgPSBtX3Byb3RlY3RlZFZhbHVlcy5lbmQoKTsKICAgICBmb3IgKFByb3RlY3RDb3Vu
dFNldDo6aXRlcmF0b3IgaXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdCgmaXQtPmtleSk7CisgICAgICAg
IGhlYXBSb290VmlzaXRvci52aXNpdCgmaXQtPmZpcnN0KTsKIH0KIAogdm9pZCBIZWFwOjpwdXNo
VGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qIHRlbXBWZWN0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggZDcxMDEwYmYyM2Q3YjBiNWVmZWZkZTg1YTRhNDcw
ZTRiMmVjYzk1Yi4uNmYxM2FmYjcyNWE5OTk5ZTczZWNmMDM4NDc0MzZlNWMzYTMzZjIxNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMzQ4LDcgKzM0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICAgICAgUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3By
b3RlY3RlZFZhbHVlcy5lbmQoKTsKICAgICAgICAgZm9yIChQcm90ZWN0Q291bnRTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9wcm90ZWN0ZWRWYWx1ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICAgICAgZnVuY3RvcihpdC0+a2V5KTsKKyAgICAgICAgICAgIGZ1bmN0b3IoaXQtPmZpcnN0
KTsKICAgICAgICAgbV9oYW5kbGVTZXQuZm9yRWFjaFN0cm9uZ0hhbmRsZShmdW5jdG9yLCBtX3By
b3RlY3RlZFZhbHVlcyk7CiAKICAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmNwcApp
bmRleCA4ZTI3OTFmYzcxOTAzYWJkMjY2OGM0ODI2ZmIyZWM0ZjE3NDAyNTBjLi4wNTRiZjA2ZGRj
ZmFhNDdlZjdmNjJhOTE1MDMzOTM0YjMxOGExZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQg
SklUU3R1YlJvdXRpbmVTZXQ6Om1hcmtTbG93KHVpbnRwdHJfdCBhZGRyZXNzKQogICAgIGlmIChp
dGVyID09IG1fYWRkcmVzc1RvUm91dGluZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIGl0ZXItPnZhbHVlLT5tX21heUJlRXhlY3V0aW5nID0gdHJ1ZTsKKyAgICBpdGVyLT5z
ZWNvbmQtPm1fbWF5QmVFeGVjdXRpbmcgPSB0cnVlOwogfQogCiB2b2lkIEpJVFN0dWJSb3V0aW5l
U2V0OjpkZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHViUm91dGluZXMoKQpAQCAtOTcsNyArOTcs
NyBAQCB2b2lkIEpJVFN0dWJSb3V0aW5lU2V0OjpkZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHVi
Um91dGluZXMoKQogICAgICAgICB1aW50cHRyX3Qgc3RlcCA9IEpJVFN0dWJSb3V0aW5lOjphZGRy
ZXNzU3RlcCgpOwogICAgICAgICBmb3IgKHVpbnRwdHJfdCBpdGVyID0gc3RhcnQ7IGl0ZXIgPCBl
bmQ7IGl0ZXIgKz0gc3RlcCkgewogICAgICAgICAgICAgQVNTRVJUKG1fYWRkcmVzc1RvUm91dGlu
ZU1hcC5maW5kKGl0ZXIpICE9IG1fYWRkcmVzc1RvUm91dGluZU1hcC5lbmQoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9hZGRyZXNzVG9Sb3V0aW5lTWFwLmZpbmQoaXRlciktPnZhbHVlID09IHJv
dXRpbmUpOworICAgICAgICAgICAgQVNTRVJUKG1fYWRkcmVzc1RvUm91dGluZU1hcC5maW5kKGl0
ZXIpLT5zZWNvbmQgPT0gcm91dGluZSk7CiAgICAgICAgICAgICBtX2FkZHJlc3NUb1JvdXRpbmVN
YXAucmVtb3ZlKGl0ZXIpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggZTM1OGJiZjM3ZjRjZWQwZGIyMTRkNDM1YTEwOWJl
MTVlYzc0NDJiNS4uYjMxMzY2NDNiNGVkYjc4ZjFhZjExNTNjNzk1ZWMyMzEwMTRjOTU4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC01MzMsNyArNTMzLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSog
c2xvdCkKICAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAg
ICAgICBzdHJpbmctPnNldEhhc2hDb25zdFNpbmdsZXRvbigpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBleGlzdGluZ0pTVmFsdWUgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIEpTVmFsdWUgZXhpc3RpbmdKU1ZhbHVlID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9
IGV4aXN0aW5nSlNWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAganNDYXN0PEpTU3RyaW5nKj4o
ZXhpc3RpbmdKU1ZhbHVlLmFzQ2VsbCgpKS0+Y2xlYXJIYXNoQ29uc3RTaW5nbGV0b24oKTsKICAg
ICAgICAgICAgICAgICAqc2xvdCA9IGV4aXN0aW5nSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaAppbmRleCAzYzNkMWQwY2VmZTE4MTI2NTljNWZhNzNjNzRkMTk5NDhjMThmZmViLi4w
NzY5OGZkMDZiMDZjNzUwMTRiYjY1YmYyNWZjMzFjMjhhOWEwNjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vhay5oCkBAIC0xNjQsOCArMTY0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrUmVtb3ZlKE1hcCYK
ICAgICB0eXBlbmFtZSBNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQoa2V5KTsKICAgICBBU1NF
UlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7CiAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7Ci0g
ICAgQVNTRVJUKGl0LT52YWx1ZS53YXModmFsdWUpKTsKLSAgICBBU1NFUlQoIWl0LT52YWx1ZSk7
CisgICAgQVNTRVJUKGl0LT5zZWNvbmQud2FzKHZhbHVlKSk7CisgICAgQVNTRVJUKCFpdC0+c2Vj
b25kKTsKICAgICBtYXAucmVtb3ZlKGl0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDgzN2I4ZDIxZTNiNTEyZmRmYzM1MmRmYTdlYTEzMzJiNTFkZDZkZTUuLjUyYTcxNThl
NjYwNmFmZGY3NGFlMzI2ZGU4MDk5MDJhNDE5MzM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTcxMSw4ICs3MTEsOCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29k
ZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ssIEpJVENvbXBpbGF0aW9uRWZmbwogCiAgICAg
ICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQg
PSByZWNvcmQuanVtcFRhYmxlLnN0cmluZ0p1bXBUYWJsZS0+b2Zmc2V0VGFibGUuZW5kKCk7ICAg
ICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0
VGFibGU6Oml0ZXJhdG9yIGl0ID0gcmVjb3JkLmp1bXBUYWJsZS5zdHJpbmdKdW1wVGFibGUtPm9m
ZnNldFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG9mZnNldCA9IGl0LT52YWx1ZS5icmFuY2hPZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
aXQtPnZhbHVlLmN0aU9mZnNldCA9IG9mZnNldCA/IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9s
YWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXRdKSA6IHJlY29yZC5qdW1wVGFibGUuc3RyaW5n
SnVtcFRhYmxlLT5jdGlEZWZhdWx0OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9
IGl0LT5zZWNvbmQuYnJhbmNoT2Zmc2V0OworICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQuY3Rp
T2Zmc2V0ID0gb2Zmc2V0ID8gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2xhYmVsc1tieXRlY29k
ZU9mZnNldCArIG9mZnNldF0pIDogcmVjb3JkLmp1bXBUYWJsZS5zdHJpbmdKdW1wVGFibGUtPmN0
aURlZmF1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGZmNGNkMDhmYThkZDk2NDU2YTlmMDhlYzY0MjMz
YWY0NjNjMjJhZDEuLmUwZmFhMGZhZjA1MzM0YzI5YjZmOThhYzI1YmI2N2UwMDRjNzg0YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNDQ5LDggKzM0NDksOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0bwogewogICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBl
bnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCi0gICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZSA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKLSAgICByZXR1cm4gZW50cnkuaXRlcmF0b3It
PnZhbHVlOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gZ2VuZXJhdG9yKGdsb2Jh
bERhdGEpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBOYXRpdmVF
eGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjkzNjgxZmY0
OTc5NTFmMDM3NmU3YjE1ZTVmMjY1YTY3MjBiYzhiMS4uNGZkNjcxZmI3MzVmMWRkMjE1MTExMjkz
MzAzMjE4NGYzOGJjNzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMTM2NCwxMCArMTM2NCwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAg
ICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewogICAgICAgICAgICAgT2JqZWN0VmFs
aWRhdGlvbk1hcDo6QWRkUmVzdWx0IHByb3BlcnR5RW50cnkgPSBvYmplY3RWYWxpZGF0b3IuYWRk
KGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVy
dHkpKTsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlFbnRyeS5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgICAgICAgICAgZmFpbElmVHJ1ZShwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9PSBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHByb3Bl
cnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKICAg
ICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgPT0gUHJv
cGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShjb250ZXh0
LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+dmFsdWUpOwotICAg
ICAgICAgICAgICAgIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnZhbHVlIHw9IGNvbnRleHQuZ2V0
VHlwZShwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5
cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBl
KHByb3BlcnR5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0YWlsID0gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QocHJvcGVydHlMb2NhdGlvbiwgcHJvcGVydHksIHRhaWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCmluZGV4IDQ0ZGQ1
MmQyNDIzODhmMmYzNjcwYjhkYWU2ZjVmNjMzNTIyNDhiMjQuLjkyZTMyYzRiYTY2NGE0MWY0MWE4
OGU5MjljYTNmMGNlOGJmNzA3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB0eXBlZGVmIFdURjo6S2V5VmFsdWVQYWly
PEZ1bmN0aW9uQ2FsbEhhc2hDb3VudDo6VmFsdWVUeXBlLCB1bnNpZ25lZD4gTmFtZUNvdW50UAog
CiBzdGF0aWMgaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lQ291bnRQYWlyQ29tcGFyYXRvcihjb25z
dCBOYW1lQ291bnRQYWlyJiBhLCBjb25zdCBOYW1lQ291bnRQYWlyJiBiKQogewotICAgIHJldHVy
biBhLnZhbHVlID4gYi52YWx1ZTsKKyAgICByZXR1cm4gYS5zZWNvbmQgPiBiLnNlY29uZDsKIH0K
IAogdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKCkgY29uc3QKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIFByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoKSBj
b25zdAogCiAgICAgc3RkOjpzb3J0KHNvcnRlZEZ1bmN0aW9ucy5iZWdpbigpLCBzb3J0ZWRGdW5j
dGlvbnMuZW5kKCksIGZ1bmN0aW9uTmFtZUNvdW50UGFpckNvbXBhcmF0b3IpOwogICAgIGZvciAo
TmFtZUNvdW50UGFpclZlY3Rvcjo6aXRlcmF0b3IgaXQgPSBzb3J0ZWRGdW5jdGlvbnMuYmVnaW4o
KTsgaXQgIT0gc29ydGVkRnVuY3Rpb25zLmVuZCgpOyArK2l0KQotICAgICAgICBkYXRhTG9nKCIg
ICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnZhbHVlLCBVU3RyaW5nKCgqaXQpLmtleSkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGRhdGFMb2coIiAgICAgICAgJS0xMmQlc1xuIiwgKCppdCkuc2Vj
b25kLCBVU3RyaW5nKCgqaXQpLmZpcnN0KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGRhdGFMb2co
IlxuU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNhbWUgY29sbGFwc2VkICh3aGVuID49IDUpOlxuIik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4
IDQ4YTdhZGYwY2YwYzY4Y2I3ZGQ0MTQxY2YyZDZlMWY2ZTBlMGNiMmEuLjBmYzU0ZjNjNmZkODc1
YjM5YjFjNWYwNTM2ZjNmZWI2ODMxODIyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBJZGVudGlmaWVyOjphZGQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBj
aGFyKiBjKQogCiAgICAgY29uc3QgTGl0ZXJhbElkZW50aWZpZXJUYWJsZTo6aXRlcmF0b3ImIGl0
ZXIgPSBsaXRlcmFsSWRlbnRpZmllclRhYmxlLmZpbmQoYyk7CiAgICAgaWYgKGl0ZXIgIT0gbGl0
ZXJhbElkZW50aWZpZXJUYWJsZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwor
ICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogCiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46
OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0IExDaGFyKiwg
SWRlbnRpZmllckFTQ0lJU3RyaW5nVHJhbnNsYXRvcj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHAKaW5kZXggNDdmMzNkY2E0NzJjY2I1MTEyYjRmMjZlMDhiN2JjNGMwOGVlNWY4NS4u
NTFiNzFjNzVjY2M3ODI5Y2Y2Yjg4MmNmMmY1MTRmZTFiMDhlNTllNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0xNDAsMTEgKzE0MCwx
MSBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogCiAgICAgU3ltYm9sVGFibGU6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZCgpOwogICAgIGZvciAo
U3ltYm9sVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUo
KS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0
QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgbW9kZSAhPSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKQorICAgICAgICBpZiAoaXQtPnNlY29uZC5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSAm
JiBtb2RlICE9IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRJbmRleCgpID49IHRoaXNPYmplY3QtPm1fbnVt
Q2FwdHVyZWRWYXJzKQorICAgICAgICBpZiAoaXQtPnNlY29uZC5nZXRJbmRleCgpID49IHRoaXNP
YmplY3QtPm1fbnVtQ2FwdHVyZWRWYXJzKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5maXJzdC5nZXQoKSkp
OwogICAgIH0KICAgICAvLyBTa2lwIHRoZSBKU1ZhcmlhYmxlT2JqZWN0IGltcGxlbWVudGF0aW9u
IG9mIGdldE93blByb3BlcnR5TmFtZXMKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKQEAgLTE1Nyw3ICsxNTcs
NyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0
ZXMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAg
ICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CisgICAgU3ltYm9s
VGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5pc051
bGwoKSk7CiAgICAgaWYgKGVudHJ5LmdldEluZGV4KCkgPj0gbV9udW1DYXB0dXJlZFZhcnMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggZjU4NDhkOTJmOGYxMTYwZjU4OGU5ZGVmNjBjZDk0ZDI3MTMxY2MyYS4uNzIx
ODYwNGQxMTJjNzhiNTcxMmI0NTQ0MzhmMjliMTBiNTIwODQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBpbmxpbmUgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFsdWVNYXA6OmFkZChKU0Fy
cmF5KiBhcnJheSwgdQogaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7
Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAK
ICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFk
ZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRo
aXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CkBAIC0yNDcsNyArMjQ3
LDcgQEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhl
YywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKIGlubGluZSBib29sIFNwYXJzZUFycmF5VmFs
dWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIEFkZFJlc3VsdCBy
ZXN1bHQgPSBhZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBh
ZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCiAgICAgLy8gSW4gdGhl
IHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5
IGlzIG5vdApAQCAtMzEzLDcgKzMxMyw3IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVN
YXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaXRlcmF0b3Ig
ZW5kID0gbV9tYXAuZW5kKCk7CiAgICAgZm9yIChpdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0LT52YWx1ZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdC0+c2Vjb25kKTsKIH0KIAogdm9pZCBKU0FycmF5Ojph
bGxvY2F0ZVNwYXJzZU1hcChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCkBAIC0zNDksNyArMzQ5
LDcgQEAgdm9pZCBKU0FycmF5OjplbnRlckRpY3Rpb25hcnlNb2RlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKICAgICAgICAgLy8gVGhpcyB3aWxsIGFsd2F5cyBiZSBhIG5ldyBlbnRyeSBpbiB0
aGUgbWFwLCBzbyBubyBuZWVkIHRvIGNoZWNrIHdlIGNhbiB3cml0ZSwKICAgICAgICAgLy8gYW5k
IGF0dHJpYnV0ZXMgYXJlIGRlZmF1bHQgc28gbm8gbmVlZCB0byBzZXQgdGhlbS4KICAgICAgICAg
aWYgKHZhbHVlKQotICAgICAgICAgICAgbWFwLT5hZGQodGhpcywgaSkuaXRlcmF0b3ItPnZhbHVl
LnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBtYXAtPmFkZCh0aGlz
LCBpKS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCogbmV3UmF3U3RvcmFnZSA9IDA7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9v
bCBKU0FycmF5OjpkZWZpbmVPd25OdW1lcmljUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgUHJvcGVydHkKIAogICAgIC8vIDEuIExldCBjdXJyZW50IGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggcHJvcGVydHkgbmFtZSBQLgogICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSog
ZW50cnlJbk1hcCA9ICZyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIFNwYXJzZUFycmF5RW50
cnkqIGVudHJ5SW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICAvLyAyLiBM
ZXQgZXh0ZW5zaWJsZSBiZSB0aGUgdmFsdWUgb2YgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFs
IHByb3BlcnR5IG9mIE8uCiAgICAgLy8gMy4gSWYgY3VycmVudCBpcyB1bmRlZmluZWQgYW5kIGV4
dGVuc2libGUgaXMgZmFsc2UsIHRoZW4gUmVqZWN0LgpAQCAtNjU2LDcgKzY1Niw3IEBAIGJvb2wg
SlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQKICAgICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1h
cCA9IHRoaXNPYmplY3QtPm1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgIGlmIChpdCAhPSBt
YXAtPm5vdEZvdW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS5nZXQoc2xvdCk7CisgICAg
ICAgICAgICBpdC0+c2Vjb25kLmdldChzbG90KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNzAyLDcgKzcwMiw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVyCiAgICAgICAgIH0gZWxzZSBpZiAoU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFwID0gdGhpc09i
amVjdC0+bV9zcGFyc2VWYWx1ZU1hcCkgewogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1h
cDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgICAgICBpZiAoaXQgIT0gbWFw
LT5ub3RGb3VuZCgpKSB7Ci0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLmdldChkZXNjcmlwdG9y
KTsKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLmdldChkZXNjcmlwdG9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODM0LDcg
KzgzNCw3IEBAIHZvaWQgSlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4qIHZlY3RvciA9IHN0b3JhZ2UtPm1fdmVjdG9yOwogICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgZm9yIChTcGFyc2VBcnJheVZh
bHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICB2ZWN0b3JbaXQtPmtleV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIGl0LT52YWx1
ZS5nZXROb25TcGFyc2VNb2RlKCkpOworICAgICAgICB2ZWN0b3JbaXQtPmZpcnN0XS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgaXQtPnNlY29uZC5nZXROb25TcGFyc2VNb2RlKCkpOwogICAgIGRlYWxs
b2NhdGVTcGFyc2VNYXAoKTsKIAogICAgIC8vIFN0b3JlIHRoZSBuZXcgcHJvcGVydHkgaW50byB0
aGUgdmVjdG9yLgpAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgSlNBcnJheTo6cHV0RGlyZWN0SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhCiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3IgPSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAg
ICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwog
ICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgdmVjdG9yW2l0LT5rZXldLnNldChnbG9i
YWxEYXRhLCB0aGlzLCBpdC0+dmFsdWUuZ2V0Tm9uU3BhcnNlTW9kZSgpKTsKKyAgICAgICAgdmVj
dG9yW2l0LT5maXJzdF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIGl0LT5zZWNvbmQuZ2V0Tm9uU3Bh
cnNlTW9kZSgpKTsKICAgICBkZWFsbG9jYXRlU3BhcnNlTWFwKCk7CiAKICAgICAvLyBTdG9yZSB0
aGUgbmV3IHByb3BlcnR5IGludG8gdGhlIHZlY3Rvci4KQEAgLTk0Nyw3ICs5NDcsNyBAQCBib29s
IEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaSkKICAgICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1h
cCA9IHRoaXNPYmplY3QtPm1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAtPmZpbmQoaSk7CiAgICAgICAgIGlmIChpdCAhPSBt
YXAtPm5vdEZvdW5kKCkpIHsKLSAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuYXR0cmlidXRlcyAm
IERvbnREZWxldGUpCisgICAgICAgICAgICBpZiAoaXQtPnNlY29uZC5hdHRyaWJ1dGVzICYgRG9u
dERlbGV0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBtYXAt
PnJlbW92ZShpdCk7CiAgICAgICAgIH0KQEAgLTk4NSw4ICs5ODUsOCBAQCB2b2lkIEpTQXJyYXk6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbQogICAgICAgICAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgICAgICBpZiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzIHx8ICEo
aXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RW51bSkpCi0gICAgICAgICAgICAgICAga2V5cy5h
cHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0LT5rZXkpKTsKKyAgICAgICAgICAgIGlmICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMgfHwgIShpdC0+c2Vjb25kLmF0dHJpYnV0
ZXMgJiBEb250RW51bSkpCisgICAgICAgICAgICAgICAga2V5cy5hcHBlbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGl0LT5maXJzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgcXNvcnQoa2V5cy5i
ZWdpbigpLCBrZXlzLnNpemUoKSwgc2l6ZW9mKHVuc2lnbmVkKSwgY29tcGFyZUtleXNGb3JRU29y
dCk7CkBAIC0xMTc5LDcgKzExNzksNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbgogICAgICAg
ICAgICAga2V5cy5yZXNlcnZlQ2FwYWNpdHkobWluKG1hcC0+c2l6ZSgpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCAtIG5ld0xlbmd0aCkpKTsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFs
dWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3Ig
KFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpdC0+Zmlyc3QpOwogICAgICAgICAgICAgICAgIGlm
IChpbmRleCA8IGxlbmd0aCAmJiBpbmRleCA+PSBuZXdMZW5ndGgpCiAgICAgICAgICAgICAgICAg
ICAgIGtleXMuYXBwZW5kKGluZGV4KTsKICAgICAgICAgICAgIH0KQEAgLTExOTQsNyArMTE5NCw3
IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbmV3
TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0ga2V5c1stLWldOwogICAgICAgICAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciBpdCA9IG1hcC0+ZmluZChpbmRleCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChpdCAhPSBtYXAtPm5vdEZvdW5kKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
aXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdC0+c2Vjb25kLmF0dHJpYnV0ZXMgJiBEb250RGVsZXRlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlLT5tX2xlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRpb24sICJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjY5LDcgKzE2
NjksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBh
cmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsCiAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChTcGFy
c2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzW251bURl
ZmluZWRdLnZhbHVlID0gaXQtPnZhbHVlLmdldE5vblNwYXJzZU1vZGUoKTsKKyAgICAgICAgICAg
IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbbnVtRGVmaW5lZF0udmFsdWUgPSBpdC0+c2Vjb25k
LmdldE5vblNwYXJzZU1vZGUoKTsKICAgICAgICAgICAgIHRyZWUuaW5zZXJ0KG51bURlZmluZWQp
OwogICAgICAgICAgICAgKytudW1EZWZpbmVkOwogICAgICAgICB9CkBAIC0xNzg0LDcgKzE3ODQs
NyBAQCB1bnNpZ25lZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAg
ICAgc3RvcmFnZS0+bV92ZWN0b3JbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVy
KGl0LT52YWx1ZS5nZXROb25TcGFyc2VNb2RlKCkpOworICAgICAgICAgICAgc3RvcmFnZS0+bV92
ZWN0b3JbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGl0LT5zZWNvbmQuZ2V0
Tm9uU3BhcnNlTW9kZSgpKTsKIAogICAgICAgICBkZWFsbG9jYXRlU3BhcnNlTWFwKCk7CiAgICAg
fQpAQCAtMTgzMSwxMyArMTgzMSwxMyBAQCB2b2lkIEpTQXJyYXk6OmNoZWNrQ29uc2lzdGVuY3ko
Q29uc2lzdGVuY3lDaGVja1R5cGUgdHlwZSkKICAgICBpZiAobV9zcGFyc2VWYWx1ZU1hcCkgewog
ICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3NwYXJz
ZVZhbHVlTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fc3BhcnNlVmFsdWVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBpdC0+a2V5OworICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBpdC0+Zmlyc3Q7CiAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBz
dG9yYWdlLT5tX2xlbmd0aCk7CiAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPj0gbV92ZWN0b3JM
ZW5ndGgpOwogICAgICAgICAgICAgQVNTRVJUKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChpdC0+c2Vj
b25kKTsKICAgICAgICAgICAgIGlmICh0eXBlICE9IERlc3RydWN0b3JDb25zaXN0ZW5jeUNoZWNr
KQotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5nZXROb25TcGFyc2VNb2RlKCkuaXNVbmRlZmlu
ZWQoKTsgLy8gTGlrZWx5IHRvIGNyYXNoIGlmIHRoZSBvYmplY3Qgd2FzIGRlYWxsb2NhdGVkLgor
ICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQuZ2V0Tm9uU3BhcnNlTW9kZSgpLmlzVW5kZWZpbmVk
KCk7IC8vIExpa2VseSB0byBjcmFzaCBpZiB0aGUgb2JqZWN0IHdhcyBkZWFsbG9jYXRlZC4KICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggYmZmNTZiOGNjNzE3MDdlZGQ3NWE0ZGQ5
MWFmZTkzYTY2YmY3ZTE2YS4uNzJjYWEzM2RiYzdjYTk2OWUwODRiZDlhYzNjZWRiMTNlYmY5ZDM1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKQEAgLTYxLDggKzYxLDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywK
ICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFi
bGVPYmplY3QqPihvYmplY3QpOwogICAgIFN5bWJvbFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFN5bWJvbFRhYmxl
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRl
cygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQot
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5Lmdl
dCgpKSk7CisgICAgICAgIGlmICghKGl0LT5zZWNvbmQuZ2V0QXR0cmlidXRlcygpICYgRG9udEVu
dW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQorICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+Zmlyc3QuZ2V0KCkpKTsKICAg
ICB9CiAgICAgCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggZTYwM2UwMzU1ZTJmYTY0MWU5
YzU1MWEyMjg0MjljZjNlMjcwYjgzNi4uODEyOWIwZWQ2OTYxZmYxMWNiODg3NzA3MDU3OGY1YmM1
MmJiZmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaApAQCAtNzUsNyArNzUsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZUdldCgKICAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gaXRlci0+dmFsdWU7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9
IGl0ZXItPnNlY29uZDsKICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNl
dFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT52YWx1ZTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRl
ci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgIGRlc2NyaXB0b3Iu
c2V0RGVzY3JpcHRvcigKICAgICAgICAgb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4
KCkpLmdldCgpLCBlbnRyeS5nZXRBdHRyaWJ1dGVzKCkgfCBEb250RGVsZXRlKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1ib2xUYWJsZTo6
aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7Cisg
ICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsKICAgICBBU1NF
UlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBzbG90LnNldFZhbHVlKG9iamVjdC0+cmVnaXN0ZXJB
dChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSk7CiAgICAgc2xvdElzV3JpdGVhYmxlID0gIWVudHJ5
LmlzUmVhZE9ubHkoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZVB1dCgKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGJvb2wgd2FzRmF0OwotICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZmFz
dEVudHJ5ID0gaXRlci0+dmFsdWUuZ2V0RmFzdCh3YXNGYXQpOworICAgIFN5bWJvbFRhYmxlRW50
cnk6OkZhc3QgZmFzdEVudHJ5ID0gaXRlci0+c2Vjb25kLmdldEZhc3Qod2FzRmF0KTsKICAgICBB
U1NFUlQoIWZhc3RFbnRyeS5pc051bGwoKSk7CiAgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5
KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQpAQCAtMTMzLDcgKzEzMyw3IEBAIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKFVOTElLRUxZKHdhc0ZhdCkpCi0gICAgICAgIGl0ZXItPnZhbHVlLm5vdGlmeVdyaXRlKCk7
CisgICAgICAgIGl0ZXItPnNlY29uZC5ub3RpZnlXcml0ZSgpOwogICAgIG9iamVjdC0+cmVnaXN0
ZXJBdChmYXN0RW50cnkuZ2V0SW5kZXgoKSkuc2V0KGdsb2JhbERhdGEsIG9iamVjdCwgdmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0
ZXIgPSBvYmplY3QtPnN5bWJvbFRhYmxlKCktPmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CiAgICAgaWYgKGl0ZXIgPT0gb2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFs
dWU7CisgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNT
RVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgZW50cnkubm90aWZ5V3JpdGUoKTsKICAgICBlbnRy
eS5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmluZGV4IGFiNGY5ODc4YTk5OThkNDk4NDAyZTZiNGRjZTcw
OWJkMjhlMmNlZTguLjUzYTEzYTRiNTliNzdlNzZhNGI4ODBjZmU3NWIzNjA2Yzg3ZTFmYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBSZWdFeHBDYWNoZTo6aW52YWxpZGF0ZUNvZGUoKQogCiAgICAgUmVn
RXhwQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fd2Vha0NhY2hlLmVuZCgpOwogICAgIGZvciAo
UmVnRXhwQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV93ZWFrQ2FjaGUuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlZ0V4cCogcmVnRXhwID0gaXQtPnZhbHVlLmdldCgpOwor
ICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmICgh
cmVnRXhwKSAvLyBTa2lwIHpvbWJpZXMuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
cmVnRXhwLT5pbnZhbGlkYXRlQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXAuaAppbmRleCA1MmU1ZTI5NDZmZDEwM2I3ZmVhZjYyMWY2ZmQyYTUwZDA1MzQ5ZDAz
Li42OTI2MTY1YTc4NWE3NjdkYTM3N2FjZWIyNTM5NzBjZWMzYjlhOTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBlbmQgPSBtX21hcC5l
bmQoKTsKICAgICAgICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBwdHIgPSBtX21h
cC5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikKLSAgICAgICAgICAgIFdlYWtTZXQ6OmRlYWxs
b2NhdGUocHRyLT52YWx1ZSk7CisgICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKHB0ci0+
c2Vjb25kKTsKICAgICAgICAgbV9tYXAuY2xlYXIoKTsKICAgICB9CiAKQEAgLTgwLDggKzgwLDgg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlRfVU5VU0VEKGdsb2JhbERhdGEsIGdsb2JhbERhdGEu
YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgICAgICB0eXBlbmFt
ZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CiAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRl
KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gV2Vha1NldDo6YWxsb2NhdGUodmFsdWUsIHRoaXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5h
bGl6ZXJDb250ZXh0Rm9yKGtleSkpOworICAgICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
ID0gV2Vha1NldDo6YWxsb2NhdGUodmFsdWUsIHRoaXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5h
bGl6ZXJDb250ZXh0Rm9yKGtleSkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtl
eVR5cGUmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9m
aWxlVHJlZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5v
ZGUuaAppbmRleCA3YjVhOTVlYzQwNDRiNjNmMjExMTM2MTIyZDkyM2NhODg5NDYwYTM2Li43YjUx
ZWZiODVkYjM0NDFhMjIyNjNiNDI0OTdhMzE3NTJiNWI1MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICAgICAgUHJvZmlsZVRyZWVOb2RlIG5ld0VudHJ5OwogICAgICAgICBNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQoU3RyaW5nKG5hbWUpLCBuZXdFbnRy
eSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJbk1hcCA9ICZyZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgICAgICBQcm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICsrY2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAg
ICAgcmV0dXJuIGNoaWxkSW5NYXA7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdWludDY0X3QgY2hpbGRDb3VudCA9IDA7CiAg
ICAgICAgIGZvciAoTWFwOjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4tPmJlZ2luKCk7IGl0ICE9
IG1fY2hpbGRyZW4tPmVuZCgpOyArK2l0KQotICAgICAgICAgICAgY2hpbGRDb3VudCArPSBpdC0+
dmFsdWUuY291bnQoKTsKKyAgICAgICAgICAgIGNoaWxkQ291bnQgKz0gaXQtPnNlY29uZC5jb3Vu
dCgpOwogICAgICAgICByZXR1cm4gY2hpbGRDb3VudDsKICAgICB9CiAgICAgCkBAIC05NywxOSAr
OTcsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bmRlbnQ7ICsraSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIik7CiAgICAgICAgICAg
ICBkYXRhTG9nKCIlIDhsbGQ6ICVzICglbGxkIHN0YWNrIHRvcClcbiIsCi0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihlbnRyeS0+dmFsdWUuY291bnQoKSksCi0gICAgICAg
ICAgICAgICAgZW50cnktPmtleS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oZW50cnktPnZhbHVlLmNvdW50KCkgLSBlbnRyeS0+dmFsdWUuY2hp
bGRDb3VudCgpKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihlbnRy
eS0+c2Vjb25kLmNvdW50KCkpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5maXJzdC51dGY4KCku
ZGF0YSgpLAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZW50cnktPnNl
Y29uZC5jb3VudCgpIC0gZW50cnktPnNlY29uZC5jaGlsZENvdW50KCkpKTsKIAogICAgICAgICAg
ICAgLy8gUmVjdXJzaXZlbHkgZHVtcCB0aGUgY2hpbGQgbm9kZXMuCi0gICAgICAgICAgICBlbnRy
eS0+dmFsdWUuZHVtcEludGVybmFsKGluZGVudCArIDEpOworICAgICAgICAgICAgZW50cnktPnNl
Y29uZC5kdW1wSW50ZXJuYWwoaW5kZW50ICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBz
dGF0aWMgaW50IGNvbXBhcmVFbnRyaWVzKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCiAg
ICAgewotICAgICAgICB1aW50NjRfdCBkYSA9ICgqc3RhdGljX2Nhc3Q8TWFwRW50cnkqIGNvbnN0
ICo+KGEpKS0+dmFsdWUuY291bnQoKTsKLSAgICAgICAgdWludDY0X3QgZGIgPSAoKnN0YXRpY19j
YXN0PE1hcEVudHJ5KiBjb25zdCAqPihiKSktPnZhbHVlLmNvdW50KCk7CisgICAgICAgIHVpbnQ2
NF90IGRhID0gKCpzdGF0aWNfY2FzdDxNYXBFbnRyeSogY29uc3QgKj4oYSkpLT5zZWNvbmQuY291
bnQoKTsKKyAgICAgICAgdWludDY0X3QgZGIgPSAoKnN0YXRpY19jYXN0PE1hcEVudHJ5KiBjb25z
dCAqPihiKSktPnNlY29uZC5jb3VudCgpOwogICAgICAgICByZXR1cm4gKGRhIDwgZGIpIC0gKGRh
ID4gZGIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRT
ZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggZWZmNGEyOTNlOWM3
MzliMTJjNDNiNjg5MTI2ZDBjODQ1MGJjZDAwYS4uZWY4OWJkYmM3NTI2MTg1ZGUwMTc1M2UwM2U5
ZjZiMGI3N2UzZTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0xNTQsNyArMTU0LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQog
ICAgIHsKICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC5hZGQodmFsdWUsIDApOwot
ICAgICAgICArK3Jlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICsrcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtMTcw
LDExICsxNzAsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChpdCA9PSBlbmQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB1bnNpZ25lZCBvbGRWYWwgPSBp
dC0+dmFsdWU7CisgICAgICAgIHVuc2lnbmVkIG9sZFZhbCA9IGl0LT5zZWNvbmQ7CiAgICAgICAg
IEFTU0VSVChvbGRWYWwpOwogICAgICAgICB1bnNpZ25lZCBuZXdWYWwgPSBvbGRWYWwgLSAxOwog
ICAgICAgICBpZiAobmV3VmFsKSB7Ci0gICAgICAgICAgICBpdC0+dmFsdWUgPSBuZXdWYWw7Cisg
ICAgICAgICAgICBpdC0+c2Vjb25kID0gbmV3VmFsOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKQEAgLTIyNiw3ICsyMjYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7CiAgICAgICAgIGl0ZXJhdG9yIGVu
ZCA9IGNvbGxlY3Rpb24uZW5kKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9
IGVuZDsgKytpdCwgKytpKQotICAgICAgICAgICAgdmVjdG9yW2ldID0gKCppdCkua2V5OworICAg
ICAgICAgICAgdmVjdG9yW2ldID0gKCppdCkuZmlyc3Q7CiAgICAgfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRvcnMuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVy
YXRvcnMuaAppbmRleCA5YmU0ZGUzMjNjNTY1OGIzM2Y5NWIyZjk3NzZlYzVhZWU1Mjc0YjJjLi42
MzlmZjcyNTBhMWVmMGZiM2Y4MjRkYzkxNjg4NDk2Yjg5YjY1ZTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaEl0ZXJh
dG9ycy5oCkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAg
ICAgICAgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3IoY29uc3QgQ29uc3RJdGVyYXRvciYgaW1w
bCkgOiBtX2ltcGwoaW1wbCkge30KICAgICAgICAgCi0gICAgICAgIGNvbnN0IEtleVR5cGUqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdldCgpLT5rZXkpOyB9CisgICAgICAgIGNvbnN0
IEtleVR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdldCgpLT5maXJzdCk7IH0K
ICAgICAgICAgY29uc3QgS2V5VHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9CiAgICAgICAgIGNvbnN0IEtleVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGlj
OgogICAgICAgICBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yKGNvbnN0IENvbnN0SXRlcmF0
b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9CiAgICAgICAgIAotICAgICAgICBjb25zdCBNYXBw
ZWRUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+dmFsdWUpOyB9Cisg
ICAgICAgIGNvbnN0IE1hcHBlZFR5cGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuICYobV9pbXBsLmdl
dCgpLT5zZWNvbmQpOyB9CiAgICAgICAgIGNvbnN0IE1hcHBlZFR5cGUmIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuICpnZXQoKTsgfQogICAgICAgICBjb25zdCBNYXBwZWRUeXBlKiBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yKGNv
bnN0IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQogICAgICAgICAKLSAgICAgICAg
S2V5VHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPmtleSk7IH0KKyAg
ICAgICAgS2V5VHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPmZpcnN0
KTsgfQogICAgICAgICBLZXlUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7
IH0KICAgICAgICAgS2V5VHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9
CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7fQogICAgICAgICAKLSAgICAgICAgTWFwcGVkVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gJihtX2ltcGwuZ2V0KCktPnZhbHVlKTsgfQorICAgICAgICBNYXBwZWRUeXBlKiBnZXQo
KSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+c2Vjb25kKTsgfQogICAgICAgICBNYXBw
ZWRUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0KICAgICAgICAgTWFw
cGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaApp
bmRleCAxMGVlNDI1ZGE5NTk2YmFhZGYzNGU1NzhlZjVhYmU1NzBmOWFlMGQ2Li45MDEwNDc0Yzgy
NTU2M2VmODQxYjk2ODdmZWZmNDk0YWE2NTViNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHR5
cGVuYW1lIFQ6OktleVR5cGUmIGV4dHJhY3QoY29uc3QgVCYgcCkgeyByZXR1cm4gcC5rZXk7IH0K
KyAgICAgICAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OktleVR5cGUmIGV4dHJhY3QoY29uc3Qg
VCYgcCkgeyByZXR1cm4gcC5maXJzdDsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1l
IERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsCkBAIC0yMTEsNyArMjExLDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9u
ID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IHR5cGVuYW1l
IEtleVZhbHVlUGFpckhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBwZWRUcmFpdHM+OjpUcmFpdFR5
cGUmIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXNIYXNoVHJhaXRzRW1w
dHlWYWx1ZTxLZXlUcmFpdHM+KHZhbHVlLmtleSk7CisgICAgICAgICAgICByZXR1cm4gaXNIYXNo
VHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+KHZhbHVlLmZpcnN0KTsKICAgICAgICAgfQogICAg
IH07CiAKQEAgLTIyMSw4ICsyMjEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwg
Y29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZv
aWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiBrZXksIGNvbnN0IFYmIG1hcHBlZCkK
ICAgICAgICAgewotICAgICAgICAgICAgbG9jYXRpb24ua2V5ID0ga2V5OwotICAgICAgICAgICAg
VmFsdWVUcmFpdHM6OlZhbHVlVHJhaXRzOjpzdG9yZShtYXBwZWQsIGxvY2F0aW9uLnZhbHVlKTsK
KyAgICAgICAgICAgIGxvY2F0aW9uLmZpcnN0ID0ga2V5OworICAgICAgICAgICAgVmFsdWVUcmFp
dHM6OlZhbHVlVHJhaXRzOjpzdG9yZShtYXBwZWQsIGxvY2F0aW9uLnNlY29uZCk7CiAgICAgICAg
IH0KICAgICB9OwogCkBAIC0yMzIsOCArMjMyLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEsIGIpOyB9CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRp
YyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYga2V5LCBjb25zdCBWJiBtYXBw
ZWQsIHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBUcmFuc2xhdG9y
Ojp0cmFuc2xhdGUobG9jYXRpb24ua2V5LCBrZXksIGhhc2hDb2RlKTsKLSAgICAgICAgICAgIFZh
bHVlVHJhaXRzOjpWYWx1ZVRyYWl0czo6c3RvcmUobWFwcGVkLCBsb2NhdGlvbi52YWx1ZSk7Cisg
ICAgICAgICAgICBUcmFuc2xhdG9yOjp0cmFuc2xhdGUobG9jYXRpb24uZmlyc3QsIGtleSwgaGFz
aENvZGUpOworICAgICAgICAgICAgVmFsdWVUcmFpdHM6OlZhbHVlVHJhaXRzOjpzdG9yZShtYXBw
ZWQsIGxvY2F0aW9uLnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0zNDEsNyArMzQx
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVB
ZGQoa2V5LCBtYXBwZWQpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFz
aCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAg
ICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
KyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlcmF0b3It
PnNlY29uZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0z
NjgsNyArMzY4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIFZhbHVlVHlwZSogZW50cnkg
PSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxvb2t1cChrZXkpOwogICAgICAg
ICBpZiAoIWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGVlayhNYXBw
ZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBl
ZWsoZW50cnktPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGVlayhlbnRy
eS0+c2Vjb25kKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgpAQCAtMzk5LDcgKzM5OSw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAg
ICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFz
c091dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRU
eXBlIHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOworICAgICAgICBN
YXBwZWRQYXNzT3V0VHlwZSByZXN1bHQgPSBNYXBwZWRUcmFpdHM6OnBhc3NPdXQoaXQtPnNlY29u
ZCk7CiAgICAgICAgIHJlbW92ZShpdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNDIxLDggKzQyMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBjb25zdF9pdGVyYXRv
ciBlbmQgPSBhLmVuZCgpOwogICAgICAgICBjb25zdF9pdGVyYXRvciBub3RGb3VuZCA9IGIuZW5k
KCk7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXQgPSBhLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgYlBvcyA9IGIuZmluZChpdC0+
a2V5KTsKLSAgICAgICAgICAgIGlmIChiUG9zID09IG5vdEZvdW5kIHx8IGl0LT52YWx1ZSAhPSBi
UG9zLT52YWx1ZSkKKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJQb3MgPSBiLmZpbmQoaXQt
PmZpcnN0KTsKKyAgICAgICAgICAgIGlmIChiUG9zID09IG5vdEZvdW5kIHx8IGl0LT5zZWNvbmQg
IT0gYlBvcy0+c2Vjb25kKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCkBAIC00MzUsMjIgKzQzNSwzNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJu
ICEoYSA9PSBiKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
PgorICAgIHZvaWQgZGVsZXRlQWxsUGFpclNlY29uZHMoSGFzaFRhYmxlVHlwZSYgY29sbGVjdGlv
bikKKyAgICB7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIGl0ZXJhdG9yIGVuZCA9IGNvbGxlY3Rpb24uZW5k
KCk7CisgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kOworICAgIH0KKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+CiAgICAgaW5saW5lIHZvaWQgZGVsZXRlQWxsVmFsdWVzKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24pCiAgICAgewotICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwor
ICAgICAgICBkZWxldGVBbGxQYWlyU2Vjb25kcyhjb2xsZWN0aW9uKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlPgorICAgIHZvaWQgZGVsZXRlQWxsUGFpckZp
cnN0cyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQorICAgIHsKKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAg
aXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKICAgICAgICAgZm9yIChpdGVyYXRvciBp
dCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZGVs
ZXRlIGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGRlbGV0ZSBpdC0+Zmlyc3Q7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KICAgICBpbmxpbmUgdm9pZCBkZWxldGVBbGxLZXlzKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24pCiAgICAgewotICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwot
ICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgpOwotICAgICAgICBmb3IgKGl0
ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
ICAgICBkZWxldGUgaXQtPmtleTsKKyAgICAgICAgZGVsZXRlQWxsUGFpckZpcnN0cyhjb2xsZWN0
aW9uKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxl
LmgKaW5kZXggMTZmZGQ5ZTgxZDI4M2I2OWU2MWQ0NmJhNmY5NWZkMTJlMjQ2OWM2Ni4uMWNlM2M1
Y2Y2ODhlZjBhODFlMTA2MWJjNmNlMjYyMGJlM2Q5ODAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTI4
Niw4ICsyODYsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIGhhc2hUYWJsZVN3YXAoS2V5VmFsdWVQYWlyPFQsIFU+
JiBhLCBLZXlWYWx1ZVBhaXI8VCwgVT4mIGIpCiAgICAgewotICAgICAgICBzd2FwKGEua2V5LCBi
LmtleSk7Ci0gICAgICAgIHN3YXAoYS52YWx1ZSwgYi52YWx1ZSk7CisgICAgICAgIHN3YXAoYS5m
aXJzdCwgYi5maXJzdCk7CisgICAgICAgIHN3YXAoYS5zZWNvbmQsIGIuc2Vjb25kKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3YXA+IHN0cnVjdCBNb3ZlcjsK
QEAgLTEyNDYsNyArMTI0Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgQVNTRVJU
KGVudHJ5ID09IGl0Lm1fcG9zaXRpb24pOwogICAgICAgICAgICAgKytjb3VudDsKIAotICAgICAg
ICAgICAgVmFsdWVDaGVjazxLZXk+OjpjaGVja0NvbnNpc3RlbmN5KGl0LT5rZXkpOworICAgICAg
ICAgICAgVmFsdWVDaGVjazxLZXk+OjpjaGVja0NvbnNpc3RlbmN5KGl0LT5maXJzdCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBBU1NFUlQoY291bnQgPT0gbV9rZXlDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRz
LmgKaW5kZXggNzNiZjJiZWFhMmU1ZWY0ZWZlZDlkYjBjMmRlYWYzZjExMmViNGFhZC4uZWJlNzk1
ZWIxYTg5OWUyYzYxZWU1ZGMzNjQ3MzdiMjliODU3MGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaApAQCAt
MTkzLDIwICsxOTMsMjEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgICAgICBL
ZXlWYWx1ZVBhaXIoY29uc3QgS2V5VHlwZUFyZyYga2V5LCBjb25zdCBWYWx1ZVR5cGVBcmcmIHZh
bHVlKQotICAgICAgICAgICAgOiBrZXkoa2V5KQotICAgICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkK
KyAgICAgICAgICAgIDogZmlyc3Qoa2V5KQorICAgICAgICAgICAgLCBzZWNvbmQodmFsdWUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdGhlcktl
eVR5cGUsIHR5cGVuYW1lIE90aGVyVmFsdWVUeXBlPgogICAgICAgICBLZXlWYWx1ZVBhaXIoY29u
c3QgS2V5VmFsdWVQYWlyPE90aGVyS2V5VHlwZSwgT3RoZXJWYWx1ZVR5cGU+JiBvdGhlcikKLSAg
ICAgICAgICAgIDoga2V5KG90aGVyLmtleSkKLSAgICAgICAgICAgICwgdmFsdWUob3RoZXIudmFs
dWUpCisgICAgICAgICAgICA6IGZpcnN0KG90aGVyLmZpcnN0KQorICAgICAgICAgICAgLCBzZWNv
bmQob3RoZXIuc2Vjb25kKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBLZXlUeXBl
QXJnIGtleTsKLSAgICAgICAgVmFsdWVUeXBlQXJnIHZhbHVlOworICAgICAgICAvLyBUT0RPOiBS
ZW5hbWUgdGhlc2UgdG8ga2V5IGFuZCB2YWx1ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04Mjc4NC4KKyAgICAgICAgS2V5VHlwZUFyZyBmaXJzdDsKKyAgICAg
ICAgVmFsdWVUeXBlQXJnIHNlY29uZDsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBWYWx1ZVRyYWl0c0FyZz4KQEAgLTIyMyw4ICsyMjQsOCBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1UYWJs
ZVNpemUgPSBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xvdCkgeyBLZXlUcmFpdHM6OmNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmtleSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gS2V5VHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZSh2YWx1ZS5rZXkpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUmIHNsb3QpIHsgS2V5VHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUoc2xvdC5maXJzdCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gS2V5VHJhaXRzOjppc0RlbGV0ZWRW
YWx1ZSh2YWx1ZS5maXJzdCk7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0
b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAKaW5kZXggNzNiMzZhYTQy
MWY4YTk1NTA3YWFkOTZhM2E0YmFmODJhZTExZDUzZi4uOWVmY2ZmMmViMTNmNzJjY2I1OTc3NTFj
ODQzYmI0Mjk1MWZjNzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRv
ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAKQEAgLTMwOCw5ICsz
MDgsOSBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6
ZV90IHNpemVJbkJ5dGVzKQogICAgICAgICAvLyBXZSBoYXZlIHNvbWV0aGluZyB3ZSBjYW4gY29h
bGVzY2Ugd2l0aCBvbiB0aGUgbGVmdC4gUmVtb3ZlIGl0IGZyb20gdGhlIHRyZWUsIGFuZAogICAg
ICAgICAvLyByZW1vdmUgaXRzIGVuZCBmcm9tIHRoZSBlbmQgYWRkcmVzcyBtYXAuCiAgICAgICAg
IAotICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGxlZnROZWlnaGJvci0+dmFsdWUtPm1fc3RhcnQpICsgbGVmdE5laWdoYm9y
LT52YWx1ZS0+bV9zaXplSW5CeXRlcykgPT0gbGVmdE5laWdoYm9yLT5rZXkpOworICAgICAgICBB
U1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGxlZnROZWlnaGJvci0+c2Vjb25kLT5tX3N0YXJ0KSArIGxlZnROZWlnaGJvci0+c2Vjb25kLT5t
X3NpemVJbkJ5dGVzKSA9PSBsZWZ0TmVpZ2hib3ItPmZpcnN0KTsKICAgICAgICAgCi0gICAgICAg
IEZyZWVTcGFjZU5vZGUqIGxlZnROb2RlID0gbGVmdE5laWdoYm9yLT52YWx1ZTsKKyAgICAgICAg
RnJlZVNwYWNlTm9kZSogbGVmdE5vZGUgPSBsZWZ0TmVpZ2hib3ItPnNlY29uZDsKICAgICAgICAg
CiAgICAgICAgIHZvaWQqIGxlZnRTdGFydCA9IGxlZnROb2RlLT5tX3N0YXJ0OwogICAgICAgICBz
aXplX3QgbGVmdFNpemUgPSBsZWZ0Tm9kZS0+bV9zaXplSW5CeXRlczsKQEAgLTMyNiwxMCArMzI2
LDEwIEBAIHZvaWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNlKHZvaWQqIHN0YXJ0LCBzaXpl
X3Qgc2l6ZUluQnl0ZXMpCiAgICAgICAgICAgICAvLyBGcmVlaW5nIHNvbWV0aGluZyBpbiB0aGUg
bWlkZGxlIG9mIGZyZWUgYmxvY2tzLiBDb2FsZXNjZSBib3RoIGxlZnQgYW5kCiAgICAgICAgICAg
ICAvLyByaWdodCwgd2hpbHN0IHJlbW92aW5nIHRoZSByaWdodCBuZWlnaGJvciBmcm9tIHRoZSBt
YXBzLgogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQocmlnaHROZWlnaGJvci0+dmFs
dWUtPm1fc3RhcnQgPT0gcmlnaHROZWlnaGJvci0+a2V5KTsKKyAgICAgICAgICAgIEFTU0VSVChy
aWdodE5laWdoYm9yLT5zZWNvbmQtPm1fc3RhcnQgPT0gcmlnaHROZWlnaGJvci0+Zmlyc3QpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBGcmVlU3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdo
dE5laWdoYm9yLT52YWx1ZTsKLSAgICAgICAgICAgIHZvaWQqIHJpZ2h0U3RhcnQgPSByaWdodE5l
aWdoYm9yLT5rZXk7CisgICAgICAgICAgICBGcmVlU3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdo
dE5laWdoYm9yLT5zZWNvbmQ7CisgICAgICAgICAgICB2b2lkKiByaWdodFN0YXJ0ID0gcmlnaHRO
ZWlnaGJvci0+Zmlyc3Q7CiAgICAgICAgICAgICBzaXplX3QgcmlnaHRTaXplID0gcmlnaHROb2Rl
LT5tX3NpemVJbkJ5dGVzOwogICAgICAgICAgICAgdm9pZCogcmlnaHRFbmQgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmlnaHRTdGFydCkgKyBy
aWdodFNpemUpOwogICAgICAgICAgICAgCkBAIC0zNTYsOCArMzU2LDggQEAgdm9pZCBNZXRhQWxs
b2NhdG9yOjphZGRGcmVlU3BhY2Uodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcykKICAg
ICAgICAgLy8gQ2Fubm90IGNvYWxlc2NlIHdpdGggbGVmdDsgdHJ5IHRvIHNlZSBpZiB3ZSBjYW4g
Y29hbGVzY2Ugd2l0aCByaWdodC4KICAgICAgICAgCiAgICAgICAgIGlmIChyaWdodE5laWdoYm9y
ICE9IG1fZnJlZVNwYWNlU3RhcnRBZGRyZXNzTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBGcmVl
U3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT52YWx1ZTsKLSAgICAgICAgICAg
IHZvaWQqIHJpZ2h0U3RhcnQgPSByaWdodE5laWdoYm9yLT5rZXk7CisgICAgICAgICAgICBGcmVl
U3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT5zZWNvbmQ7CisgICAgICAgICAg
ICB2b2lkKiByaWdodFN0YXJ0ID0gcmlnaHROZWlnaGJvci0+Zmlyc3Q7CiAgICAgICAgICAgICBz
aXplX3QgcmlnaHRTaXplID0gcmlnaHROb2RlLT5tX3NpemVJbkJ5dGVzOwogICAgICAgICAgICAg
dm9pZCogcmlnaHRFbmQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4ocmlnaHRTdGFydCkgKyByaWdodFNpemUpOwogICAgICAgICAgICAgCkBAIC00
MDMsNyArNDAzLDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjppbmNyZW1lbnRQYWdlT2NjdXBhbmN5
KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplSW5CeXRlcykKICAgICAgICAgICAgIG1fYnl0ZXND
b21taXR0ZWQgKz0gbV9wYWdlU2l6ZTsKICAgICAgICAgICAgIG5vdGlmeU5lZWRQYWdlKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhZ2UgPDwgbV9sb2dQYWdlU2l6ZSkpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGl0ZXItPnZhbHVlKys7CisgICAgICAgICAgICBpdGVyLT5zZWNvbmQr
KzsKICAgICB9CiB9CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmRl
Y3JlbWVudFBhZ2VPY2N1cGFuY3kodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemVJbkJ5dGVzKQog
ICAgIGZvciAodWludHB0cl90IHBhZ2UgPSBmaXJzdFBhZ2U7IHBhZ2UgPD0gbGFzdFBhZ2U7ICsr
cGFnZSkgewogICAgICAgICBIYXNoTWFwPHVpbnRwdHJfdCwgc2l6ZV90Pjo6aXRlcmF0b3IgaXRl
ciA9IG1fcGFnZU9jY3VwYW5jeU1hcC5maW5kKHBhZ2UpOwogICAgICAgICBBU1NFUlQoaXRlciAh
PSBtX3BhZ2VPY2N1cGFuY3lNYXAuZW5kKCkpOwotICAgICAgICBpZiAoIS0tKGl0ZXItPnZhbHVl
KSkgeworICAgICAgICBpZiAoIS0tKGl0ZXItPnNlY29uZCkpIHsKICAgICAgICAgICAgIG1fcGFn
ZU9jY3VwYW5jeU1hcC5yZW1vdmUoaXRlcik7CiAgICAgICAgICAgICBtX2J5dGVzQ29tbWl0dGVk
IC09IG1fcGFnZVNpemU7CiAgICAgICAgICAgICBub3RpZnlQYWdlSXNGcmVlKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHBhZ2UgPDwgbV9sb2dQYWdlU2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5jcHAKaW5kZXggNGEwNDUyODI0ODlmZTk1YTE3ZTIzOTE5NzczZDM3
Y2IyNDQxMGJlNS4uNjcwZjJhMGNlYzU5OWM2ZDRmMzE2NDRlYmViNTg3NDE1ZWY0MzIxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBA
IFJlZkNvdW50ZWRMZWFrQ291bnRlcjo6flJlZkNvdW50ZWRMZWFrQ291bnRlcigpCiAgICAgICAg
ICAgICBMT0coUmVmQ291bnRlZExlYWtzLCAiTEVBSzogJXUgJXMiLCBtX2NvdW50LCBtX2Rlc2Ny
aXB0aW9uKTsKICAgICAgICAgZWxzZSBpZiAoIWxvZ2dlZFN1cHByZXNzaW9uUmVhc29uKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGxvZ3Mgb25seSBvbmUgcmVhc29uLiBMYXRlciB3ZSBjb3VsZCBj
aGFuZ2UgaXQgc28gd2UgbG9nIGFsbCB0aGUgcmVhc29ucy4KLSAgICAgICAgICAgIExPRyhSZWZD
b3VudGVkTGVha3MsICJObyBsZWFrIGNoZWNraW5nIGRvbmU6ICVzIiwgbGVha01lc3NhZ2VTdXBw
cmVzc2lvblJlYXNvbnMtPmJlZ2luKCktPmtleSk7CisgICAgICAgICAgICBMT0coUmVmQ291bnRl
ZExlYWtzLCAiTm8gbGVhayBjaGVja2luZyBkb25lOiAlcyIsIGxlYWtNZXNzYWdlU3VwcHJlc3Np
b25SZWFzb25zLT5iZWdpbigpLT5maXJzdCk7CiAgICAgICAgICAgICBsb2dnZWRTdXBwcmVzc2lv
blJlYXNvbiA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHJIYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKaW5k
ZXggOTU0MTgzN2UyYTZmMjliOWYwNmMzYzk1NjJhMTMzNDZiMDFkNGNlMS4uNWZhZTkwZThjZDQ3
MTEyOWU4OWRjYzhlN2FlNjYzOGFkYTE1NGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UmVmUHRySGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaApAQCAt
MjE2LDcgKzIxNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBZGRSZXN1bHQgcmVzdWx0
ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4
aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUu
Ci0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpAQCAtMjI4LDcgKzIyOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBZGRSZXN1
bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZv
dW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBw
ZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBl
ZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpAQCAtMjU0LDcgKzI1NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS5s
b29rdXAoa2V5KTsKICAgICAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgICAgIHJldHVybiBNYXBw
ZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVlKCkpOwotICAgICAgICByZXR1
cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7CisgICAgICAgIHJldHVybiBNYXBw
ZWRUcmFpdHM6OnBlZWsoZW50cnktPnNlY29uZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFw
cGVkVHJhaXRzPgpAQCAtMjY0LDcgKzI2NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBW
YWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS50ZW1w
bGF0ZSBsb29rdXA8VHJhbnNsYXRvcj4oa2V5KTsKICAgICAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVl
KCkpOwotICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnktPnNlY29uZCk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgpAQCAtMzA4LDcgKzMwOCw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0
ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFzc091dChNYXBw
ZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHJlc3Vs
dCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOworICAgICAgICBNYXBwZWRQYXNz
T3V0VHlwZSByZXN1bHQgPSBNYXBwZWRUcmFpdHM6OnBhc3NPdXQoaXQtPnNlY29uZCk7CiAgICAg
ICAgIHJlbW92ZShpdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMzIwLDcg
KzMyMCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRy
YWl0czo6cGFzc091dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBl
ZFBhc3NPdXRUeXBlIHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOwor
ICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSByZXN1bHQgPSBNYXBwZWRUcmFpdHM6OnBhc3NPdXQo
aXQtPnNlY29uZCk7CiAgICAgICAgIHJlbW92ZShpdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggM2U2ZmE0YTYzM2ZhZDQyZGViNGRjNDgzMzI1OTIzNDFl
ODRiM2EwMS4uNWU3YTQ4NGNkODc2NmJjYWYyMmNhNGM5M2RkY2U5NzBkZDJiYTIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHR5cGVuYW1l
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OworICAgICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgKz0gY291bnQ7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGxvbmcg
Z2V0KGNvbnN0IFQmIGtleSkgY29uc3QKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRl
ciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
aXRlci0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAgICAgfQogICAgIAog
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQpAQCAtODgsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7
CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5k
KCk7ICsraXRlcikKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtl
eSwgaXRlci0+dmFsdWUpKTsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0
ZXItPmZpcnN0LCBpdGVyLT5zZWNvbmQpKTsKICAgICAgICAgCiAgICAgICAgIHN0ZDo6c29ydChs
aXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwogICAgICAgICByZXR1cm4gbGlzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCBkZGMzM2I0YWNmOTJhNWM2NDc3ZmIyMzM4NjIy
OGRjZWExNzA4MzJmLi4yMjZlY2JkNDhjMDI5ODc5ZDExYzk1MjNkNTA1MzQ0ZTU2ODBmODU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0xNTAsOCArMTUwLDggQEAgc3Rh
dGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShjb25zdCBwdGhy
ZWFkX3QmIHB0aHJlYWRIYW5kbGUKIAogICAgIFRocmVhZE1hcDo6aXRlcmF0b3IgaSA9IHRocmVh
ZE1hcCgpLmJlZ2luKCk7CiAgICAgZm9yICg7IGkgIT0gdGhyZWFkTWFwKCkuZW5kKCk7ICsraSkg
ewotICAgICAgICBpZiAocHRocmVhZF9lcXVhbChpLT52YWx1ZS0+cHRocmVhZEhhbmRsZSgpLCBw
dGhyZWFkSGFuZGxlKSAmJiAhaS0+dmFsdWUtPmhhc0V4aXRlZCgpKQotICAgICAgICAgICAgcmV0
dXJuIGktPmtleTsKKyAgICAgICAgaWYgKHB0aHJlYWRfZXF1YWwoaS0+c2Vjb25kLT5wdGhyZWFk
SGFuZGxlKCksIHB0aHJlYWRIYW5kbGUpICYmICFpLT5zZWNvbmQtPmhhc0V4aXRlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRl
eCBhM2VmNDAyNmRkMDk5YWFjNzEwNjQ2NDk0YmRjZDViOTY4NTVkYTNkLi41N2NhZjMxNTJhY2M4
OWQ2OTdhYThmNjQ1Y2M4ZjAxMzU5YmNiMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIEdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllciogR2VvbG9jYXRpb246OldhdGNoZXJzOjpmaW5kKGludCBp
ZCkKICAgICBJZFRvTm90aWZpZXJNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lkVG9Ob3RpZmllck1h
cC5maW5kKGlkKTsKICAgICBpZiAoaXRlciA9PSBtX2lkVG9Ob3RpZmllck1hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGl0ZXItPnZhbHVlLmdldCgpOworICAgIHJldHVy
biBpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246OldhdGNoZXJzOjpy
ZW1vdmUoaW50IGlkKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgR2VvbG9jYXRpb246OldhdGNo
ZXJzOjpyZW1vdmUoaW50IGlkKQogICAgIElkVG9Ob3RpZmllck1hcDo6aXRlcmF0b3IgaXRlciA9
IG1faWRUb05vdGlmaWVyTWFwLmZpbmQoaWQpOwogICAgIGlmIChpdGVyID09IG1faWRUb05vdGlm
aWVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9ub3RpZmllclRvSWRNYXAucmVt
b3ZlKGl0ZXItPnZhbHVlKTsKKyAgICBtX25vdGlmaWVyVG9JZE1hcC5yZW1vdmUoaXRlci0+c2Vj
b25kKTsKICAgICBtX2lkVG9Ob3RpZmllck1hcC5yZW1vdmUoaXRlcik7CiB9CiAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpXYXRjaGVyczo6cmVtb3ZlKEdlb05vdGlmaWVy
KiBub3RpZmllcikKICAgICBOb3RpZmllclRvSWRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlm
aWVyVG9JZE1hcC5maW5kKG5vdGlmaWVyKTsKICAgICBpZiAoaXRlciA9PSBtX25vdGlmaWVyVG9J
ZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1faWRUb05vdGlmaWVyTWFwLnJlbW92
ZShpdGVyLT52YWx1ZSk7CisgICAgbV9pZFRvTm90aWZpZXJNYXAucmVtb3ZlKGl0ZXItPnNlY29u
ZCk7CiAgICAgbV9ub3RpZmllclRvSWRNYXAucmVtb3ZlKGl0ZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggODExY2Y0
YTJmNjk3N2Y4MzJhZjMxYThjMjA3MDI2OTE5NzA2YmIxMi4uYWE5M2U2YTgyYzc1NDhjOThiMTk5
NDI1YWEwMGIyY2VjMzllODg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CiAgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAh
PSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgb2JqZWN0U3Rv
cmVOYW1lcy0+YXBwZW5kKGl0LT5rZXkpOworICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBl
bmQoaXQtPmZpcnN0KTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5zb3J0KCk7CiAgICAgcmV0dXJu
IG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCA3NTM4MDdmZDhlODdmZjY0NDVjNTYxNWJhNTg1MjUxZDFkOThkODRiLi44MTEwYzI0YzEzYjNj
NDYzZWUzN2IyMGQ0Y2ZmYTcxMjQyNDRiNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6bWV0YWRhdGEoKSBjb25zdAogewogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEo
bV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CiAgICAgZm9yIChPYmplY3RTdG9yZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29i
amVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNl
dChpdC0+a2V5LCBpdC0+dmFsdWUtPm1ldGFkYXRhKCkpOworICAgICAgICBtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0
dXJuIG1ldGFkYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCAxNjA2NjljZDI2YTk4
NTMwZGM0ODNjNzA5ODUxNGE0NmMzODdhMjUxLi44ZGE1YzAyZTQyM2Y2ZjY0ZTU3OTczMGRiNzNm
YTI5ZWMyYmU0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIGlmIChpdCAhPSBtX2RhdGFiYXNlQmFja2VuZE1h
cC5lbmQoKSkgewogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGNvbm5lY3Rpb25zIHRvIHRo
ZSBkYXRhYmFzZSwgZGlyZWN0bHkgZGVsZXRlIHRoZQogICAgICAgICAvLyBkYXRhYmFzZS4KLSAg
ICAgICAgaXQtPnZhbHVlLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOworICAgICAgICBpdC0+
c2Vjb25kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CiAgICAgSURCQmFja2luZ1N0b3JlTWFw
OjppdGVyYXRvciBpdDIgPSBtX2JhY2tpbmdTdG9yZU1hcC5maW5kKGZpbGVJZGVudGlmaWVyKTsK
ICAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3JlTWFwLmVuZCgpKQotICAgICAgICBiYWNraW5n
U3RvcmUgPSBpdDItPnZhbHVlOworICAgICAgICBiYWNraW5nU3RvcmUgPSBpdDItPnNlY29uZDsK
ICAgICBlbHNlIHsKICNpZiBVU0UoTEVWRUxEQikKICAgICAgICAgYmFja2luZ1N0b3JlID0gSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YURpcmVj
dG9yeSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJz
aW9uLCBQYXNzUmVmUHRyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVs
c2UKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnZhbHVlOworICAgICAgICBkYXRhYmFz
ZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZlcnNpb24gPT0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25u
ZWN0aW9uKGNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMGJmZGY5MWVmMDNkNTQ0NzY4NDIzNzUzZGFh
YTMyYTVkMGRlODdiNS4uYzMwYTI1M2E0MDY1M2U4OTZiMjRkM2Y3NThkN2NhNTg5MzYxMjg4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjppbmRleE5hbWVzIik7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMg
PSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRh
dGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YWRhdGEuaW5kZXhlcy5iZWdp
bigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIGluZGV4
TmFtZXMtPmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5m
aXJzdCk7CiAgICAgaW5kZXhOYW1lcy0+c29ydCgpOwogICAgIHJldHVybiBpbmRleE5hbWVzLnJl
bGVhc2UoKTsKIH0KQEAgLTIwNiw4ICsyMDYsOCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpwdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwog
ICAgIFZlY3RvcjxJbmRleEtleXM+IGluZGV4S2V5czsKICAgICBmb3IgKElEQk9iamVjdFN0b3Jl
TWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YWRhdGEuaW5kZXhl
cy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpIHsKICAgICAg
ICAgSW5kZXhLZXlzIGtleXM7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoaXQt
PnZhbHVlLCB2YWx1ZSwgJmtleXMpOwotICAgICAgICBpbmRleE5hbWVzLmFwcGVuZChpdC0+a2V5
KTsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShpdC0+c2Vjb25kLCB2YWx1ZSwg
JmtleXMpOworICAgICAgICBpbmRleE5hbWVzLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAgICBp
bmRleEtleXMuYXBwZW5kKGtleXMpOwogICAgIH0KICAgICBBU1NFUlQoaW5kZXhLZXlzLnNpemUo
KSA9PSBpbmRleE5hbWVzLnNpemUoKSk7CkBAIC00NDgsNyArNDQ4LDcgQEAgUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMKIAogICAgIElEQkluZGV4TWFwOjppdGVyYXRvciBpdCA9IG1faW5kZXhNYXAu
ZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleE1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAKICAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQgPSBtX2JhY2tlbmQtPmluZGV4
KG5hbWUsIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBk
aWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNv
ZGUuIEFuZCB2aWNlIHZlcnNhLgpAQCAtNDU4LDcgKzQ1OCw3IEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjCiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJh
dG9yIG1kaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuZmluZChuYW1lKTsKICAgICBBU1NFUlQobWRp
dCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCkpOwogCi0gICAgUmVmUHRyPElEQkluZGV4PiBp
bmRleCA9IElEQkluZGV4OjpjcmVhdGUobWRpdC0+dmFsdWUsIGluZGV4QmFja2VuZC5yZWxlYXNl
KCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIFJlZlB0cjxJREJJbmRleD4gaW5k
ZXggPSBJREJJbmRleDo6Y3JlYXRlKG1kaXQtPnNlY29uZCwgaW5kZXhCYWNrZW5kLnJlbGVhc2Uo
KSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwg
aW5kZXgpOwogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC00ODIsNyArNDgyLDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWVjKSB7CiAgICAgICAgIElEQkluZGV4TWFwOjpp
dGVyYXRvciBpdCA9IG1faW5kZXhNYXAuZmluZChuYW1lKTsKICAgICAgICAgaWYgKGl0ICE9IG1f
aW5kZXhNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+bWFya0RlbGV0ZWQoKTsK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7CiAgICAgICAgICAgICBtX2lu
ZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwCmluZGV4IDBlYjQ4MDQ4MzgxZmI3YzdhM2Q2ZWM3YWFkODFhMTk3MWJjNDkwYTUuLmI2ZDBl
YTBhNTBkZTIwZGRlYWM1MTVmNjRmNmQ4NTkzYTY3MjQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwCkBAIC03NCw3ICs3NCw3IEBAIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewogICAgIElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fYXV0b0luY3JlbWVudCk7
CiAgICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4o
KTsgaXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAgICBtZXRhZGF0YS5pbmRleGVz
LnNldChpdC0+a2V5LCBpdC0+dmFsdWUtPm1ldGFkYXRhKCkpOworICAgICAgICBtZXRhZGF0YS5p
bmRleGVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJldHVy
biBtZXRhZGF0YTsKIH0KIApAQCAtMjMwLDExICsyMzAsMTEgQEAgc3RhdGljIGJvb2wgbWFrZUlu
ZGV4V3JpdGVycyhJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZSwgUGFzc1Jl
ZlB0cjwKIAogICAgIGZvciAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhNYXA6Oml0
ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmUtPml0ZXJJbmRleGVzQmVnaW4oKTsgaXQgIT0gb2JqZWN0
U3RvcmUtPml0ZXJJbmRleGVzRW5kKCk7ICsraXQpIHsKIAotICAgICAgICBjb25zdCBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4mIGluZGV4ID0gaXQtPnZhbHVlOworICAgICAgICBjb25zdCBS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4mIGluZGV4ID0gaXQtPnNlY29uZDsKICAgICAgICAg
aWYgKCFpbmRleC0+aGFzVmFsaWRJZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFRoZSBp
bmRleCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBk
YXRhYmFzZSB5ZXQuCiAKLSAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpJ
bmRleEtleXMga2V5cyA9IGluZGV4S2V5TWFwLmdldChpdC0+a2V5KTsKKyAgICAgICAgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXMga2V5cyA9IGluZGV4S2V5TWFwLmdl
dChpdC0+Zmlyc3QpOwogICAgICAgICAvLyBJZiB0aGUgb2JqZWN0U3RvcmUgaXMgdXNpbmcgYXV0
b0luY3JlbWVudCwgdGhlbiBhbnkgaW5kZXhlcyB3aXRoIGFuIGlkZW50aWNhbCBrZXlQYXRoIG5l
ZWQgdG8gYWxzbyB1c2UgdGhlIHByaW1hcnkgKGdlbmVyYXRlZCkga2V5IGFzIGEga2V5LgogICAg
ICAgICBpZiAoa2V5V2FzR2VuZXJhdGVkKSB7CiAgICAgICAgICAgICBjb25zdCBJREJLZXlQYXRo
JiBpbmRleEtleVBhdGggPSBpbmRleC0+a2V5UGF0aCgpOwpAQCAtNDA0LDEwICs0MDQsMTAgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlAKICAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXIgPSBi
YWNraW5nU3RvcmVDdXJzb3ItPm9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpOwogCiAgICAg
ICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkluZGV4TWFwOjppdGVyYXRv
ciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmUt
Pm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgICAgIGlmICghaXQtPnZhbHVl
LT5oYXNWYWxpZElkKCkpCisgICAgICAgICAgICAgICAgaWYgKCFpdC0+c2Vjb25kLT5oYXNWYWxp
ZElkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBUaGUgaW5kZXggb2JqZWN0
IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgeWV0
LgogCi0gICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdT
dG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQo
KSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT52YWx1ZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPmRhdGFiYXNl
SWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5zZWNvbmQtPmlkKCksIHJlY29yZElkZW50aWZp
ZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vz
cyk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiNTM0Njc3NDFiNDQyN2YxZDZjZDA0OWY5
YTA0NjE5YTA1MzZiMWEzLi4yMWU1ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKIAog
ICAgIElEQk9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVNYXAuZmlu
ZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RTdG9yZU1hcC5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAKICAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZUJhY2tlbmQgPSBt
X2JhY2tlbmQtPm9iamVjdFN0b3JlKG5hbWUsIGVjKTsKICAgICBBU1NFUlQoIW9iamVjdFN0b3Jl
QmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGEgc3RvcmUsIHdlIHNob3VsZCBo
YXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCkBAIC0xNjIsNyAr
MTYyLDcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBJREJEYXRhYmFzZU1ldGFkYXRh
OjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgbWRpdCA9IG1ldGFkYXRhLm9iamVjdFN0
b3Jlcy5maW5kKG5hbWUpOwogICAgIEFTU0VSVChtZGl0ICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jl
cy5lbmQoKSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZShtZGl0LT52YWx1ZSwgb2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlz
KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3Rv
cmU6OmNyZWF0ZShtZGl0LT5zZWNvbmQsIG9iamVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CiAgICAg
b2JqZWN0U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0
U3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgQVNTRVJUKGlz
VmVyc2lvbkNoYW5nZSgpKTsKICAgICBJREJPYmplY3RTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X29iamVjdFN0b3JlTWFwLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ICE9IG1fb2JqZWN0U3RvcmVN
YXAuZW5kKCkpIHsKLSAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9
IGl0LT52YWx1ZTsKKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIG1fb2JqZWN0U3RvcmVNYXAucmVtb3ZlKG5hbWUpOwogICAg
ICAgICBvYmplY3RTdG9yZS0+bWFya0RlbGV0ZWQoKTsKICAgICAgICAgbV9vYmplY3RTdG9yZUNs
ZWFudXBNYXAuc2V0KG9iamVjdFN0b3JlLCBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKSk7CkBAIC0y
OTAsNyArMjkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAKICAgICBpZiAo
aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRh
TWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmJlZ2luKCk7IGl0ICE9
IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgaXQtPmtl
eS0+c2V0TWV0YWRhdGEoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIGl0LT5maXJzdC0+c2V0TWV0
YWRhdGEoaXQtPnNlY29uZCk7CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNs
ZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMzc4LDcgKzM3OCw3IEBAIGJvb2wg
SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAK
ICAgICAvLyBCcmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIGZvciAoSURCT2JqZWN0U3RvcmVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZU1hcC5iZWdpbigpOyBpdCAhPSBtX29iamVj
dFN0b3JlTWFwLmVuZCgpOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnRyYW5zYWN0aW9uRmlu
aXNoZWQoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+dHJhbnNhY3Rpb25GaW5pc2hlZCgpOwogICAg
IG1fb2JqZWN0U3RvcmVNYXAuY2xlYXIoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJn
ZXQ+ID4gdGFyZ2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCmluZGV4IDYyOTA3ZTNlMWNlNmIwOTE1YzJiMDM0
NzYwOWU1MDdlOGMwMWNlYjYuLmM3NTM5YzZlMTEyYjllMWU2YmYxZTJjZDNmMDJhZTBjYmEyYmVh
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9B
YnN0cmFjdERhdGFiYXNlLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgQWJzdHJhY3REYXRh
YmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRh
YmFzZSwKICAgICAgICAgR3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9yIGVudHJ5ID0gZ3VpZFRvVmVy
c2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVudHJ5ICE9IGd1aWRUb1ZlcnNp
b25NYXAoKS5lbmQoKSkgewogICAgICAgICAgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVtcHR5
IHN0cmluZyAoc2VlIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgotICAgICAgICAgICAgY3VycmVu
dFZlcnNpb24gPSBlbnRyeS0+dmFsdWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogZW50cnkt
PnZhbHVlLmlzb2xhdGVkQ29weSgpOworICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBlbnRy
eS0+c2Vjb25kLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IGVudHJ5LT5zZWNvbmQuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVkIHZl
cnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCku
ZGF0YSgpKTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDViZDVl
N2IzZDJlMWM0MDIxMWIwMWE2MWQwYmY3ODNjYjM1MjYyMjguLjQ2ZDI4MTI5MmQ5YjdlNDM3YjVk
ZTBmMzI1ZmFmMjQ1YzgxNjNhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBTY3JpcHRFeGVjdXRpb25Db250ZQogCiAgICAgICAgIERhdGFiYXNlTmFtZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgZGJOYW1lTWFwRW5kSXQgPSBuYW1lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChE
YXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEl0ID0gbmFtZU1hcC0+YmVn
aW4oKTsgZGJOYW1lTWFwSXQgIT0gZGJOYW1lTWFwRW5kSXQ7ICsrZGJOYW1lTWFwSXQpIHsKLSAg
ICAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT52YWx1ZTsK
KyAgICAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT5zZWNv
bmQ7CiAgICAgICAgICAgICBEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZGJTZXRFbmRJdCA9
IGRhdGFiYXNlU2V0LT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoRGF0YWJhc2VTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGRiU2V0SXQgPSBkYXRhYmFzZVNldC0+YmVnaW4oKTsgZGJTZXRJdCAhPSBkYlNl
dEVuZEl0OyArK2RiU2V0SXQpIHsKICAgICAgICAgICAgICAgICBpZiAoKCpkYlNldEl0KS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCmluZGV4IDJi
ZjhhZjRhZTAwOTkyODBhY2ExNzU3NzQ4YmEyMWNmOTBiNzAyZGIuLjQ0MzU1MGE1NzMwOWYzMzYz
ZjBmY2E5OGY1MDhjMDI3NmQwZDk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBPcmlnaW5Vc2FnZVJlY29yZDo6ZGlza1VzYWdlKCkKICAg
ICBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VFbnRyeT46Oml0ZXJhdG9yIGlEYXRhYmFzZSA9IG1f
ZGF0YWJhc2VNYXAuYmVnaW4oKTsKICAgICBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VFbnRyeT46
Oml0ZXJhdG9yIGVuZERhdGFiYXNlID0gbV9kYXRhYmFzZU1hcC5lbmQoKTsKICAgICBmb3IgKDsg
aURhdGFiYXNlICE9IGVuZERhdGFiYXNlOyArK2lEYXRhYmFzZSkKLSAgICAgICAgbV9jYWNoZWRE
aXNrVXNhZ2UgKz0gaURhdGFiYXNlLT52YWx1ZS5zaXplOworICAgICAgICBtX2NhY2hlZERpc2tV
c2FnZSArPSBpRGF0YWJhc2UtPnNlY29uZC5zaXplOwogCiAgICAgbV9jYWNoZWREaXNrVXNhZ2VJ
c1ZhbGlkID0gdHJ1ZTsKICAgICByZXR1cm4gbV9jYWNoZWREaXNrVXNhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBkYTNhN2VlNzViOGMwMTI1OTQ2NmVjNGE3ZWFkYTk3
YmQxYzIzYmY0Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThmMDIwNzM4MGY4ZDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRpbmF0aW9u
SW5mb01hcC5hZGQoZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25JbmZvKCkpLml0ZXJhdG9yOwog
ICAgIH0KIAotICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29yZGluYXRpb25JbmZvSXRl
cmF0b3ItPnZhbHVlOworICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29yZGluYXRpb25J
bmZvSXRlcmF0b3ItPnNlY29uZDsKICAgICBpbmZvLnBlbmRpbmdUcmFuc2FjdGlvbnMuYXBwZW5k
KHRyYW5zYWN0aW9uKTsKICAgICBwcm9jZXNzUGVuZGluZ1RyYW5zYWN0aW9ucyhpbmZvKTsKIH0K
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpyZWxlYXNl
TG9jayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAKICAgICBDb29yZGluYXRpb25JbmZv
TWFwOjppdGVyYXRvciBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbklu
Zm9NYXAuZmluZChkYklkZW50aWZpZXIpOwogICAgIEFTU0VSVChjb29yZGluYXRpb25JbmZvSXRl
cmF0b3IgIT0gbV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgpKTsKLSAgICBDb29yZGluYXRpb25J
bmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT52YWx1ZTsKKyAgICBDb29yZGlu
YXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT5zZWNvbmQ7CiAKICAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAgICAgICBBU1NFUlQoaW5mby5h
Y3RpdmVSZWFkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpzaHV0ZG93bigpCiAgICAg
Ly8gTm90aWZ5IGFsbCB0cmFuc2FjdGlvbnMgaW4gcHJvZ3Jlc3MgdGhhdCB0aGUgZGF0YWJhc2Ug
dGhyZWFkIGlzIHNodXR0aW5nIGRvd24KICAgICBmb3IgKENvb3JkaW5hdGlvbkluZm9NYXA6Oml0
ZXJhdG9yIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5i
ZWdpbigpOwogICAgICAgICAgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yICE9IG1fY29vcmRpbmF0
aW9uSW5mb01hcC5lbmQoKTsgKytjb29yZGluYXRpb25JbmZvSXRlcmF0b3IpIHsKLSAgICAgICAg
Q29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29yZGluYXRpb25JbmZvSXRlcmF0
b3ItPnNlY29uZDsKICAgICAgICAgaWYgKGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbikKICAg
ICAgICAgICAgIGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbi0+bm90aWZ5RGF0YWJhc2VUaHJl
YWRJc1NodXR0aW5nRG93bigpOwogICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFNRTFRyYW5z
YWN0aW9uPiA+OjppdGVyYXRvciBhY3RpdmVSZWFkVHJhbnNhY3Rpb25zSXRlcmF0b3IgPQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRh
YmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAppbmRleCA2MGE3NmNhNWM5
NTk4MmJlYTk0Y2UwN2JhZjY2ZWRhNWQ4MjdjNWFiLi4xMTdmZGJlZWQzMWQ2M2I2NGI5NDE4MDNi
OGVhZGNkOTk4NWNlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9t
aXVtLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAKICAg
ICBEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEVuZEl0ID0gbmFtZU1h
cC0+ZW5kKCk7CiAgICAgZm9yIChEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFt
ZU1hcEl0ID0gbmFtZU1hcC0+YmVnaW4oKTsgZGJOYW1lTWFwSXQgIT0gZGJOYW1lTWFwRW5kSXQ7
ICsrZGJOYW1lTWFwSXQpIHsKLSAgICAgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJO
YW1lTWFwSXQtPnZhbHVlOworICAgICAgICBEYXRhYmFzZVNldCogZGF0YWJhc2VTZXQgPSBkYk5h
bWVNYXBJdC0+c2Vjb25kOwogICAgICAgICBEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gZGF0YWJhc2VTZXQtPmVuZCgpOwogICAgICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGRhdGFiYXNlU2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgICAgIGlmICgoKml0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IGNvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVt
L1F1b3RhVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2No
cm9taXVtL1F1b3RhVHJhY2tlci5jcHAKaW5kZXggMzgyYTNmYjhiNTc4NjI1NWNlYmEwZTdmODU5
YjE0MmFlYzFkOTUxOS4uMDM0NGNhOGY2NTZhNjVkMzdiMzA0YmI3ZTM5ODg5ZmNlMzZmOGY1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9R
dW90YVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
Y2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcApAQCAtNTMsOCArNTMsOCBAQCB2b2lkIFF1b3RhVHJh
Y2tlcjo6Z2V0RGF0YWJhc2VTaXplQW5kU3BhY2VBdmFpbGFibGVUb09yaWdpbigKICAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja0RhdGEobV9kYXRhR3VhcmQpOwogICAgICAgICBBU1NFUlQobV9kYXRh
YmFzZVNpemVzLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKTsKICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFNpemVNYXA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VTaXplcy5maW5k
KG9yaWdpbklkZW50aWZpZXIpOwotICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmNvbnRhaW5zKGRh
dGFiYXNlTmFtZSkpOwotICAgICAgICAqZGF0YWJhc2VTaXplID0gaXQtPnZhbHVlLmdldChkYXRh
YmFzZU5hbWUpOworICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5jb250YWlucyhkYXRhYmFzZU5h
bWUpKTsKKyAgICAgICAgKmRhdGFiYXNlU2l6ZSA9IGl0LT5zZWNvbmQuZ2V0KGRhdGFiYXNlTmFt
ZSk7CiAKICAgICAgICAgaWYgKG1fc3BhY2VBdmFpbGFibGVUb09yaWdpbnMuY29udGFpbnMob3Jp
Z2luSWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICpzcGFjZUF2YWlsYWJsZSA9IG1fc3BhY2VB
dmFpbGFibGVUb09yaWdpbnMuZ2V0KG9yaWdpbklkZW50aWZpZXIpOwpAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFF1b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKAogewogICAgIE11dGV4TG9j
a2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJkKTsKICAgICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46
Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVzLmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXpl
TWFwKCkpLml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5zZXQoZGF0YWJhc2VOYW1lLCBkYXRhYmFz
ZVNpemUpOworICAgIGl0LT5zZWNvbmQuc2V0KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VTaXplKTsK
IH0KIAogdm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZVNwYWNlQXZhaWxhYmxlVG9PcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc3BhY2VBdmFp
bGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggNjdiYjNkYWExMjk5ODg0NTExMTA2
OTBlMTkyZWEwZGEwMDc2NmNkOS4uNzZjMDQwZDFjOTM3MmFiNzBlMjI2NDYwYTg3ZDJhNTVmMmM4
OGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIFdl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpbgogICAgIGludCB3aW5kb3dCaXRzID0gMTU7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBhcmFtZXRlciA9IHNlcnZlclBhcmFtZXRl
cnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQ
YXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0ZXItPnZhbHVl
LnRvSW50KCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0ZXItPnNlY29uZC50b0ludCgp
OwogICAgICAgICBpZiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSB7CiAgICAg
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2Jp
dHMgcGFyYW1ldGVyIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk4LDcgKzk4LDcg
QEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25zZShj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4
dFRha2VPdmVyTW9kZSBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6OlRha2VPdmVyQ29udGV4dDsK
ICAgICBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm5vX2NvbnRleHRfdGFrZW92
ZXIiKTsKICAgICBpZiAocGFyYW1ldGVyICE9IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKLSAg
ICAgICAgaWYgKCFwYXJhbWV0ZXItPnZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghcGFy
YW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVyIjsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuY3BwCmluZGV4IDU2MDlmNjU4MWFhYjk3NDJiMGZkODVmZjE1ZDE1ZmE1MGVkMjlmNWIu
LjdjNTkyYWQxYmYyODA2OGM4MzAzMzY5YjYwNjU2NzNiNmJhN2U5NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBleHRlbnNpCiAgICAgLy8gRklYTUU6IFNob3VsZCB1c2UgTGlzdEhhc2hTZXQgdG8ga2Vl
cCB0aGUgb3JkZXIgb2YgdGhlIHBhcmFtZXRlcnMuCiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywg
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IgPSBleHRlbnNpb25QYXJhbWV0ZXJzLmJl
Z2luKCk7IGl0ZXJhdG9yICE9IGV4dGVuc2lvblBhcmFtZXRlcnMuZW5kKCk7ICsraXRlcmF0b3Ip
IHsKICAgICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZCgiOyAiKTsKLSAg
ICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+a2V5KTsK
LSAgICAgICAgaWYgKCFpdGVyYXRvci0+dmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9hY2Nl
cHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+Zmlyc3QpOworICAgICAgICBp
ZiAoIWl0ZXJhdG9yLT5zZWNvbmQuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIG1fYWNjZXB0ZWRF
eHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIj0iKTsKLSAgICAgICAgICAgIG1fYWNjZXB0ZWRFeHRl
bnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgICAgIG1fYWNj
ZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCA4ZTMyZWI1MDEwMTMzZjllZTg3M2U3OTU4Y2U0YjNiNmM3YmVhMGVmLi42
YzA4YmUyMWYwZTMxNjcxMjdhYjNmMmI0Yjk1N2Y5YjRlYmNmODIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogewogICAgIEhhc2hNYXA8QVhJRCwgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID46Oml0ZXJhdG9yIGVuZCA9IG1fb2JqZWN0cy5lbmQo
KTsKICAgICBmb3IgKEhhc2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID46
Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSAoKml0KS52YWx1ZS5nZXQoKTsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gKCppdCkuc2Vjb25kLmdldCgpOwogICAgICAg
ICBkZXRhY2hXcmFwcGVyKG9iaik7CiAgICAgICAgIG9iai0+ZGV0YWNoKCk7CiAgICAgICAgIHJl
bW92ZUFYSUQob2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9E
T01PYmplY3RDYWNoZS5jcHAKaW5kZXggZGQ3ZDA0OTcxOGM4MTIyZjI0YjM4ZGI4ODNlNWI2YjY0
ZTJlYzA2Ni4uMmU3ZjEwNmU3OWUzMWM3MzE1NGFiOWNmYWExOWE1ODllOWRlN2RkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6Y2xlYXJCeUZyYW1lKFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSkKICAgICAvLyBpdGVyYXRpbmcgdGhlIGNhY2hlIGl0c2VsZi4KICAg
ICBET01PYmplY3RNYXA6Oml0ZXJhdG9yIGVuZCA9IGRvbU9iamVjdHMoKS5lbmQoKTsKICAgICBm
b3IgKERPTU9iamVjdE1hcDo6aXRlcmF0b3IgaXRlciA9IGRvbU9iamVjdHMoKS5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIERPTU9iamVjdENhY2hlRGF0YSogZGF0YSA9
IGl0ZXItPnZhbHVlOworICAgICAgICBET01PYmplY3RDYWNoZURhdGEqIGRhdGEgPSBpdGVyLT5z
ZWNvbmQ7CiAgICAgICAgIEFTU0VSVChkYXRhKTsKICAgICAgICAgaWYgKCghZnJhbWUgfHwgZGF0
YS0+ZnJhbWUgPT0gZnJhbWUpICYmIGRhdGEtPnRpbWVzUmV0dXJuZWQpCiAgICAgICAgICAgICB0
b1VucmVmLmFwcGVuZChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKaW5kZXggNzUzYzA0ZDJmYzU3NzJlMDk1OWRjZWY1YWM2
MWJhMzBjOTZlMTc4Zi4uNjQ4MjhkNjk4OGY3ZTQzYjNlOWE0NjM2OTA4Y2QyMTI1NDdhMmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmgKQEAgLTM5LDE1ICszOSwxNSBAQCBwdWJsaWM6CiAgICAgfkRPTU9iamVjdEhhc2hUYWJs
ZU1hcCgpCiAgICAgewogICAgICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgSlNDOjpIYXNoVGFibGUq
LCBKU0M6Okhhc2hUYWJsZT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5iZWdpbigpOyBpdGVyICE9
IG1fbWFwLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBpdGVyLT52YWx1ZS5kZWxldGVUYWJs
ZSgpOworICAgICAgICAgICAgaXRlci0+c2Vjb25kLmRlbGV0ZVRhYmxlKCk7CiAgICAgfQogCiAg
ICAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldChjb25zdCBKU0M6Okhhc2hUYWJsZSogc3RhdGlj
VGFibGUpCiAgICAgewogICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgSlND
OjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChzdGF0aWNUYWJsZSk7CiAg
ICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuICZpdGVy
LT52YWx1ZTsKLSAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIHN0YXRpY1Rh
YmxlLT5jb3B5KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAmaXRlci0+
c2Vjb25kOworICAgICAgICByZXR1cm4gJm1fbWFwLnNldChzdGF0aWNUYWJsZSwgc3RhdGljVGFi
bGUtPmNvcHkoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAxM2M5M2Y2YTliODRh
OGFmNWQ2MTBkZDU0OTk0NjE4ZWY4NDU0ZjZjLi42NTUxZDY2ODdkZmY4MjhlOTU0YmMyY2YxZjRh
YTZjOGZhMjQ2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dQogewogICAg
IEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmVz
KCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOwotICAgIHJl
dHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKaW5kZXggZDNjNDI5YTUwOGQ5MTBkZTdiZDJlZWJlZDY3ZDc3NWMyNWVj
N2IxOC4uMzYxMDQ4MDhiYjYwOWU1N2IwNDgxMTg1MmU4OTVkYWQ3MTMwYTRhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtODgs
MTEgKzg4LDExIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIEpTRE9NU3RydWN0dXJlTWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCkuZW5kKCk7CiAgICAgZm9yIChK
U0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnZh
bHVlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0LT5zZWNvbmQpOwogCiAgICAgSlNET01D
b25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygp
LmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gdGhp
c09iamVjdC0+Y29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVuZDI7ICsraXQyKQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmaXQyLT52YWx1ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZpdDItPnNlY29uZCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNldEN1cnJlbnRF
dmVudChFdmVudCogY3VycmVudEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggOWNjMTcxYmMyODg3NGE4MzllZjgzM2QyMTRmNmY4
ZjUxODlmNDc2OC4uYmRhYjU2OGYwMjQ1M2IxNDRmMjNkNDdjYTQ3ZTlkNDY5M2Y1NWM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05
Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNDOjpKU09iamVjdCog
Y29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JD
bGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAg
ICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsK
ICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAg
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9y
cygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUu
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CisgICAg
ICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1
Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCkuaXRlcmF0b3ItPnNl
Y29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZWQ3NDNj
YzllOWVjNTFjMGQ1MzE2MTA5NGYzM2Q5YzkyYWRiMTBkNi4uZmYwYWVlZmI1MGE2MDhjOTIxMDMz
ZDk4NzkzM2NkYzY1ZmNmZDJjOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0
ZW5lciwgUGFnZSogcGFnCiAgICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwogICAg
IEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAKLSAgICBPd25QdHI8TGlzdGVuZXJTZXQ+JiBsaXN0
ZW5lcnMgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBPd25QdHI8TGlzdGVuZXJTZXQ+JiBsaXN0ZW5lcnMgPSBtX3BhZ2VMaXN0ZW5l
cnNNYXAuYWRkKHBhZ2UsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFsaXN0
ZW5lcnMpCiAgICAgICAgIGxpc3RlbmVycyA9IGFkb3B0UHRyKG5ldyBMaXN0ZW5lclNldCk7CiAg
ICAgbGlzdGVuZXJzLT5hZGQobGlzdGVuZXIpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBs
aXN0ZW5lciwgUGFnZSoKICAgICBpZiAoaXQgPT0gbV9wYWdlTGlzdGVuZXJzTWFwLmVuZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gaXQtPnZhbHVl
LmdldCgpOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+c2Vjb25kLmdldCgpOwog
ICAgIGxpc3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKICAgICBpZiAobGlzdGVuZXJzLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJlbW92ZShpdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcApp
bmRleCBjNjI0ODdlODA1ZmRjYzFiNzAxYzViYmY1ZDk2OTRjYmZiZDc0NGRjLi5kZWY3OWNmMmMx
NmJhNzZlNTFiZDhmMDFmZjA3MDA5ZmVkMjBjYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKQEAgLTUzLDggKzUzLDgg
QEAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRGcmFtZURhdGEoRnJhbWUqIGZy
YW1lKQogCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXA6Oml0ZXJhdG9yIHdpbmRvd1No
ZWxsc0VuZCA9IHdpbmRvd1NoZWxscy5lbmQoKTsKICAgICBmb3IgKFNjcmlwdENvbnRyb2xsZXI6
OlNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0g
d2luZG93U2hlbGxzRW5kOyArK2l0ZXIpIHsKLSAgICAgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9
IGl0ZXItPnZhbHVlLT53aW5kb3coKTsKLSAgICAgICAgbV93aW5kb3dzLmFkZChpdGVyLT5rZXku
Z2V0KCksIFN0cm9uZzxKU0RPTVdpbmRvdz4od2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdykp
OworICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gaXRlci0+c2Vjb25kLT53aW5kb3coKTsK
KyAgICAgICAgbV93aW5kb3dzLmFkZChpdGVyLT5maXJzdC5nZXQoKSwgU3Ryb25nPEpTRE9NV2lu
ZG93Pih3aW5kb3ctPmdsb2JhbERhdGEoKSwgd2luZG93KSk7CiAgICAgfQogCiAgICAgc2NyaXB0
Q29udHJvbGxlci0+YXR0YWNoRGVidWdnZXIoMCk7CkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKIAogICAgIFNjcmlwdENv
bnRyb2xsZXI6OlNoZWxsTWFwOjppdGVyYXRvciB3aW5kb3dTaGVsbHNFbmQgPSB3aW5kb3dTaGVs
bHMuZW5kKCk7CiAgICAgZm9yIChTY3JpcHRDb250cm9sbGVyOjpTaGVsbE1hcDo6aXRlcmF0b3Ig
aXRlciA9IHdpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IHdpbmRvd1NoZWxsc0VuZDsgKytp
dGVyKSB7Ci0gICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBpdGVyLT5rZXkuZ2V0KCk7
Ci0gICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+dmFsdWUuZ2V0
KCk7CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBpdGVyLT5maXJzdC5nZXQoKTsK
KyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT5zZWNvbmQuZ2V0
KCk7CiAKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0KHdv
cmxkKS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93LT5n
bG9iYWxEYXRhKCksIHdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGJlMTAxZjEwNTg1M2Y0MjdmNzA4NTc2MzM0MjE1ZDIx
MzAxM2NmMDIuLjQxYmJlYThiMmY4ZGI3NTZhODE1OGFiMzA2ZTMzODZmZDFlNmJjYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAgICAv
LyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dTaGVsbHMgd2lsbCBjcmVhdGUg
YSBsb3Qgb2YgZ2FyYmFnZS4KICAgICBpZiAoIW1fd2luZG93U2hlbGxzLmlzRW1wdHkoKSkgewog
ICAgICAgICB3aGlsZSAoIW1fd2luZG93U2hlbGxzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRl
c3Ryb3lXaW5kb3dTaGVsbChtX3dpbmRvd1NoZWxscy5iZWdpbigpLT5rZXkuZ2V0KCkpOworICAg
ICAgICAgICAgZGVzdHJveVdpbmRvd1NoZWxsKG1fd2luZG93U2hlbGxzLmJlZ2luKCktPmZpcnN0
LmdldCgpKTsKICAgICAgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CiAg
ICAgfQogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJX
aW5kb3dTaGVsbChET01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QCiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7
CiAKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVn
aW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIEpT
RE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+dmFsdWUuZ2V0KCk7CisgICAgICAg
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+c2Vjb25kLmdldCgpOwogCiAg
ICAgICAgIGlmICh3aW5kb3dTaGVsbC0+d2luZG93KCktPmltcGwoKSA9PSBuZXdET01XaW5kb3cp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIFNjcmlwdENv
bnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21DdXJyZW50T3JpZ2luKEZyYW1lICpmcmFtZSkKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIp
CiB7CiAgICAgZm9yIChTaGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmJl
Z2luKCk7IGl0ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgYXR0
YWNoRGVidWdnZXIoaXRlci0+dmFsdWUuZ2V0KCksIGRlYnVnZ2VyKTsKKyAgICAgICAgYXR0YWNo
RGVidWdnZXIoaXRlci0+c2Vjb25kLmdldCgpLCBkZWJ1Z2dlcik7CiB9CiAKIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dTaGVsbCogc2hlbGwsIEpTQzo6
RGVidWdnZXIqIGRlYnVnZ2VyKQpAQCAtMjk0LDggKzI5NCw4IEBAIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dTaGVsbCogc2hlbGwsIEpTQzo6RGVidWdn
ZXIqIGRlCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZURvY3VtZW50KCkKIHsKICAgICBm
b3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVnaW4oKTsgaXRl
ciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGl0ZXItPmtleS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgaXRlci0+dmFsdWUtPndp
bmRvdygpLT51cGRhdGVEb2N1bWVudCgpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhpdGVy
LT5maXJzdC0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgaXRlci0+c2Vjb25kLT53aW5kb3coKS0+
dXBkYXRlRG9jdW1lbnQoKTsKICAgICB9CiB9CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBQYXNzUmVm
UHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVSb290T2Jq
ZWN0KHZvaWQqIG5hdGl2ZQogewogICAgIFJvb3RPYmplY3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
b290T2JqZWN0cy5maW5kKG5hdGl2ZUhhbmRsZSk7CiAgICAgaWYgKGl0ICE9IG1fcm9vdE9iamVj
dHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+
c2Vjb25kOwogCiAgICAgUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiByb290T2JqZWN0ID0g
QmluZGluZ3M6OlJvb3RPYmplY3Q6OmNyZWF0ZShuYXRpdmVIYW5kbGUsIGdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKSk7CiAKQEAgLTM0OCw4ICszNDgsOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMoYm9vbCkKIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFp
cjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiYgcmVzdWx0KQogewogICAgIGZv
ciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVy
ICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBpdGVyLT52YWx1ZS0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGl0ZXItPnZhbHVlLT53aW5kb3coKS0+aW1wbCgpLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGl0ZXItPnNlY29uZC0+d2luZG93KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiA9IGl0ZXItPnNlY29uZC0+d2luZG93KCktPmltcGwoKS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8
U2NyaXB0U3RhdGUqLCBTZWN1cml0eU9yaWdpbio+KGV4ZWMsIG9yaWdpbikpOwogICAgIH0KIH0K
QEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFudXBTY3JpcHRP
YmplY3RzRm9yUGx1Z2luKHZvaWQqIG5hdGl2ZUhhbmRsZSkKICAgICBpZiAoaXQgPT0gbV9yb290
T2JqZWN0cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaXQtPnZhbHVlLT5pbnZhbGlk
YXRlKCk7CisgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZSgpOwogICAgIG1fcm9vdE9iamVjdHMu
cmVtb3ZlKGl0KTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKIAogICAgIFJvb3RPYmplY3RNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fcm9vdE9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChSb290T2JqZWN0TWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fcm9vdE9iamVjdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBpdC0+dmFsdWUtPmludmFsaWRhdGUoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+
aW52YWxpZGF0ZSgpOwogCiAgICAgbV9yb290T2JqZWN0cy5jbGVhcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjNkYTUzZTA1M2Rm
MGY2YWY5NjcxNmZjMGMwMmIyYjk1Y2MzNTRmYS4uZjc2ZmRlOGZjNzJmNjgwNWVmNDhjMDNhZmMx
ZDA2YTNhMTU0Y2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNzQsMTIgKzc0LDEyIEBAIHB1YmxpYzoKICAgICBKU0RPTVdpbmRvd1No
ZWxsKiB3aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIHsKICAgICAgICAg
U2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5kKHdvcmxkKTsKLSAg
ICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpKSA/IGl0ZXItPnZhbHVl
LmdldCgpIDogaW5pdFNjcmlwdCh3b3JsZCk7CisgICAgICAgIHJldHVybiAoaXRlciAhPSBtX3dp
bmRvd1NoZWxscy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQuZ2V0KCkgOiBpbml0U2NyaXB0KHdvcmxk
KTsKICAgICB9CiAgICAgSlNET01XaW5kb3dTaGVsbCogZXhpc3RpbmdXaW5kb3dTaGVsbChET01X
cmFwcGVyV29ybGQqIHdvcmxkKSBjb25zdAogICAgIHsKICAgICAgICAgU2hlbGxNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5kKHdvcmxkKTsKLSAgICAgICAgcmV0
dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpKSA/IGl0ZXItPnZhbHVlLmdldCgpIDog
MDsKKyAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpKSA/IGl0ZXIt
PnNlY29uZC5nZXQoKSA6IDA7CiAgICAgfQogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3Qo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYjQwMTM5MjRiZTgxNjcyY2NhMTRj
N2Y4NWI4MWJjZGIyNmE2MmM5Ni4uYmJjZDU0Mjk5NjU3MGZhMTM3OTlhNGU1YTgyOTUwMzBkZTUw
YTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtNzUsMTEgKzc1LDExIEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAg
U291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0Jy
ZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNl
dChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIExp
bmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQoc2Ny
aXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7Ci0gICAgaWYgKGJyZWFrc0l0ID09IGl0LT52
YWx1ZS5lbmQoKSkKLSAgICAgICAgYnJlYWtzSXQgPSBpdC0+dmFsdWUuc2V0KHNjcmlwdEJyZWFr
cG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9yOworICAg
IExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5k
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBp
dC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlw
dEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9y
OwogCi0gICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT52YWx1
ZTsKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29u
ZDsKICAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKICAgICAgICAgaWYg
KGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1
bW5OdW1iZXIpCkBAIC0xMTIsMTEgKzExMiwxMSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpy
ZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5m
aW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJh
dG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZU51bWJlciArIDEpOwotICAgIGlmIChi
cmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRl
cmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlm
IChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBC
cmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnZhbHVlOworICAgIEJy
ZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOwogICAgIHVu
c2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgewogICAgICAgICBpZiAoYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJlcikp
IHsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFr
cG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zCiAgICAgaWYg
KGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8IDApCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0g
aXQtPnZhbHVlLmZpbmQobGluZU51bWJlciArIDEpOwotICAgIGlmIChicmVha3NJdCA9PSBpdC0+
dmFsdWUuZW5kKCkpCisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29uc3RfaXRlcmF0b3IgYnJl
YWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJ
dCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29s
IGhpdCA9IGZhbHNlOwotICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3Ig
PSBicmVha3NJdC0+dmFsdWU7CisgICAgY29uc3QgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1Zl
Y3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CiAgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVh
a3NWZWN0b3Iuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGJy
ZWFrc0NvdW50OyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDU3MzQ5ZWY2NWJiOGY3MjY5N2FmZTQ1N2Q2
YmU0Y2Q1NDEyNmQzNzcuLmVhNzAyMjk1YjdlNjUzNmVkNDQ2MTk4MzMzZDA4NzJkZDEyNDA1M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNDI1LDggKzQyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEhhbmRs
ZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwogICAgICAgICBpZiAoZm91bmQgIT0gbV9vYmplY3RQb29s
LmVuZCgpKSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGZvdW5kLT52YWx1ZSkgPCBtX29iamVj
dFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoZm91bmQtPnZhbHVl
KTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihmb3VuZC0+c2Vjb25k
KSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICAgICAgd3JpdGVPYmplY3RJbmRleChm
b3VuZC0+c2Vjb25kKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAg
LTY4Myw3ICs2ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIE9iamVjdFBvb2w6Oml0
ZXJhdG9yIGluZGV4ID0gbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy5maW5kKG9iaik7CiAgICAg
ICAgICAgICAgICAgaWYgKGluZGV4ICE9IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuZW5kKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcpOwot
ICAgICAgICAgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICB3cml0ZShpbmRleC0+c2Vjb25kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIE1lc3NhZ2VQb3J0IG9i
amVjdCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdHJhbnNmZXJyZWQgbWVzc2FnZSBwb3J0cwpAQCAt
Njk5LDcgKzY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgT2JqZWN0UG9vbDo6aXRl
cmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsKICAgICAg
ICAgICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVycy5lbmQoKSkg
ewogICAgICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRyYW5zZmVyVGFnKTsKLSAg
ICAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgd3JpdGUoaW5kZXgtPnNlY29uZCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2JqZWN0SW50
ZXJuYWwob2JqKSkgLy8gaGFuZGxlIGR1cGxpY2F0ZXMKQEAgLTc5Niw3ICs3OTYsNyBAQCBwcml2
YXRlOgogICAgICAgICBTdHJpbmdDb25zdGFudFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBt
X2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwoKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKICAg
ICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgd3JpdGUoU3Ry
aW5nUG9vbFRhZyk7Ci0gICAgICAgICAgICB3cml0ZVN0cmluZ0luZGV4KGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpOworICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChhZGRSZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCBmZmZjMDZkNzFmNGVlMmFlNDM3ZTFjZmJlMThhNThjMThjODViZjY1Li4yZDc5NTdjZmI2MmEw
YzE3Y2U5YmFkNWMyMDg3ZGViZTQ3NTNjMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjk3Nyw3ICsyOTc3LDcgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0UmF3
VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0yOTkwLDcgKzI5OTAsNyBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpHZXRU
ZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDFiZjY4MjQyYWE1NzE2NjAwMTZhOGZm
YTllYWM4YjExYmFkOTY2MDAuLmJkYTQ3YTVhY2RlYjllYmY3YWVkYmQxZjNkMzNjZjlkMTU0ZjQ0
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUo
KQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1
ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0xMzIsNyArMTMyLDcgQEAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSgp
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAg
ICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggNWQyZDVjYWJjY2M4YWQ3Nzdj
OTNkZDM1NTcxNjg5Zjk3ZGU4NjNhOS4uYzJjOTk0MDQ1OWEzMWRlYTYyNDlmNzFlZWZhZmY2YzJj
MTA2MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0OCw3ICsx
NDgsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNv
bmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAg
LTE2MSw3ICsxNjEsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNv
bmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCmluZGV4IGU0ZDJmN2Q0YzRhYzdmZDAwZGU3ZGRkM2ZiZjM2NDJmMGJjNjg5
OWQuLjg5NzVjZjYzMjVlMjA2ZTM3MDg2MjQzMzljOGUzMmFkZjdmMTBkY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFJh
d1RlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOwpAQCAtOTUsNyArOTUsNyBAQCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6OkdldFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4
IDMyNjM4M2MzOTkyM2E1NjY3ZDRjZWM5OWU1MGQ1ZDVmYmViZDA3NmYuLmZlM2ViNGZmZjA1MDY4
ZjQwZDJjNzViNTExMTExMjU2NDEwMTVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUoKQogICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNy
ZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0xMzIsNyArMTMyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKCkK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgp
OwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAg
ICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZWRiZWYzYmJhNzQwYjlhMTY0MmZlM2ZlZDFi
Mzk1NWY3NjU5NjlhMi4uMTk0MGQ3ZGJkYmVhODQyMmQ3YzYzZTgxYzhhYTE0ZDM4ZTI4ZTQwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRSYXdUZW1w
bGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRl
bXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciBy
ZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA1MGE4N2Q2NjRiMmI4ODM2YWZkN2Y1
NTIyMGY4M2QwNDM2ZDM3MWQ2Li45Mzc1Y2UzMTA2Mzk0NDY0MGM1YjBmNmY3NzFiYTE4MDkzODY5
MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0aW9uOjpHZXRSYXdUZW1wbGF0
ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJl
bnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAgLTg2LDcgKzg2LDcgQEAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUo
KQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGMwMmE4ODU2NTk4OWJhNTdiM2EyMTQzNGFlOWMy
ZWRlY2VjZTg0OTYuLjAwOThkNWViMGI4NDhkNjgxNjYxYjAzNTlkOWE4YzMwMzU4Mjg3YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUoKQog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0zMjUsNyArMzI1LDcgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUoKQog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggZGQ4YzU5
MmFhOTBkNzY0ZTAxM2Q3ODk3NDFjYmFlNjFmOWJhZGYyMy4uYWMxMTY3OTk4ZDA4Yzc1ZDQ2Zjg3
NjAxOWM3ODllNDdlMmNiN2EzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0UmF3VGVtcGxhdAog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC05NSw3ICs5NSw3IEBAIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRU
ZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA2NzYzNWNm
ZjNkY2VjYmIzYWY1OTI5ZGUzZjIwNzZhN2FkOGYxYzE2Li43YTc0ZjU4Mjc5MmE4MTY4MWU0MjJl
Y2RlYWQ0NWIxNjRmY2M4MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CkBAIC0xMjIsNyArMTIyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKCkKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVN
YXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVy
biByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdU
ZW1wbGF0ZSgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1
cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNw
cAppbmRleCA0OTBmOTExN2FkYmY2MTc2NmE5OWIzYjYwOWI1ZDBhZGJlM2E1ZGFmLi5jZTQyZjky
ZWQ5ZjY5ZjQ0OTBkNjBjNjcyMWRkYTY5MDlkMmFjMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2Rl
OjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAgLTk0LDcgKzk0
LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6Okdl
dFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+
dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAyODUyYTFjNDlmMjIyZjZjMjkwNmY5Y2I0ODhhNGFi
OGUwYmI4NmE5Li4zN2Q3MzkzOTM0NGZjN2EwMDliNzE2ZTcyM2MyNzNjMTc3ZjQyYWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcApAQCAtMjI2Nyw3ICsyMjY3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFw
KCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgp
LmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBs
YXRlKCk7CkBAIC0yMjgwLDcgKzIyODAsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNv
bmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggOTg2M2Q3NDFhZGU2
ZjQzYWE1ZWIwMTY1NzBiNDNkNmIyZjcwMTVkNS4uYWU4ZDE4ZDQ1Y2ZkYzVhYzQ5YTNhZGRiYzQx
ZjRjZjUyYjlhZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlOjpHZXRSYQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0yNzgsNyArMjc4LDcgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6R2V0VGUKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwog
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggNTI3Mzc5NjM3NGU5ZTI4ZjA0NDg4MDQ2OWI3NzIyMDY5
M2YyMThjYi4uMzFhMDI4NmM0NTFmNzY3ZGNkM2ViNDQxYTdmZThjMTNmY2NjYjMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpkZWFsbG9jYXRlKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIEFTU0VSVChpLT52YWx1ZSA9PSB3b3JsZCk7CisgICAgQVNTRVJUKGktPnNl
Y29uZCA9PSB3b3JsZCk7CiAKICAgICBtYXAucmVtb3ZlKGkpOwogICAgIGlzb2xhdGVkV29ybGRD
b3VudC0tOwpAQCAtMTAxLDkgKzEwMSw5IEBAIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBE
T01XcmFwcGVyV29ybGQ6OmdldE9yQ3JlYXRlSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJCiAgICAg
ZWxzZSB7CiAgICAgICAgIFdvcmxkTWFwOjppdGVyYXRvciBpID0gbWFwLmZpbmQod29ybGRJZCk7
CiAgICAgICAgIGlmIChpICE9IG1hcC5lbmQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGktPnZh
bHVlLT53b3JsZElkKCkgPT0gd29ybGRJZCk7Ci0gICAgICAgICAgICBBU1NFUlQoaS0+dmFsdWUt
PmV4dGVuc2lvbkdyb3VwKCkgPT0gZXh0ZW5zaW9uR3JvdXApOwotICAgICAgICAgICAgcmV0dXJu
IGktPnZhbHVlOworICAgICAgICAgICAgQVNTRVJUKGktPnNlY29uZC0+d29ybGRJZCgpID09IHdv
cmxkSWQpOworICAgICAgICAgICAgQVNTRVJUKGktPnNlY29uZC0+ZXh0ZW5zaW9uR3JvdXAoKSA9
PSBleHRlbnNpb25Hcm91cCk7CisgICAgICAgICAgICByZXR1cm4gaS0+c2Vjb25kOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCmlu
ZGV4IGI1ZjNjNjZiMzNiN2M1ODIzZGYwNTRhZjU3ODJiNTA5OWUwN2Y2MDIuLmEzMmI0NGVhNTk2
OTA0MzZjOTQ1MTczNzM1ZDNlOTU5MDk0ZDYwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L05QVjhPYmplY3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGZyZWVWOE5Q
T2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICBpZiAoaW50IHY4T2JqZWN0SGFzaCA9IHY4
TnBPYmplY3QtPnY4T2JqZWN0LT5HZXRJZGVudGl0eUhhc2goKSkgewogICAgICAgICBWOE5QT2Jq
ZWN0TWFwOjppdGVyYXRvciBpdGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgpLT5maW5kKHY4T2Jq
ZWN0SGFzaCk7CiAgICAgICAgIGlmIChpdGVyICE9IHN0YXRpY1Y4TlBPYmplY3RNYXAoKS0+ZW5k
KCkpIHsKLSAgICAgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9iamVjdHMgPSBpdGVyLT52YWx1
ZTsKKyAgICAgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9iamVjdHMgPSBpdGVyLT5zZWNvbmQ7
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0cy5zaXpl
KCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0cy5hdChpbmRleCkgPT0g
djhOcE9iamVjdCkgewogICAgICAgICAgICAgICAgICAgICBvYmplY3RzLnJlbW92ZShpbmRleCk7
CkBAIC0xNjEsNyArMTYxLDcgQEAgTlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQ
IG5wcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIERPTVdpbmQKICAgICBBU1NFUlQo
djhPYmplY3RIYXNoKTsKICAgICBWOE5QT2JqZWN0TWFwOjppdGVyYXRvciBpdGVyID0gc3RhdGlj
VjhOUE9iamVjdE1hcCgpLT5maW5kKHY4T2JqZWN0SGFzaCk7CiAgICAgaWYgKGl0ZXIgIT0gc3Rh
dGljVjhOUE9iamVjdE1hcCgpLT5lbmQoKSkgewotICAgICAgICBWOE5QT2JqZWN0VmVjdG9yJiBv
YmplY3RzID0gaXRlci0+dmFsdWU7CisgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9iamVjdHMg
PSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBv
YmplY3RzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgVjhOUE9iamVjdCogdjhucE9i
amVjdCA9IG9iamVjdHMuYXQoaW5kZXgpOwogICAgICAgICAgICAgaWYgKHY4bnBPYmplY3QtPnJv
b3RPYmplY3QgPT0gcm9vdCkgewpAQCAtMTgxLDcgKzE4MSw3IEBAIE5QT2JqZWN0KiBucENyZWF0
ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBE
T01XaW5kCiAjZW5kaWYKICAgICB2OG5wT2JqZWN0LT5yb290T2JqZWN0ID0gcm9vdDsKIAotICAg
IGl0ZXItPnZhbHVlLmFwcGVuZCh2OG5wT2JqZWN0KTsKKyAgICBpdGVyLT5zZWNvbmQuYXBwZW5k
KHY4bnBPYmplY3QpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPih2
OG5wT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggMzg3ZDkzMWI5YWFlNTBkOTA3ZDIyODY4ZWFiNzBhYjQxN2U2MmJi
Yy4uNmExM2RlYWFjMzlmOGUwYWVhYmI4MTE1MDJiOTdhNmQ2ZjAwNDYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyOCw4ICsx
MjgsOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygpCiB7CiAg
ICAgUGx1Z2luT2JqZWN0TWFwOjppdGVyYXRvciBpdCA9IG1fcGx1Z2luT2JqZWN0cy5iZWdpbigp
OwogICAgIGZvciAoOyBpdCAhPSBtX3BsdWdpbk9iamVjdHMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KGl0LT52YWx1ZSk7Ci0gICAgICAgIF9OUE5fUmVsZWFz
ZU9iamVjdChpdC0+dmFsdWUpOworICAgICAgICBfTlBOX1VucmVnaXN0ZXJPYmplY3QoaXQtPnNl
Y29uZCk7CisgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChpdC0+c2Vjb25kKTsKICAgICB9CiAg
ICAgbV9wbHVnaW5PYmplY3RzLmNsZWFyKCk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OnJlc2V0SXNvbGF0ZWRXb3JsZHMoKQogewogICAgIGZvciAoSXNvbGF0
ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuYmVnaW4oKTsKICAg
ICAgICAgIGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAg
IGl0ZXItPnZhbHVlLT5kZXN0cm95KCk7CisgICAgICAgIGl0ZXItPnNlY29uZC0+ZGVzdHJveSgp
OwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRzLmNsZWFyKCk7CiAgICAgbV9pc29sYXRlZFdv
cmxkU2VjdXJpdHlPcmlnaW5zLmNsZWFyKCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBj
b25zdCBWZWN0b3I8U2MKICAgICAgICAgaWYgKHdvcmxkSUQgPiAwKSB7CiAgICAgICAgICAgICBJ
c29sYXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29sYXRlZFdvcmxkcy5maW5kKHdv
cmxkSUQpOwogICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKSkK
LSAgICAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBpc29sYXRlZENvbnRleHQgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBuZXcgVjhJc29sYXRlZENvbnRl
eHQobV9mcmFtZSwgRE9NV3JhcHBlcldvcmxkOjpnZXRPckNyZWF0ZUlzb2xhdGVkV29ybGQod29y
bGRJRCwgZXh0ZW5zaW9uR3JvdXApKTsKICAgICAgICAgICAgICAgICBpZiAoaXNvbGF0ZWRDb250
ZXh0LT5jb250ZXh0KCkuSXNFbXB0eSgpKSB7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBj
b25zdCBWZWN0b3I8U2MKIAogICAgICAgICAgICAgSXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lu
TWFwOjppdGVyYXRvciBzZWN1cml0eU9yaWdpbkl0ZXIgPSBtX2lzb2xhdGVkV29ybGRTZWN1cml0
eU9yaWdpbnMuZmluZCh3b3JsZElEKTsKICAgICAgICAgICAgIGlmIChzZWN1cml0eU9yaWdpbkl0
ZXIgIT0gbV9pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW5zLmVuZCgpKQotICAgICAgICAgICAg
ICAgIGlzb2xhdGVkQ29udGV4dC0+c2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW5JdGVy
LT52YWx1ZSk7CisgICAgICAgICAgICAgICAgaXNvbGF0ZWRDb250ZXh0LT5zZXRTZWN1cml0eU9y
aWdpbihzZWN1cml0eU9yaWdpbkl0ZXItPnNlY29uZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpc29sYXRlZENvbnRleHQgPSBuZXcgVjhJc29sYXRlZENvbnRleHQobV9mcmFtZSwg
RE9NV3JhcHBlcldvcmxkOjpnZXRPckNyZWF0ZUlzb2xhdGVkV29ybGQod29ybGRJRCwgZXh0ZW5z
aW9uR3JvdXApKTsKICAgICAgICAgICAgIGlmIChpc29sYXRlZENvbnRleHQtPmNvbnRleHQoKS5J
c0VtcHR5KCkpIHsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNl
dElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCwgUGFzc1JlZlB0cjxTZQog
ICAgIG1faXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucy5zZXQod29ybGRJRCwgc2VjdXJpdHlP
cmlnaW4pOwogICAgIElzb2xhdGVkV29ybGRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVk
V29ybGRzLmZpbmQod29ybGRJRCk7CiAgICAgaWYgKGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5l
bmQoKSkKLSAgICAgICAgaXRlci0+dmFsdWUtPnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKKyAgICAgICAgaXRlci0+c2Vjb25kLT5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9y
aWdpbik7CiB9CiAKIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQ
b3NpdGlvbigpIGNvbnN0CkBAIC01NDYsOCArNTQ2LDggQEAgdm9pZCBTY3JpcHRDb250cm9sbGVy
OjpjbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbihXaWRnZXQqIG5hdGl2ZUhhbmRsZSkKICAg
ICBQbHVnaW5PYmplY3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wbHVnaW5PYmplY3RzLmZpbmQobmF0
aXZlSGFuZGxlKTsKICAgICBpZiAoaXQgPT0gbV9wbHVnaW5PYmplY3RzLmVuZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KGl0LT52YWx1ZSk7Ci0gICAgX05Q
Tl9SZWxlYXNlT2JqZWN0KGl0LT52YWx1ZSk7CisgICAgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KGl0
LT5zZWNvbmQpOworICAgIF9OUE5fUmVsZWFzZU9iamVjdChpdC0+c2Vjb25kKTsKICAgICBtX3Bs
dWdpbk9iamVjdHMucmVtb3ZlKGl0KTsKIH0KIApAQCAtNjYzLDcgKzY2Myw3IEBAIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxT
Y3JpcHRTdGF0ZSosIFNlCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IGZvciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lzb2xhdGVkV29ybGRzLmJl
Z2luKCk7IGl0ICE9IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgVjhJ
c29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IGl0LT52YWx1ZTsKKyAgICAgICAgVjhJ
c29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlm
ICghaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IGlzb2xhdGVk
Q29udGV4dC0+Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjc2ZWQ2ZDIwODc0ZjM3OWI1Y2VlZGZk
NzI0MjdhYjliYjMxM2ZkMi4uYTliMzljZTExOTM2NTM1MGNhYzhjNzYyZThiYWIwMDNmNTQzZjk0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
dHlwZW5hbWUgSGFuZGxlVG9UOjppdGVyYXRvciByZXN1bHQgPSBtX21hcC5maW5kKCpoYW5kbGUp
OwogICAgICAgICBpZiAocmVzdWx0ICE9IG1fbWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICAqdmFs
dWVPdXQgPSByZXN1bHQtPnZhbHVlOworICAgICAgICAgICAgKnZhbHVlT3V0ID0gcmVzdWx0LT5z
ZWNvbmQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1h
cC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCAzOGI1MTQy
Nzc3MzE4YTRkNmZkNzA5NzNlZGUxOTBiYTM0NGI3OTJiLi5jYzc2ZmZhNTMxZWEzYTIwNWIwZjEx
ZDUxNTFiMjAxZTBlMjA3N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcmVt
b3ZlSWZQcmVzZW50KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPiB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxLZXlUeXBlKiwgVmFs
dWVUeXBlKj46Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwotICAgICAgICAgICAgaWYg
KGl0ID09IG1fbWFwLmVuZCgpIHx8IGl0LT52YWx1ZSAhPSAqdmFsdWUpCisgICAgICAgICAgICBp
ZiAoaXQgPT0gbV9tYXAuZW5kKCkgfHwgaXQtPnNlY29uZCAhPSAqdmFsdWUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX21hcC5yZW1vdmUoaXQpOwpAQCAt
MTMwLDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHZpc2l0b3It
PnN0YXJ0TWFwKCk7CiAgICAgICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUqLCBWYWx1
ZVR5cGUqPjo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOwogICAgICAgICAgICAgZm9yICg7
IGl0ICE9IG1fbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0
RE9NV3JhcHBlcihzdG9yZSwgaXQtPmtleSwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPihpdC0+
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLT52aXNpdERPTVdyYXBwZXIoc3RvcmUs
IGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPihpdC0+c2Vjb25kKSk7CiAgICAg
ICAgICAgICB2aXNpdG9yLT5lbmRNYXAoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggYzJhYjc0ZDcxY2I4ZDZjZWI2
MmU5NDY2NzUzMjZmYzRhMzgyNzhiNi4uMmE4ODJkYzc2ZTRlZGUzZjEzMjRjNDlmNDZmYmQ5MGRk
MzdiN2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVy
LmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyB2b2lkIGVudW1lcmF0ZUdsb2JhbEhhbmRs
ZXMoKQogewogICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwID0gY3VycmVudEds
b2JhbEhhbmRsZU1hcCgpOwogICAgIGZvciAoR2xvYmFsSGFuZGxlTWFwOjppdGVyYXRvciBpdCA9
IGdsb2JhbEhhbmRsZU1hcC5iZWdpbigpLCBlbmQgPSBnbG9iYWxIYW5kbGVNYXAuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBHbG9iYWxIYW5kbGVJbmZvKiBpbmZvID0gaXQtPnZh
bHVlOworICAgICAgICBHbG9iYWxIYW5kbGVJbmZvKiBpbmZvID0gaXQtPnNlY29uZDsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKGluZm8pOwotICAgICAgICB2ODo6VmFsdWUqIGhhbmRsZSA9IGl0LT5r
ZXk7CisgICAgICAgIHY4OjpWYWx1ZSogaGFuZGxlID0gaXQtPmZpcnN0OwogICAgICAgICBVTlVT
RURfUEFSQU0oaGFuZGxlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCmluZGV4IDYzNWZmMjM3MWZjOTQxODlmMDM0ZTMzZWZl
NzJlOTc2ZjlmZDFhMzIuLmU1NzAyOWJmZDcyNGI4OTY1NTY2NWVkMWI2NWRlMjE0NTQ2ODIwMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgVjhQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSgpCiAgICAg
ewogICAgICAgICBXcmFwcGVyQm9pbGVycGxhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV93cmFwcGVy
Qm9pbGVycGxhdGVzLmJlZ2luKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBtX3dyYXBwZXJCb2ls
ZXJwbGF0ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIHdyYXBwZXIuRGlz
cG9zZSgpOwogICAgICAgICB9CiAgICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRlcy5jbGVhcigp
OwpAQCAtNDksNyArNDksNyBAQCB2b2lkIFY4UGVyQ29udGV4dERhdGE6OmRpc3Bvc2UoKQogICAg
IHsKICAgICAgICAgQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jb25zdHJ1Y3Rvck1h
cC5iZWdpbigpOwogICAgICAgICBmb3IgKDsgaXQgIT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKTsg
KytpdCkgewotICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVy
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3
cmFwcGVyID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwogICAg
ICAgICB9CiAgICAgICAgIG1fY29uc3RydWN0b3JNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCmluZGV4IDJiMDM2N2NkMTVmMmE0ZmIxMTNkNGNjMGJm
NzY3ZWM4Y2YxYjBhNWUuLjhkODBjZjkzMzE4NmU4NTQ3YzE4NTE4M2Q3ZTc0ODRiY2UxZTg0YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIE5QSWRlbnRpZmllciBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29uc3QgTlBVVEY4
KiBuYW1lKQogICAgICAgICBTdHJpbmdJZGVudGlmaWVyTWFwKiBpZGVudE1hcCA9IGdldFN0cmlu
Z0lkZW50aWZpZXJNYXAoKTsKICAgICAgICAgU3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3Ig
aXRlciA9IGlkZW50TWFwLT5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyICE9IGlkZW50TWFw
LT5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+KGl0
ZXItPnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+
KGl0ZXItPnNlY29uZCk7CiAKICAgICAgICAgc2l6ZV90IG5hbWVMZW4gPSBrZXkubV9sZW5ndGg7
CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBOUElkZW50aWZpZXIgX05QTl9HZXRJbnRJZGVudGlmaWVy
KGludDMyX3QgaW50SWQpCiAgICAgSW50SWRlbnRpZmllck1hcCogaWRlbnRNYXAgPSBnZXRJbnRJ
ZGVudGlmaWVyTWFwKCk7CiAgICAgSW50SWRlbnRpZmllck1hcDo6aXRlcmF0b3IgaXRlciA9IGlk
ZW50TWFwLT5maW5kKGludElkKTsKICAgICBpZiAoaXRlciAhPSBpZGVudE1hcC0+ZW5kKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+KGl0ZXItPnZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcj4oaXRlci0+c2Vjb25kKTsKIAog
ICAgIC8vIFdlIG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllcnMsIHNvIHRoaXMgZGljdGlvbmFyeSB3
aWxsIGdyb3cuCiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSByZWludGVycHJl
dF9jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihQcml2YXRlSWRlbnRpZmll
cikpKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIF9OUE5fUmVnaXN0ZXJPYmplY3QoTlBPYmpl
Y3QqIG5wT2JqZWN0LCBOUE9iamVjdCogb3duZXIpCiAgICAgICAgIE5QT2JqZWN0TWFwOjppdGVy
YXRvciBvd25lckVudHJ5ID0gbGl2ZU9iamVjdE1hcCgpLmZpbmQob3duZXIpOwogICAgICAgICBO
UE9iamVjdCogcGFyZW50ID0gMDsKICAgICAgICAgaWYgKGxpdmVPYmplY3RNYXAoKS5lbmQoKSAh
PSBvd25lckVudHJ5KQotICAgICAgICAgICAgcGFyZW50ID0gb3duZXJFbnRyeS0+dmFsdWU7Cisg
ICAgICAgICAgICBwYXJlbnQgPSBvd25lckVudHJ5LT5zZWNvbmQ7CiAKICAgICAgICAgaWYgKHBh
cmVudCkKICAgICAgICAgICAgIG93bmVyID0gcGFyZW50OwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZv
aWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKIAogICAgIE5QT2Jq
ZWN0KiBvd25lciA9IDA7CiAgICAgaWYgKGxpdmVPYmplY3RNYXAoKS5maW5kKG5wT2JqZWN0KSAh
PSBsaXZlT2JqZWN0TWFwKCkuZW5kKCkpCi0gICAgICAgIG93bmVyID0gbGl2ZU9iamVjdE1hcCgp
LmZpbmQobnBPYmplY3QpLT52YWx1ZTsKKyAgICAgICAgb3duZXIgPSBsaXZlT2JqZWN0TWFwKCku
ZmluZChucE9iamVjdCktPnNlY29uZDsKIAogICAgIGlmICghb3duZXIpIHsKICAgICAgICAgLy8g
VW5yZWdpc3RlcmluZyBhIG93bmVyIG9iamVjdDsgYWxzbyB1bnJlZ2lzdGVyIGl0J3MgZGVzY2Vu
ZGFudHMuCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBfTlBOX1VucmVnaXN0ZXJPYmplY3QoTlBP
YmplY3QqIG5wT2JqZWN0KQogICAgIH0gZWxzZSB7CiAgICAgICAgIE5QUm9vdE9iamVjdE1hcDo6
aXRlcmF0b3Igb3duZXJFbnRyeSA9IHJvb3RPYmplY3RNYXAoKS5maW5kKG93bmVyKTsKICAgICAg
ICAgaWYgKG93bmVyRW50cnkgIT0gcm9vdE9iamVjdE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAg
ICBOUE9iamVjdFNldCogbGlzdCA9IG93bmVyRW50cnktPnZhbHVlOworICAgICAgICAgICAgTlBP
YmplY3RTZXQqIGxpc3QgPSBvd25lckVudHJ5LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NFUlQo
bGlzdC0+ZmluZChucE9iamVjdCkgIT0gbGlzdC0+ZW5kKCkpOwogICAgICAgICAgICAgbGlzdC0+
cmVtb3ZlKG5wT2JqZWN0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZp
ZXJSZXAuY3BwCmluZGV4IDFkZjU4YTllNDE1ODFjM2JlYzMxNTFmZjIxYmNlYWEyNDcyZGMxZjUu
LjJhY2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVlODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY5LDEzICs2OSwxMyBAQCBJZGVudGlmaWVy
UmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAgIAogICAgIEludElkZW50aWZp
ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBpbnRJZGVudGlmaWVyTWFwKCkuYWRkKGludElELCAw
KTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBJ
ZGVudGlmaWVyUmVwKGludElEKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJS
ZXAoaW50SUQpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnZhbHVlOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcCo+IFN0cmluZ0lkZW50
aWZpZXJNYXA7CkBAIC05NSwxMyArOTUsMTMgQEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmllclJl
cDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgVVN0cmluZyBzdHJpbmcgPSBzdHJpbmdUb1VT
dHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCBzdHJsZW4obmFt
ZSkpKTsKICAgICBTdHJpbmdJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3RyaW5n
SWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBJZGVudGlmaWVyUmVwKG5hbWUpOwor
ICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChuYW1lKTsKICAgICAgICAgCi0g
ICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAg
ICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIGJvb2wgSWRlbnRpZmllclJlcDo6aXNWYWxpZChJ
ZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKaW5kZXggNjJlYmQyMzc2ZWM5MWVjZGU2NTM5NTg2MjZhMDlhZWZkMzk3M2JlOC4uNjFlMzY3
OTU2MWE2M2U0ZTNjZjViZTRkMDg5NjcyMzEzN2Y2MzJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGl0
ZXIgPSBtX21hcC5hZGQocm9vdE9iamVjdCwgSlNUb05QT2JqZWN0TWFwKCkpLml0ZXJhdG9yOwog
ICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKGl0ZXItPnZhbHVlLmZpbmQoanNPYmplY3QpID09
IGl0ZXItPnZhbHVlLmVuZCgpKTsKLSAgICAgICAgaXRlci0+dmFsdWUuYWRkKGpzT2JqZWN0LCBu
cE9iamVjdCk7CisgICAgICAgIEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0g
aXRlci0+c2Vjb25kLmVuZCgpKTsKKyAgICAgICAgaXRlci0+c2Vjb25kLmFkZChqc09iamVjdCwg
bnBPYmplY3QpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlKFJvb3RPYmplY3QqIHJvb3RPYmpl
Y3QpCkBAIC04MCw5ICs4MCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEhhc2hNYXA8Um9v
dE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHJv
b3RPYmplY3QpOwogICAgICAgICBBU1NFUlQoaXRlciAhPSBtX21hcC5lbmQoKSk7Ci0gICAgICAg
IEFTU0VSVChpdGVyLT52YWx1ZS5maW5kKGpzT2JqZWN0KSAhPSBpdGVyLT52YWx1ZS5lbmQoKSk7
CisgICAgICAgIEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgIT0gaXRlci0+c2Vj
b25kLmVuZCgpKTsKIAotICAgICAgICBpdGVyLT52YWx1ZS5yZW1vdmUoanNPYmplY3QpOworICAg
ICAgICBpdGVyLT5zZWNvbmQucmVtb3ZlKGpzT2JqZWN0KTsKICAgICB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAppbmRleCBh
NjA4MDFlNTYyOTRjNzJmOGUyZjc0NjZlNDQyYjYxY2RkODRlZWZlLi5hZWI0MDIwYmQ4NGEyMzdi
OWVjMWMwYWI3NmE5ZjZmZmI2ZThiOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0phdmFDbGFzc0pTQy5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBKYXZhQ2xhc3M6On5K
YXZhQ2xhc3MoKQogCiAgICAgTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9t
ZXRob2RzLmVuZCgpOwogICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX21ldGhvZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IE1l
dGhvZExpc3QqIG1ldGhvZExpc3QgPSBpdC0+dmFsdWU7CisgICAgICAgIGNvbnN0IE1ldGhvZExp
c3QqIG1ldGhvZExpc3QgPSBpdC0+c2Vjb25kOwogICAgICAgICBkZWxldGVBbGxWYWx1ZXMoKm1l
dGhvZExpc3QpOwogICAgICAgICBkZWxldGUgbWV0aG9kTGlzdDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCAyZWI0YTEwZjViZjZhMDcyOWE3MDFi
MDU4NzdlZTBmNGZhY2UyY2I2Li5iOWEzNGFjMzBiN2ZjM2Q3NTQzNmMxYjM4OTMyMTY0MDE4Mjc4
ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKQEAgLTc4LDgg
Kzc4LDggQEAgdm9pZCBXZWFrTWFwOjpzZXQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKmtl
eSwgSlNPYmplY3RSZWYgb2JqZWN0KQogICAgICAgICBKU0NvbnRleHRHcm91cFJlZiBncm91cCA9
IEpTQ29udGV4dEdldEdyb3VwKGNvbnRleHQpOwogICAgICAgICBXZWFrTWFwU2V0OjpBZGRSZXN1
bHQgZW50cnkgPSB3ZWFrTWFwcy5hZGQoZ3JvdXAsIDApOwogICAgICAgICBpZiAoZW50cnkuaXNO
ZXdFbnRyeSkKLSAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UmVmKG5l
dyBXZWFrTWFwSW1wbChncm91cCkpOwotICAgICAgICBtX2ltcGwgPSBlbnRyeS5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gYWRvcHRSZWYobmV3
IFdlYWtNYXBJbXBsKGdyb3VwKSk7CisgICAgICAgIG1faW1wbCA9IGVudHJ5Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgfQogICAgIEpTV2Vha09iamVjdE1hcFNldChtX2ltcGwtPm1fY29udGV4dCwg
bV9pbXBsLT5tX21hcCwga2V5LCBvYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9yb290LmNwcAppbmRleCA3NGQ4MzE5MjFmMjE5YjhiNzMzMzY3NTkxNWU0MWJkYzE3ZGRmZGNk
Li45YjYyMjRhOGI1NjBmYzVlNjBlMTU4OWU1NzlkMTQyNTQ5NzI5MTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUm9vdE9i
amVjdDo6aW52YWxpZGF0ZSgpCiAgICAgewogICAgICAgICBIYXNoTWFwPFJ1bnRpbWVPYmplY3Qq
LCBKU0M6OldlYWs8UnVudGltZU9iamVjdD4gPjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2Jq
ZWN0cy5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPFJ1bnRpbWVPYmplY3QqLCBKU0M6Oldl
YWs8UnVudGltZU9iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBtX3J1bnRpbWVPYmplY3RzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgUnVudGltZU9iamVjdCogcnVudGlt
ZU9iamVjdCA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIFJ1bnRpbWVPYmplY3QqIHJ1
bnRpbWVPYmplY3QgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgaWYgKCFydW50aW1l
T2JqZWN0KSAvLyBTa2lwIHpvbWJpZXMuCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBydW50aW1lT2JqZWN0LT5pbnZhbGlkYXRlKCk7CkBAIC0xMjksNyArMTI5LDcgQEAg
dm9pZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKIAogICAgIFByb3RlY3RDb3VudFNldDo6aXRl
cmF0b3IgZW5kID0gbV9wcm90ZWN0Q291bnRTZXQuZW5kKCk7CiAgICAgZm9yIChQcm90ZWN0Q291
bnRTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wcm90ZWN0Q291bnRTZXQuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICBKU0M6OmdjVW5wcm90ZWN0KGl0LT5rZXkpOworICAgICAgICBKU0M6
OmdjVW5wcm90ZWN0KGl0LT5maXJzdCk7CiAgICAgbV9wcm90ZWN0Q291bnRTZXQuY2xlYXIoKTsK
IAogICAgIHJvb3RPYmplY3RTZXQoKS0+cmVtb3ZlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YW52YXNWYWx1ZS5jcHAKaW5kZXggYzkyZDEzMzZkODYwNjIwNWZjMDM3ZDBmYzU5ZmQzYTA3MzU0
MjE1NS4uNjM3NzdiYjRkZGRkYTA5NzYxNmY4ZmEwYWJjMWJhNWM3N2ZiOTQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAgdm9pZCBDU1ND
YW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCosIGNvbnN0IEZsb2F0
UmVjdCYgY2hhbmdlZFIKICAgICBJbnRSZWN0IGltYWdlQ2hhbmdlUmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3QoY2hhbmdlZFJlY3QpOwogICAgIFJlbmRlck9iamVjdFNpemVDb3VudE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gY2xpZW50cygpLmVuZCgpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0U2l6
ZUNvdW50TWFwOjpjb25zdF9pdGVyYXRvciBjdXJyID0gY2xpZW50cygpLmJlZ2luKCk7IGN1cnIg
IT0gZW5kOyArK2N1cnIpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oY3Vyci0+
a2V5KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcyksICZp
bWFnZUNoYW5nZVJlY3QpOworICAgICAgICBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KGN1cnIt
PmZpcnN0KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcyks
ICZpbWFnZUNoYW5nZVJlY3QpOwogfQogCiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNSZXNp
emVkKEhUTUxDYW52YXNFbGVtZW50KikKIHsKICAgICBSZW5kZXJPYmplY3RTaXplQ291bnRNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsKICAgICBmb3IgKFJlbmRlck9i
amVjdFNpemVDb3VudE1hcDo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigp
OyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAgICAgICBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+
KGN1cnItPmtleSktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRo
aXMpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihjdXJyLT5maXJzdCktPmlt
YWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKIH0KIAogdm9p
ZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNFbGVtZW50KiBlbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCAzZDNmY2U5ODk1MmM4NWJlZWJmNWY2NTQ5ZjBiZjgxMmUxMjdhOTc1Li4w
NzA4YzIzYmFiOGQ1MGE4YmU5MWRhMTMzZDg0NzMzODhjODI3ZWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI3Myw4
ICsxMjczLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJvcGUKIAogICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAg
Zm9yIChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4o
KTsgaXQgIT0gbWFwLT5lbmQoKTsgKytpdCkgewotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUoaXQtPmtleS5nZXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKLSAgICAgICAgc2hvcnQgbnVtYmVyID0gcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyBpdC0+dmFsdWUubV9pbmNyZW1lbnRWYWx1ZSA6IGl0LT52
YWx1ZS5tX3Jlc2V0VmFsdWU7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShpdC0+Zmlyc3QuZ2V0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KSk7CisgICAgICAgIHNob3J0IG51bWJlciA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDb3Vu
dGVySW5jcmVtZW50ID8gaXQtPnNlY29uZC5tX2luY3JlbWVudFZhbHVlIDogaXQtPnNlY29uZC5t
X3Jlc2V0VmFsdWU7CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZSgoZG91YmxlKW51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5jcHAKaW5kZXggODI3ODgzYjEzNTlmOWM1ODQwNmViNGU4YWVkYWYyMzU1OTRm
MjNhNy4uNWVkN2RhMThkM2NiOWU5YWQ4MGMyYmU3ODE4MjYyZWMzODJiNGUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9p
ZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKIHsK
ICAgICBSZW5kZXJPYmplY3RTaXplQ291bnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVu
dHMoKS5lbmQoKTsKICAgICBmb3IgKFJlbmRlck9iamVjdFNpemVDb3VudE1hcDo6Y29uc3RfaXRl
cmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKSB7Ci0g
ICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihj
dXJyLT5rZXkpOworICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudCA9IGNvbnN0X2Nhc3Q8UmVu
ZGVyT2JqZWN0Kj4oY3Vyci0+Zmlyc3QpOwogICAgICAgICBjbGllbnQtPmltYWdlQ2hhbmdlZChz
dGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjZTQ1MzY3YWMzMzIzNzJhMGZiOWVj
OGM1YTUyZmI5ZjA4ODllZGY2Li5kZDkwNGQzN2ZiOTU0ZTQ0ZGJhNjUzODc2NzM1ODMxMTk4ZmFk
M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgIHVuc2lnbmVkIGhhc2hLZXkg
PSAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCA2IHwgZm9udERl
c2NyaXB0aW9uLndpZHRoVmFyaWFudCgpIDw8IDQKICAgICAgICAgICAgICAgICAgICAgICAgfCAo
Zm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpID09IFRleHRPcmllbnRhdGlvblVwcmln
aHQgPyA4IDogMCkgfCAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwg
PyA0IDogMCkgfCAoc3ludGhldGljQm9sZCA/IDIgOiAwKSB8IChzeW50aGV0aWNJdGFsaWMgPyAx
IDogMCk7CiAKLSAgICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERhdGEgPSBtX2ZvbnREYXRhVGFi
bGUuYWRkKGhhc2hLZXksIDApLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBTaW1wbGVGb250RGF0YSom
IGNhY2hlZERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgaWYgKGNhY2hlZERhdGEpCiAgICAgICAgIHJldHVybiBjYWNoZWREYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDE1MTdiNzZjYWQ1ZWRj
NWVmMGJmYTQ1MTllOWRiOWYxZTUyY2MyZjYuLmNjNWZmYTA2Y2QwZTUwMTQ2NGMwNzEwM2FiZmRk
YTFhZjVhM2VhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0y
ODUsNyArMjg1LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25z
dCBTdHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAgICAgICBpZiAoZmFtaWx5TmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBPd25QdHI8VmVj
dG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBtX2ZvbnRGYWNl
cy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBPd25Q
dHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBtX2Zv
bnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICAg
ICAgaWYgKCFmYW1pbHlGb250RmFjZXMpIHsKICAgICAgICAgICAgIGZhbWlseUZvbnRGYWNlcyA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+KTsKIApAQCAtNDg3LDEz
ICs0ODcsMTMgQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICAgICAgcmV0dXJuIGZvbnRE
YXRhRm9yR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5h
bWUpOwogICAgIH0KIAotICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2Vn
bWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMuYWRk
KGZhbWlseSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIE93blB0cjxIYXNoTWFwPHVu
c2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZh
Y2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICBpZiAoIXNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUpCiAgICAgICAgIHNlZ21lbnRlZEZvbnRG
YWNlQ2FjaGUgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21l
bnRlZEZvbnRGYWNlPiA+KTsKIAogICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250
RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogCi0gICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRG
YWNlPiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFjZSA9
IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVudGVkRm9udEZh
Y2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuY3BwCmluZGV4IGFkNmNiYTkyMmFjYWNiNGEyMWExMTc0ZDk1OGQ1NmVlMzQwYmZm
ZGMuLjYzMDQwZjNiZTZlOThkZjJjOWQ5NTJjNWFkNDY0MTU2MTk0NTQ0YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjphZGRDbGllbnQoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2kKICAgICBpZiAoaXQgPT0gbV9jbGllbnRzLmVuZCgp
KQogICAgICAgICBtX2NsaWVudHMuYWRkKHJlbmRlcmVyLCBTaXplQW5kQ291bnQoc2l6ZSwgMSkp
OwogICAgIGVsc2UgewotICAgICAgICBTaXplQW5kQ291bnQmIHNpemVDb3VudCA9IGl0LT52YWx1
ZTsKKyAgICAgICAgU2l6ZUFuZENvdW50JiBzaXplQ291bnQgPSBpdC0+c2Vjb25kOwogICAgICAg
ICArK3NpemVDb3VudC5jb3VudDsKICAgICB9CiB9CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CiAgICAgQVNTRVJUKGl0ICE9IG1fY2xpZW50cy5lbmQoKSk7CiAKICAgICBJbnRTaXplIHJlbW92
ZWRJbWFnZVNpemU7Ci0gICAgU2l6ZUFuZENvdW50JiBzaXplQ291bnQgPSBpdC0+dmFsdWU7Cisg
ICAgU2l6ZUFuZENvdW50JiBzaXplQ291bnQgPSBpdC0+c2Vjb25kOwogICAgIEludFNpemUgc2l6
ZSA9IHNpemVDb3VudC5zaXplOwogICAgIGlmICghc2l6ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
bV9zaXplcy5yZW1vdmUoc2l6ZSk7CkBAIC04Nyw3ICs4Nyw3IEBAIEltYWdlKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpnZXRJbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRT
aXplJiBzCiB7CiAgICAgUmVuZGVyT2JqZWN0U2l6ZUNvdW50TWFwOjppdGVyYXRvciBpdCA9IG1f
Y2xpZW50cy5maW5kKHJlbmRlcmVyKTsKICAgICBpZiAoaXQgIT0gbV9jbGllbnRzLmVuZCgpKSB7
Ci0gICAgICAgIFNpemVBbmRDb3VudCYgc2l6ZUNvdW50ID0gaXQtPnZhbHVlOworICAgICAgICBT
aXplQW5kQ291bnQmIHNpemVDb3VudCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIEludFNpemUgb2xk
U2l6ZSA9IHNpemVDb3VudC5zaXplOwogICAgICAgICBpZiAob2xkU2l6ZSAhPSBzaXplKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gcHJvdGVjdCh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IDFiNzUz
NGMxM2Y5YmMzOWNkMGIxMTI0YjBjNjc2ZmY4MzRlZTViYjUuLjk4MzQyNTQ2OTI0Zjg2NDJiZWY3
MDIwYmIwZWJjODY0NDE3MjVjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRl
ZEZvbnRGYWNlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnREYXRhKiBDU1NTZWdtZW50ZWRG
b250RmFjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRp
CiAgICAgRm9udFRyYWl0c01hc2sgZGVzaXJlZFRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24u
dHJhaXRzTWFzaygpOwogICAgIHVuc2lnbmVkIGhhc2hLZXkgPSAoKGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgKEZvbnRUcmFpdHNNYXNrV2lkdGggKyAxKSkgfCAo
KGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsID8gMSA6IDApIDw8IEZv
bnRUcmFpdHNNYXNrV2lkdGgpIHwgZGVzaXJlZFRyYWl0c01hc2s7CiAKLSAgICBTZWdtZW50ZWRG
b250RGF0YSomIGZvbnREYXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgU2VnbWVudGVkRm9udERhdGEqJiBmb250RGF0YSA9IG1fZm9udERh
dGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoZm9udERh
dGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKaW5kZXggOGRkYTU4ZDU3YWE3NTQ3YjIyNWYwNTUwYWRmNzAxMjg3ZTEyY2EwZS4uZWFiZWU0
OTNhNDFhYjdlNDQyN2NmMjhmZDcwMzQ4MWIwYWQwODc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgQ1NT
U2VsZWN0b3I6OnBhcnNlUHNldWRvVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIHJldHVybiBQc2V1ZG9Vbmtub3duOwogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZSA9IG5hbWVUb1BzZXVk
b1R5cGVNYXAoKTsKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6
UHNldWRvVHlwZT46Oml0ZXJhdG9yIHNsb3QgPSBuYW1lVG9Qc2V1ZG9UeXBlLT5maW5kKG5hbWUu
aW1wbCgpKTsKLSAgICByZXR1cm4gc2xvdCA9PSBuYW1lVG9Qc2V1ZG9UeXBlLT5lbmQoKSA/IFBz
ZXVkb1Vua25vd24gOiBzbG90LT52YWx1ZTsKKyAgICByZXR1cm4gc2xvdCA9PSBuYW1lVG9Qc2V1
ZG9UeXBlLT5lbmQoKSA/IFBzZXVkb1Vua25vd24gOiBzbG90LT5zZWNvbmQ7CiB9CiAKIGJvb2wg
Q1NTU2VsZWN0b3I6OmlzVW5rbm93blBzZXVkb1R5cGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBjMTY4OTkxOWQxNmVlMTZmMGVl
MDczMTkxOTk2ZTk3YzVjOGZjOTBjLi5jZTc1N2I5MzNiM2Y0YTMwMmU4NzE2NTY4ZDAzZTAzZGJm
MWIwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApAQCAtNzgsOCArNzgsOCBA
QCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9y
VmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBk
dW1teVZhbHVlOwogICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gbV9jb2xv
clZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKICAgICBpZiAoZW50cnkuaXNO
ZXdFbnRyeSkKLSAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKLSAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29u
ZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVh
dGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkK
QEAgLTExMyw3ICsxMTMsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1
ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aQogCiBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShj
b25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChmYW1pbHlOYW1lLCAwKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2Zv
bnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChmYW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwog
ICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShmYW1pbHlOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgcmV0dXJu
IHZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NW
YWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzCiAgICAg
aWYgKG1fZm9udEZhY2VWYWx1ZUNhY2hlLnNpemUoKSA+IG1heGltdW1Gb250RmFjZUNhY2hlU2l6
ZSkKICAgICAgICAgbV9mb250RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsKIAotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDAp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiYgdmFsdWUgPSBtX2Zv
bnRGYWNlVmFsdWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUo
c3RyaW5nKTsKICAgICByZXR1cm4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDgxMDFmMjg5NzA3ZDg3
YjQwNTFlODc1YzhiNDkzNGI4ZWU0MDVjNGUuLjVmYzJkMzgwMzU1YTkzOGVhMGVlZDdkM2U0NDAx
ODZlNGI5MTdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgQ1NTVmFsdWUqIFBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xvbmVBbmRDYWNoZUZvckNTU09NKENTU1Zh
bHVlKiBpbnRlcm4KICAgICBpZiAoIW1fY3Nzb21DU1NWYWx1ZUNsb25lcykKICAgICAgICAgbV9j
c3NvbUNTU1ZhbHVlQ2xvbmVzID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQ
dHI8Q1NTVmFsdWU+ID4pOwogICAgIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4mIGNsb25lZFZhbHVl
ID0gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzLT5hZGQoaW50ZXJuYWxWYWx1ZSwgUmVmUHRyPENTU1Zh
bHVlPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENTU1ZhbHVlPiYgY2xvbmVkVmFs
dWUgPSBtX2Nzc29tQ1NTVmFsdWVDbG9uZXMtPmFkZChpbnRlcm5hbFZhbHVlLCBSZWZQdHI8Q1NT
VmFsdWU+KCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjbG9uZWRWYWx1ZSkKICAgICAg
ICAgY2xvbmVkVmFsdWUgPSBpbnRlcm5hbFZhbHVlLT5jbG9uZUZvckNTU09NKCk7CiAgICAgcmV0
dXJuIGNsb25lZFZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAppbmRl
eCBmZTFkYmY0YmFmZDU1NjIwNTNkNGIzYTg4MzE5OGMxZDUyYTUxNzZjLi40ODZhNGRiYjgxYzFj
NWRjZjk5YTNkYWIwZDY5MmM0MDg2MDFjY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
LmNwcApAQCAtMTAxNCwyMSArMTAxNCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ291
bnRlckRpcmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgICAgIEl0ZXJhdG9yIGVu
ZCA9IHBhcmVudE1hcC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1h
cC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENvdW50ZXJEaXJlY3Rp
dmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpdC0+a2V5LCBDb3VudGVyRGlyZWN0aXZlcygpKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZl
cyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgewotICAgICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IGl0LT52YWx1ZS5tX3Jlc2V0OwotICAgICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZhbHVlID0gaXQtPnZhbHVlLm1fcmVzZXRWYWx1
ZTsKKyAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVz
ZXQ7CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25k
Lm1fcmVzZXRWYWx1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
SW5oZXJpdGluZyBhIGNvdW50ZXItaW5jcmVtZW50IG1lYW5zIHRha2luZyB0aGUgcGFyZW50J3Mg
Y3VycmVudCB2YWx1ZSBmb3IgdGhlIGNvdW50ZXIKICAgICAgICAgICAgICAgICAvLyBhbmQgYWRk
aW5nIGl0IHRvIGl0c2VsZi4KLSAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50
ID0gaXQtPnZhbHVlLm1faW5jcmVtZW50OworICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9p
bmNyZW1lbnQgPSBpdC0+c2Vjb25kLm1faW5jcmVtZW50OwogICAgICAgICAgICAgICAgIGRpcmVj
dGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2
ZXMubV9pbmNyZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgaW5jcmVtZW50VmFs
dWUgPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGRp
cmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1wVG9JbnRlZ2VyKGluY3JlbWVudFZhbHVl
ICsgaXQtPnZhbHVlLm1faW5jcmVtZW50VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBkaXJl
Y3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBjbGFtcFRvSW50ZWdlcihpbmNyZW1lbnRWYWx1ZSAr
IGl0LT5zZWNvbmQubV9pbmNyZW1lbnRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGl0LT52YWx1ZS5t
X2luY3JlbWVudFZhbHVlOworICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVt
ZW50VmFsdWUgPSBpdC0+c2Vjb25kLm1faW5jcmVtZW50VmFsdWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDQ2LDkgKzEwNDYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVyYXRv
ciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBpZiAoY291
bnRlckJlaGF2aW9yID09IFJlc2V0KQotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5tX3Jlc2V0
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5tX3Jlc2V0ID0gZmFsc2U7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLm1faW5jcmVtZW50ID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5tX2luY3JlbWVudCA9IGZhbHNlOwog
CiAgICAgICAgIGludCBsZW5ndGggPSBsaXN0ID8gbGlzdC0+bGVuZ3RoKCkgOiAwOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC0xMDYyLDcgKzEwNjIsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUo
KTsKICAgICAgICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4ocGFpci0+c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRlckRp
cmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVy
RGlyZWN0aXZlcygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0
aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJl
Y3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2
aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDk2NTEyNzlhZWYzMGZlZTRlMzFlOWUx
MDFkODFlNDQwMTY5NzIyNWEuLjE1ZGUzYTc5OGMwNTE0NTY2NDk1Njg2MzQ1MjJjZTJiMTdlMDRj
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQ5OCw3ICs0OTgsNyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcygpCiAgICAgbV9mZWF0dXJlcy5h
ZGQobV9hdXRob3JTdHlsZS0+ZmVhdHVyZXMoKSk7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
ICAgICBmb3IgKFNjb3BlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY29wZWRBdXRob3JT
dHlsZXMuYmVnaW4oKTsgaXQgIT0gbV9zY29wZWRBdXRob3JTdHlsZXMuZW5kKCk7ICsraXQpCi0g
ICAgICAgIG1fZmVhdHVyZXMuYWRkKGl0LT52YWx1ZS0+ZmVhdHVyZXMoKSk7CisgICAgICAgIG1f
ZmVhdHVyZXMuYWRkKGl0LT5zZWNvbmQtPmZlYXR1cmVzKCkpOwogI2VuZGlmCiAgICAgaWYgKG1f
dXNlclN0eWxlKQogICAgICAgICBtX2ZlYXR1cmVzLmFkZChtX3VzZXJTdHlsZS0+ZmVhdHVyZXMo
KSk7CkBAIC01MzUsNyArNTM1LDcgQEAgaW5saW5lIFJ1bGVTZXQqIFN0eWxlUmVzb2x2ZXI6OnJ1
bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3QKICAgICBpZiAo
IXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2NvcGVkQXV0aG9yU3R5
bGVzLmZpbmQoc2NvcGUpOwotICAgIHJldHVybiBpdCAhPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5l
bmQoKSA/IGl0LT52YWx1ZS5nZXQoKSA6IDA7IAorICAgIHJldHVybiBpdCAhPSBtX3Njb3BlZEF1
dGhvclN0eWxlcy5lbmQoKSA/IGl0LT5zZWNvbmQuZ2V0KCkgOiAwOyAKIH0KICNlbmRpZgogCkBA
IC01NTgsOCArNTU4LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZXNo
ZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlAKICAgICAgICAgaWYgKHNj
b3BlKSB7CiAgICAgICAgICAgICBTY29wZWRSdWxlU2V0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0
ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVtLCB0aGlz
LCBzY29wZSk7CisgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBS
dWxlU2V0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
LT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC02ODksMTAgKzY4OSwxMCBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnN3ZWVwTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpCiAgICAg
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZTo6aXRlcmF0b3IgaXQgPSBtX21hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUuYmVnaW4oKTsKICAgICBNYXRjaGVkUHJvcGVydGllc0NhY2hlOjppdGVyYXRvciBlbmQg
PSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+JiBtYXRjaGVkUHJvcGVy
dGllcyA9IGl0LT52YWx1ZS5tYXRjaGVkUHJvcGVydGllczsKKyAgICAgICAgVmVjdG9yPE1hdGNo
ZWRQcm9wZXJ0aWVzPiYgbWF0Y2hlZFByb3BlcnRpZXMgPSBpdC0+c2Vjb25kLm1hdGNoZWRQcm9w
ZXJ0aWVzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoZWRQcm9wZXJ0aWVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hlZFByb3BlcnRpZXNbaV0ucHJv
cGVydGllcy0+aGFzT25lUmVmKCkpIHsKLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQo
aXQtPmtleSk7CisgICAgICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGl0LT5maXJzdCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE4NzEs
NyArMTg3MSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRp
b24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAgICAgaWYgKGl0ID09IG1fa2V5
ZnJhbWVzUnVsZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgU3R5bGVS
dWxlS2V5ZnJhbWVzKiBrZXlmcmFtZXNSdWxlID0gaXQtPnZhbHVlLmdldCgpOworICAgIGNvbnN0
IFN0eWxlUnVsZUtleWZyYW1lcyoga2V5ZnJhbWVzUnVsZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAK
ICAgICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHlsZSBmb3IgZWFjaCBrZXlmcmFt
ZQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPiYga2V5ZnJhbWVzID0g
a2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCk7CkBAIC0yNTY2LDcgKzI1NjYsNyBAQCBzdGF0aWMg
dm9pZCByZXBvcnRBdG9tUnVsZU1hcChNZW1vcnlDbGFzc0luZm8qIGluZm8sIGNvbnN0IFJ1bGVT
ZXQ6OkF0b21SdWxlTWFwJgogewogICAgIGluZm8tPmFkZEhhc2hNYXAoYXRvbWljUnVsZU1hcCk7
CiAgICAgZm9yIChSdWxlU2V0OjpBdG9tUnVsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhdG9t
aWNSdWxlTWFwLmJlZ2luKCk7IGl0ICE9IGF0b21pY1J1bGVNYXAuZW5kKCk7ICsraXQpCi0gICAg
ICAgIGluZm8tPmFkZEluc3RydW1lbnRlZFZlY3RvcigqaXQtPnZhbHVlKTsKKyAgICAgICAgaW5m
by0+YWRkSW5zdHJ1bWVudGVkVmVjdG9yKCppdC0+c2Vjb25kKTsKIH0KIAogdm9pZCBSdWxlU2V0
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdApAQCAtMjYzNyw3ICsyNjM3LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRv
bWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKIHsKICAg
ICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJuOwotICAgIE93blB0cjxWZWN0b3I8UnVsZURhdGE+
ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBP
d25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJ1bGVzID0gYWRvcHRQ
dHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEpOwpA
QCAtMjc5OCw3ICsyNzk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNU
b0ZpdChSdWxlU2V0OjpBdG9tUnVsZU1hcCYgbWFwKQogewogICAgIFJ1bGVTZXQ6OkF0b21SdWxl
TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgZm9yIChSdWxlU2V0OjpBdG9tUnVs
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICBpdC0+dmFsdWUtPnNocmlua1RvRml0KCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnNocmlua1Rv
Rml0KCk7CiB9CiAKIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQpAQCAtMjk0NCw3ICsyOTQ0
LDcgQEAgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0qIFN0
eWxlUmVzb2x2ZXI6OmZpbmRGcm9tTWF0Y2hlZFAKICAgICBNYXRjaGVkUHJvcGVydGllc0NhY2hl
OjppdGVyYXRvciBpdCA9IG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5maW5kKGhhc2gpOwogICAg
IGlmIChpdCA9PSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuZW5kKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtJiBjYWNoZUl0ZW0gPSBpdC0+dmFs
dWU7CisgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0mIGNhY2hlSXRlbSA9IGl0LT5zZWNv
bmQ7CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNp
emUoKTsKICAgICBpZiAoc2l6ZSAhPSBjYWNoZUl0ZW0ubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA4MjI4ODIz
NDBhOTJlNGQxODM4NzM2YTdmZGU2OTgxMTlhMDMxNjc1Li4zZWFhMGRhMzY5MTIwY2ZmMTBiYjlj
YmNlNTNiNWE3NGNhZDJhZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpwYXJz
ZXJBZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0CiAgICAg
UHJlZml4TmFtZXNwYWNlVVJJTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9uYW1lc3BhY2VzLmFk
ZChwcmVmaXgsIHVyaSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm47Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHVyaTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCA9IHVyaTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTdHlsZVNoZWV0Q29u
dGVudHM6OmRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkKQEAg
LTI0Nyw3ICsyNDcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFN0eWxlU2hlZXRDb250ZW50czo6
ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcAogICAgIFByZWZpeE5hbWVz
cGFjZVVSSU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX25hbWVzcGFjZXMuZmluZChwcmVmaXgp
OwogICAgIGlmIChpdCA9PSBtX25hbWVzcGFjZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxs
QXRvbTsKLSAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJldHVybiBpdC0+c2Vjb25kOwogfQog
CiB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cmVxdWVzdEltcG9ydGVkU3R5bGVTaGVldHMoQ1NT
U3R5bGVTaGVldCogcm9vdFNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
ZWNrZWRSYWRpb0J1dHRvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1
dHRvbnMuY3BwCmluZGV4IDlmYTUwOWJiOTUxZDM4MDkxNDAwMDAxMWVlNWNlNjUxNGE5OGQ0NmIu
LmU2NzIzMjlhZjhkZTM3OGJlZmRmYzE0ZjhhY2JkMGYyZWMwYzc0MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KQogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKICAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9
IGFkb3B0UHRyKG5ldyBOYW1lVG9Hcm91cE1hcCk7CiAKLSAgICBPd25QdHI8UmFkaW9CdXR0b25H
cm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBs
KCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQo
ZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAgICAgIGdyb3VwID0gUmFkaW9C
dXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKQEAgLTI0Niw4
ICsyNDYsOCBAQCB2b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OnJlbW92ZUJ1dHRvbihIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQogICAgIE5hbWVUb0dyb3VwTWFwOjppdGVyYXRvciBpdCA9IG1f
bmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSk7CiAgICAgaWYgKGl0
ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaXQtPnZh
bHVlLT5yZW1vdmUoZWxlbWVudCk7Ci0gICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7Cisg
ICAgaXQtPnNlY29uZC0+cmVtb3ZlKGVsZW1lbnQpOworICAgIGlmIChpdC0+c2Vjb25kLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG1heSBza2lwIGRlYWxsb2NhdGluZyB0aGUg
ZW1wdHkgUmFkaW9CdXR0b25Hcm91cCBmb3IKICAgICAgICAgLy8gcGVyZm9ybWFuY2UgaW1wcm92
ZW1lbnQuIElmIHdlIGRvIHNvLCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUga2V5IHR5cGUKICAgICAg
ICAgLy8gb2YgbV9uYW1lVG9Hcm91cE1hcCBmcm9tIEF0b21pY1N0cmluZ0ltcGwqIHRvIFJlZlB0
cjxBdG9taWNTdHJpbmdJbXBsPi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcAppbmRleCBhZmQ4ZGQ5ZjFiMDA5ODVjN2EyN2JiYmJkYTNlYmY4MDc3NmQ0
YzdjLi5mNGEyZGEwNGFiNjE1ODEzZjg2NGFlMTM1NmY0ZWFhNGRiMGJmZTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0xOTIsMjcgKzE5
MiwyNyBAQCB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9u
Um91dGVyOjpjaGlsZEFkZGVkKE5vZGUqIHRhcmdldAogewogICAgIEhhc2hNYXA8Tm9kZSosIE93
blB0cjxDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdG9yPiA+OjppdGVy
YXRvciBpdGVyID0gbV9hY2N1bXVsYXRpb25zLmZpbmQodGFyZ2V0KTsKICAgICBBU1NFUlQoaXRl
ciAhPSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkpOwotICAgIGlmIChpdGVyID09IG1fYWNjdW11bGF0
aW9ucy5lbmQoKSB8fCAhaXRlci0+dmFsdWUpCisgICAgaWYgKGl0ZXIgPT0gbV9hY2N1bXVsYXRp
b25zLmVuZCgpIHx8ICFpdGVyLT5zZWNvbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGl0ZXIt
PnZhbHVlLT5jaGlsZEFkZGVkKGNoaWxkKTsKKyAgICBpdGVyLT5zZWNvbmQtPmNoaWxkQWRkZWQo
Y2hpbGQpOwogfQogCiB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11
bGF0aW9uUm91dGVyOjp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogdGFyZ2V0LCBOb2RlKiBjaGlsZCkK
IHsKICAgICBIYXNoTWFwPE5vZGUqLCBPd25QdHI8Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0
YXRpb25BY2N1bXVsYXRvcj4gPjo6aXRlcmF0b3IgaXRlciA9IG1fYWNjdW11bGF0aW9ucy5maW5k
KHRhcmdldCk7CiAgICAgQVNTRVJUKGl0ZXIgIT0gbV9hY2N1bXVsYXRpb25zLmVuZCgpKTsKLSAg
ICBpZiAoaXRlciA9PSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlKQorICAg
IGlmIChpdGVyID09IG1fYWNjdW11bGF0aW9ucy5lbmQoKSB8fCAhaXRlci0+c2Vjb25kKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpdGVyLT52YWx1ZS0+d2lsbFJlbW92ZUNoaWxkKGNoaWxkKTsK
KyAgICBpdGVyLT5zZWNvbmQtPndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CiB9CiAKIHZvaWQgQ2hp
bGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmluY3JlbWVu
dFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpCiB7CiAgICAgU2NvcGluZ0xldmVsTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJnZXQsIDEpOwogICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgKysocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjI5LDggKzIyOSw4IEBAIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZTo6
TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmRlY3JlbWVudFNjb3BpbmdMZXZlbChOCiAgICAg
U2NvcGluZ0xldmVsTWFwOjppdGVyYXRvciBpdGVyID0gbV9zY29waW5nTGV2ZWxzLmZpbmQodGFy
Z2V0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX3Njb3BpbmdMZXZlbHMuZW5kKCkpOwogCi0gICAg
LS0oaXRlci0+dmFsdWUpOwotICAgIGlmIChpdGVyLT52YWx1ZSA+IDApCisgICAgLS0oaXRlci0+
c2Vjb25kKTsKKyAgICBpZiAoaXRlci0+c2Vjb25kID4gMCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zY29waW5nTGV2ZWxzLnJlbW92ZShpdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGZkMjkxM2MzYTZiMTc1YzY2NTU3N2ZmOTVhNDVkZDUzNGU2NGJjMTUuLjkxZmEyZTgzY2Rj
NDA1ZTlkZTRiOGI0ODFiMWI5NWRjNDIxOTY3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjk0Nyw3ICsyOTQ3LDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
KiBEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0CiAKICAgICBVc2VyU3R5bGVT
aGVldE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc2hlZXRzTWFwLT5lbmQoKTsKICAgICBmb3Ig
KFVzZXJTdHlsZVNoZWV0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHNoZWV0c01hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IFVzZXJTdHlsZVNoZWV0VmVjdG9y
KiBzaGVldHMgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGNvbnN0IFVzZXJTdHlsZVNoZWV0
VmVjdG9yKiBzaGVldHMgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2hlZXRzLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgVXNl
clN0eWxlU2hlZXQqIHNoZWV0ID0gc2hlZXRzLT5hdChpKS5nZXQoKTsKICAgICAgICAgICAgIGlm
IChzaGVldC0+aW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRvcEZyYW1lT25seSAmJiBvd25l
ckVsZW1lbnQoKSkKQEAgLTQ4MzAsMTAgKzQ4MzAsMTAgQEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogewogICAgIE5hbWVkQ29sbGVjdGlvbk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fd2luZG93
TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUsIDApOwogICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpCi0gICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICBSZWZQdHI8SFRNTE5hbWVDb2xs
ZWN0aW9uPiBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhpcywgV2lu
ZG93TmFtZWRJdGVtcywgbmFtZSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNvbGxl
Y3Rpb24uZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBjb2xsZWN0aW9uLmdl
dCgpOwogICAgIHJldHVybiBjb2xsZWN0aW9uLnJlbGVhc2UoKTsKIH0KIApAQCAtNDg0MSwxMCAr
NDg0MSwxMCBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZG9jdW1lbnRO
YW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZQogewogICAgIE5hbWVkQ29sbGVjdGlv
bk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5h
ZGQobmFtZSwgMCk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKIAogICAgIFJlZlB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+IGNvbGxlY3Rpb24gPSBI
VE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBEb2N1bWVudE5hbWVkSXRlbXMsIG5hbWUp
OwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjb2xsZWN0aW9uLmdldCgpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kID0gY29sbGVjdGlvbi5nZXQoKTsKICAgICByZXR1cm4gY29s
bGVjdGlvbi5yZWxlYXNlKCk7CiB9CiAKQEAgLTUxNzksNyArNTE3OSw3IEBAIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QKIAogSFRNTENhbnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNF
bGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1l
bnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuaXRlcmF0b3It
PnZhbHVlOworICAgIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGVsZW1lbnQgPSBtX2Nzc0Nh
bnZhc0VsZW1lbnRzLmFkZChuYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZWxl
bWVudCkKICAgICAgICAgZWxlbWVudCA9IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUodGhpcyk7
CiAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGIyZjAwODk1NGZlN2VhMGU2NzBkYjcxNWI2
MzUzZDI1M2JhMjk1YTMuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4Njk2MGI0ZDZmZWJjMmYwYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
CkBAIC0zMTEsNyArMzExLDcgQEAgRG9jdW1lbnRNYXJrZXIqIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6bWFya2VyQ29udGFpbmluZ1BvaW50KGNvbnN0IExheW91dFBvaW4KICAgICBNYXJrZXJN
YXA6Oml0ZXJhdG9yIGVuZCA9IG1fbWFya2Vycy5lbmQoKTsKICAgICBmb3IgKE1hcmtlck1hcDo6
aXRlcmF0b3Igbm9kZUl0ZXJhdG9yID0gbV9tYXJrZXJzLmJlZ2luKCk7IG5vZGVJdGVyYXRvciAh
PSBlbmQ7ICsrbm9kZUl0ZXJhdG9yKSB7CiAgICAgICAgIC8vIGlubmVyIGxvb3A7IHByb2Nlc3Mg
ZWFjaCBtYXJrZXIgaW4gdGhpcyBub2RlCi0gICAgICAgIE1hcmtlckxpc3QqIGxpc3QgPSBub2Rl
SXRlcmF0b3ItPnZhbHVlOworICAgICAgICBNYXJrZXJMaXN0KiBsaXN0ID0gbm9kZUl0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgICAgIHVuc2lnbmVkIG1hcmtlckNvdW50ID0gbGlzdC0+c2l6ZSgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIG1hcmtlckluZGV4ID0gMDsgbWFya2VySW5kZXggPCBtYXJr
ZXJDb3VudDsgKyttYXJrZXJJbmRleCkgewogICAgICAgICAgICAgUmVuZGVyZWREb2N1bWVudE1h
cmtlciYgbWFya2VyID0gbGlzdC0+YXQobWFya2VySW5kZXgpOwpAQCAtMzk5LDcgKzM5OSw3IEBA
IFZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNG
b3JNYXJrZXJzKERvY3VtZW50TWFya2VyCiAgICAgTWFya2VyTWFwOjppdGVyYXRvciBlbmQgPSBt
X21hcmtlcnMuZW5kKCk7CiAgICAgZm9yIChNYXJrZXJNYXA6Oml0ZXJhdG9yIG5vZGVJdGVyYXRv
ciA9IG1fbWFya2Vycy5iZWdpbigpOyBub2RlSXRlcmF0b3IgIT0gZW5kOyArK25vZGVJdGVyYXRv
cikgewogICAgICAgICAvLyBpbm5lciBsb29wOyBwcm9jZXNzIGVhY2ggbWFya2VyIGluIHRoaXMg
bm9kZQotICAgICAgICBNYXJrZXJMaXN0KiBsaXN0ID0gbm9kZUl0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgTWFya2VyTGlzdCogbGlzdCA9IG5vZGVJdGVyYXRvci0+c2Vjb25kOwogICAgICAgICB1
bnNpZ25lZCBtYXJrZXJDb3VudCA9IGxpc3QtPnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBtYXJrZXJJbmRleCA9IDA7IG1hcmtlckluZGV4IDwgbWFya2VyQ291bnQ7ICsrbWFya2VySW5k
ZXgpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9
IGxpc3QtPmF0KG1hcmtlckluZGV4KTsKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhOb2RlKiBub2RlLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVAogICAgIAogICAgIE1hcmtlck1hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX21h
cmtlcnMuZmluZChub2RlKTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9tYXJrZXJzLmVuZCgpKQot
ICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3Qobm9kZSwgaXRlcmF0b3ItPnZhbHVlLCBtYXJr
ZXJUeXBlcyk7CisgICAgICAgIHJlbW92ZU1hcmtlcnNGcm9tTGlzdChub2RlLCBpdGVyYXRvci0+
c2Vjb25kLCBtYXJrZXJUeXBlcyk7CiB9CiAKIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjpyZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXJUeXBlcykK
QEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3Zl
TWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgbWFya2VyVAogICAgIE1hcmtlck1h
cCBtYXJrZXJNYXBDb3B5ID0gbV9tYXJrZXJzOwogICAgIE1hcmtlck1hcDo6aXRlcmF0b3IgZW5k
ID0gbWFya2VyTWFwQ29weS5lbmQoKTsKICAgICBmb3IgKE1hcmtlck1hcDo6aXRlcmF0b3IgaSA9
IG1hcmtlck1hcENvcHkuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKLSAgICAgICAgcmVtb3ZlTWFy
a2Vyc0Zyb21MaXN0KGktPmtleS5nZXQoKSwgaS0+dmFsdWUsIG1hcmtlclR5cGVzKTsKKyAgICAg
ICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KGktPmZpcnN0LmdldCgpLCBpLT5zZWNvbmQsIG1hcmtl
clR5cGVzKTsKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5yZW1vdmUobWFya2Vy
VHlwZXMpOwogfQogCkBAIC00OTUsMTAgKzQ5NSwxMCBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIG1hcmtl
cgogICAgIC8vIG91dGVyIGxvb3A6IHByb2Nlc3MgZWFjaCBtYXJrZXJlZCBub2RlIGluIHRoZSBk
b2N1bWVudAogICAgIE1hcmtlck1hcDo6aXRlcmF0b3IgZW5kID0gbV9tYXJrZXJzLmVuZCgpOwog
ICAgIGZvciAoTWFya2VyTWFwOjppdGVyYXRvciBpID0gbV9tYXJrZXJzLmJlZ2luKCk7IGkgIT0g
ZW5kOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IGktPmtleS5nZXQoKTsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IGktPmZpcnN0LmdldCgpOwogCiAgICAgICAgIC8vIGlubmVyIGxvb3A6IHBy
b2Nlc3MgZWFjaCBtYXJrZXIgaW4gdGhlIGN1cnJlbnQgbm9kZQotICAgICAgICBNYXJrZXJMaXN0
KiBsaXN0ID0gaS0+dmFsdWU7CisgICAgICAgIE1hcmtlckxpc3QqIGxpc3QgPSBpLT5zZWNvbmQ7
CiAgICAgICAgIGJvb2wgbm9kZU5lZWRzUmVwYWludCA9IGZhbHNlOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSAhPSBsaXN0LT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgRG9jdW1l
bnRNYXJrZXIgbWFya2VyID0gbGlzdC0+YXQoaSk7CkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmludmFsaWRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2Vy
c0luUmVjdChjb25zdCBMYXkKICAgICBmb3IgKE1hcmtlck1hcDo6aXRlcmF0b3IgaSA9IG1fbWFy
a2Vycy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CiAKICAgICAgICAgLy8gaW5uZXIgbG9vcDog
cHJvY2VzcyBlYWNoIHJlY3QgaW4gdGhlIGN1cnJlbnQgbm9kZQotICAgICAgICBNYXJrZXJMaXN0
KiBsaXN0ID0gaS0+dmFsdWU7CisgICAgICAgIE1hcmtlckxpc3QqIGxpc3QgPSBpLT5zZWNvbmQ7
CiAgICAgICAgIGZvciAoc2l6ZV90IGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNp
emUoKTsgKytsaXN0SW5kZXgpCiAgICAgICAgICAgICBsaXN0LT5hdChsaXN0SW5kZXgpLmludmFs
aWRhdGUocik7CiAgICAgfQpAQCAtNjc1LDkgKzY3NSw5IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpzaG93TWFya2VycygpIGNvbnN0CiAgICAgZnByaW50ZihzdGRlcnIsICIlZCBu
b2RlcyBoYXZlIG1hcmtlcnM6XG4iLCBtX21hcmtlcnMuc2l6ZSgpKTsKICAgICBNYXJrZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWFya2Vycy5lbmQoKTsKICAgICBmb3IgKE1hcmtlck1h
cDo6Y29uc3RfaXRlcmF0b3Igbm9kZUl0ZXJhdG9yID0gbV9tYXJrZXJzLmJlZ2luKCk7IG5vZGVJ
dGVyYXRvciAhPSBlbmQ7ICsrbm9kZUl0ZXJhdG9yKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBu
b2RlSXRlcmF0b3ItPmtleS5nZXQoKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG5vZGVJdGVyYXRv
ci0+Zmlyc3QuZ2V0KCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAiLCBub2RlKTsKLSAg
ICAgICAgTWFya2VyTGlzdCogbGlzdCA9IG5vZGVJdGVyYXRvci0+dmFsdWU7CisgICAgICAgIE1h
cmtlckxpc3QqIGxpc3QgPSBub2RlSXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBtYXJrZXJJbmRleCA9IDA7IG1hcmtlckluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK21hcmtl
ckluZGV4KSB7CiAgICAgICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyID0gbGlz
dC0+YXQobWFya2VySW5kZXgpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgJWQ6WyVk
OiVkXSglZCkiLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbWFya2VyLmVu
ZE9mZnNldCgpLCBtYXJrZXIuYWN0aXZlTWF0Y2goKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IDEyOTdlNTEwMmZiNGU3OWNlM2RiMTEyMzU3MDIxZTNk
ZDA1NTRhNTEuLjA4MmFhMDc0MGE3MWNjZGY1MGUxZDQyZDIzZDMxN2U2M2FmMmY0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IHZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBF
bGVtZW50KiBlbGVtZW50KQogCiAgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIE1h
cDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5KTsKLSAgICBpZiAoY2FjaGVk
SXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNoZWRJdGVtLT52YWx1ZSA9PSBlbGVtZW50KQorICAg
IGlmIChjYWNoZWRJdGVtICE9IG1fbWFwLmVuZCgpICYmIGNhY2hlZEl0ZW0tPnNlY29uZCA9PSBl
bGVtZW50KQogICAgICAgICBtX21hcC5yZW1vdmUoY2FjaGVkSXRlbSk7CiAgICAgZWxzZQogICAg
ICAgICBtX2R1cGxpY2F0ZUNvdW50cy5yZW1vdmUoa2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGQ2MDY3MjM1MGFkZDQ0NmEzYWYyMzBkZmYw
MWVmYTgxMjMwMjUyODQuLmRiNTBjZGQxNDM1NzUwZjBiNzkxMzUxZTA2YmUwOTBiNWRkY2IwYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHN0YXRpYyBBdHRyTGlzdCogZW5zdXJlQXR0ckxpc3RGb3JFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgQVNTRVJUKCFhdHRyTGlzdE1hcCgpLmNvbnRhaW5zKGVsZW1l
bnQpKTsKICAgICBlbGVtZW50LT5zZXRIYXNBdHRyTGlzdCgpOwogICAgIEF0dHJMaXN0TWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gYXR0ckxpc3RNYXAoKS5hZGQoZWxlbWVudCwgYWRvcHRQdHIobmV3
IEF0dHJMaXN0KSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cisg
ICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiBzdGF0aWMgdm9p
ZCByZW1vdmVBdHRyTGlzdEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggODliOWNjNzBiNzgwYzhjODBiYjc0NGQxZDhj
MWVmZjE3NTgwYzUxNy4uZTU4MzkwYzVlNGFkOWQ4ODBlY2VmZGQ1MWQ4ZjBkZDgwODc2MTE5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBFdmVudFRhcmdldCogRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXI6OmZpbmRSZWxhdGVkVGFy
Z2V0KFRyZWVTY29wZSogc2NvcGUpCiAgICAgICAgIHBhcmVudFRyZWVTY29wZXMuYXBwZW5kKHNj
b3BlKTsKICAgICAgICAgUmVsYXRlZFRhcmdldE1hcDo6Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBt
X3JlbGF0ZWRUYXJnZXRNYXAuZmluZChzY29wZSk7CiAgICAgICAgIGlmIChmb3VuZCAhPSBtX3Jl
bGF0ZWRUYXJnZXRNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQgPSBmb3Vu
ZC0+dmFsdWU7CisgICAgICAgICAgICByZWxhdGVkVGFyZ2V0ID0gZm91bmQtPnNlY29uZDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNjb3BlID0gc2NvcGUtPnBhcmVu
dFRyZWVTY29wZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4
IGFmOGM0OGFlZGU1NTEzNmY3NGZlMTg0NzgxZDA1MjhiNDFkN2NjYWMuLmMxZmQ0ZDdjOTU3YTY0
YmZmNzg4ZjkwMWU2MWRlMDFjYTA5MjI3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0
ZW5lck1hcC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBWZWN0b3I8QXRvbWljU3RyaW5nPiBFdmVu
dExpc3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29uc3QKICAgICAgICAgRXZlbnRMaXN0ZW5lckhh
c2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9oYXNoTWFwLT5iZWdpbigpOwogICAgICAgICBFdmVudExp
c3RlbmVySGFzaE1hcDo6aXRlcmF0b3IgZW5kID0gbV9oYXNoTWFwLT5lbmQoKTsKICAgICAgICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHR5cGVzLmFwcGVuZChpdC0+a2V5
KTsKKyAgICAgICAgICAgIHR5cGVzLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgIH0gZWxzZSBpZiAo
bV9zaW5nbGVFdmVudExpc3RlbmVyVmVjdG9yKQogICAgICAgICB0eXBlcy5hcHBlbmQobV9zaW5n
bGVFdmVudExpc3RlbmVyVHlwZSk7CiAKQEAgLTEzNiw5ICsxMzYsOSBAQCBib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbgogICAgIGlmIChtX2hhc2hNYXApIHsKICAgICAgICAgRXZlbnRMaXN0ZW5lckhh
c2hNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hhc2hNYXAtPmFkZChldmVudFR5cGUsIG51bGxw
dHIpOwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IEV2ZW50TGlzdGVuZXJWZWN0b3IpOworICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgRXZlbnRMaXN0
ZW5lclZlY3Rvcik7CiAKLSAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IocmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBy
ZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKSwg
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIGlmICghbV9zaW5nbGVFdmVudExp
c3RlbmVyVmVjdG9yKSB7CkBAIC0xNzksOCArMTc5LDggQEAgYm9vbCBFdmVudExpc3RlbmVyTWFw
OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3QKICAgICBpZiAoaXQgPT0gbV9oYXNoTWFwLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYm9vbCB3YXNSZW1vdmVkID0gcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKGl0LT52
YWx1ZS5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUsIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIp
OwotICAgIGlmIChpdC0+dmFsdWUtPmlzRW1wdHkoKSkKKyAgICBib29sIHdhc1JlbW92ZWQgPSBy
ZW1vdmVMaXN0ZW5lckZyb21WZWN0b3IoaXQtPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUsIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOworICAgIGlmIChpdC0+c2Vjb25kLT5pc0Vt
cHR5KCkpCiAgICAgICAgIG1faGFzaE1hcC0+cmVtb3ZlKGl0KTsKICAgICByZXR1cm4gd2FzUmVt
b3ZlZDsKIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBFdmVudExpc3RlbmVyVmVjdG9yKiBFdmVudExp
c3RlbmVyTWFwOjpmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogICAgICAgICBF
dmVudExpc3RlbmVySGFzaE1hcDo6aXRlcmF0b3IgaXQgPSBtX2hhc2hNYXAtPmZpbmQoZXZlbnRU
eXBlKTsKICAgICAgICAgaWYgKGl0ID09IG1faGFzaE1hcC0+ZW5kKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgaWYgKG1fc2luZ2xlRXZlbnRMaXN0ZW5l
clR5cGUgPT0gZXZlbnRUeXBlKQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgRXZlbnRMaXN0ZW5l
ck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21NYXJrdXAoY29uc3QgQXRv
bWljU3RyCiAgICAgICAgIEV2ZW50TGlzdGVuZXJIYXNoTWFwOjppdGVyYXRvciByZXN1bHQgPSBt
X2hhc2hNYXAtPmZpbmQoZXZlbnRUeXBlKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBtX2hh
c2hNYXAtPmVuZCgpKTsKIAotICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZl
Y3RvciA9IHJlc3VsdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIEV2ZW50TGlzdGVuZXJWZWN0b3Iq
IGxpc3RlbmVyVmVjdG9yID0gcmVzdWx0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIEFTU0VSVChs
aXN0ZW5lclZlY3Rvcik7CiAKICAgICAgICAgcmVtb3ZlRmlyc3RMaXN0ZW5lckNyZWF0ZWRGcm9t
TWFya3VwKGxpc3RlbmVyVmVjdG9yKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEV2ZW50TGlz
dGVuZXJNYXA6OmNvcHlFdmVudExpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQo
RXZlbnRUYXJnZQogICAgIGlmIChtX2hhc2hNYXApIHsKICAgICAgICAgRXZlbnRMaXN0ZW5lckhh
c2hNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faGFzaE1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoRXZl
bnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9oYXNoTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJr
dXBUb1RhcmdldChpdC0+a2V5LCBpdC0+dmFsdWUuZ2V0KCksIHRhcmdldCk7CisgICAgICAgICAg
ICBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChpdC0+Zmlyc3QsIGl0
LT5zZWNvbmQuZ2V0KCksIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMy
NSw3ICszMjUsNyBAQCBFdmVudExpc3RlbmVyKiBFdmVudExpc3RlbmVySXRlcmF0b3I6Om5leHRM
aXN0ZW5lcigpCiAKICAgICBpZiAobV9tYXAtPm1faGFzaE1hcCkgewogICAgICAgICBmb3IgKDsg
bV9tYXBJdGVyYXRvciAhPSBtX21hcEVuZDsgKyttX21hcEl0ZXJhdG9yKSB7Ci0gICAgICAgICAg
ICBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSAqbV9tYXBJdGVyYXRvci0+dmFsdWU7
CisgICAgICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSAqbV9tYXBJdGVy
YXRvci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPCBsaXN0ZW5lcnMuc2l6ZSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lcnNbbV9pbmRleCsrXS5saXN0ZW5lci5n
ZXQoKTsKICAgICAgICAgICAgIG1faW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBhYWZhOGEyZDFiNTMwYjdkMGYzZTM2
NzA1NThlOGM5NmI5NDhhZmI4Li41ZmMyNmFjZmVlMzMyZWI3ZDJkNjE5YmE1OTIwYzczM2Y1YmIw
ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcApAQCAtNDIsOSArNDIsOSBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRk
T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcgogICAgIAogICAg
IElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlk
LmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IE9ic2VydmVyU2V0KCkpOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPYnNlcnZlclNldCgp
KTsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChvYnNlcnZlcik7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQtPmFkZChvYnNlcnZlcik7CiB9CiAKIHZvaWQgSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBJ
ZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQs
IElkVGFyZ2V0T2IKIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6aXRlcmF0b3IgaXRlciA9IG1f
cmVnaXN0cnkuZmluZChpZC5pbXBsKCkpOwogCi0gICAgT2JzZXJ2ZXJTZXQqIHNldCA9IGl0ZXIt
PnZhbHVlLmdldCgpOworICAgIE9ic2VydmVyU2V0KiBzZXQgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7
CiAgICAgc2V0LT5yZW1vdmUob2JzZXJ2ZXIpOwogICAgIGlmIChzZXQtPmlzRW1wdHkoKSAmJiBz
ZXQgIT0gbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCkKICAgICAgICAgbV9yZWdpc3RyeS5yZW1v
dmUoaXRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggMmI5NWY5NjU2ODZhMTY4NjkzNzZlYmY0NjgzZTJlZTdlZDI5ZWUzNi4uMzVjYjZjYjdhZjA1
YzNlMTgwYmVkNjkzN2VjMjAwOGYyZWQ3MTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaApAQCAtMzIzLDggKzMyMyw4IEBAIHZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwg
T2JqZWN0CiB7CiAgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFw
LmVuZCgpOwogICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1h
cC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGFkZEluc3RydW1lbnRlZE9iamVj
dChpLT5rZXksIG93bmVyT2JqZWN0VHlwZSk7Ci0gICAgICAgIGFkZEluc3RydW1lbnRlZE9iamVj
dChpLT52YWx1ZSwgb3duZXJPYmplY3RUeXBlKTsKKyAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KGktPmZpcnN0LCBvd25lck9iamVjdFR5cGUpOworICAgICAgICBhZGRJbnN0cnVtZW50ZWRP
YmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOwogICAgIH0KIH0KIApAQCAtMzMzLDcg
KzMzMyw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBW
YWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUCiB7CiAgICAgdHlwZW5hbWUgTWFwVHlw
ZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwogICAgIGZvciAodHlwZW5hbWUgTWFw
VHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAg
ICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoaS0+dmFsdWUsIG93bmVyT2JqZWN0VHlwZSk7Cisg
ICAgICAgIGFkZEluc3RydW1lbnRlZE9iamVjdChpLT5zZWNvbmQsIG93bmVyT2JqZWN0VHlwZSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCmluZGV4IDRm
YWQyMjA4MTg1M2NkODE1MzRkMzAwZDE2MWQ4OGIxYWE1ZTk0YzguLjI0YzBjYjU4NjUxN2UwOGJj
N2E4YjQwOTNmMjFkMzFlMGRiMmQ2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtNjIsNyArNjIsNyBAQCBNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAo
SGFzaE1hcDxNdXRhdGlvbk9icwogYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
aXNPbGRWYWx1ZVJlcXVlc3RlZCgpCiB7CiAgICAgZm9yIChIYXNoTWFwPE11dGF0aW9uT2JzZXJ2
ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46Oml0ZXJhdG9yIGl0ZXIgPSBtX29i
c2VydmVycy5iZWdpbigpOyBpdGVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2l0ZXIpIHsKLSAg
ICAgICAgaWYgKGhhc09sZFZhbHVlKGl0ZXItPnZhbHVlKSkKKyAgICAgICAgaWYgKGhhc09sZFZh
bHVlKGl0ZXItPnNlY29uZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzMsOCArNzMsOCBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlYwog
ICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlvbjsKICAgICBS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uV2l0aE51bGxPbGRWYWx1ZTsKICAgICBmb3Ig
KEhhc2hNYXA8TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
Pjo6aXRlcmF0b3IgaXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9vYnNlcnZl
cnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlciA9
IGl0ZXItPmtleTsKLSAgICAgICAgaWYgKGhhc09sZFZhbHVlKGl0ZXItPnZhbHVlKSkgeworICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlciA9IGl0ZXItPmZpcnN0OworICAgICAgICBp
ZiAoaGFzT2xkVmFsdWUoaXRlci0+c2Vjb25kKSkgewogICAgICAgICAgICAgb2JzZXJ2ZXItPmVu
cXVldWVNdXRhdGlvblJlY29yZChtdXRhdGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGRkNTE3YThkZDU2ZGU2YzI3NjBmMmUxYWVhZjA0
YzUwZWUxZDgzYmEuLmEzYTFjMjJmMjU1NDlmN2ZjYWJmNDA3MDE2MWFiNjk4ZWQyMWM3OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIE5vZGU6OmR1bXBTdGF0aXN0
aWNzKCkKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpOwogICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjpB
ZGRSZXN1bHQgcmVzdWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwgMSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOworICAgICAgICAgICAgICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCsrOwogCiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRy
aWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7
CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAKICAgICBw
cmludGYoIkVsZW1lbnQgdGFnIG5hbWUgZGlzdGlidXRpb246XG4iKTsKICAgICBmb3IgKEhhc2hN
YXA8U3RyaW5nLCBzaXplX3Q+OjppdGVyYXRvciBpdCA9IHBlclRhZ0NvdW50LmJlZ2luKCk7IGl0
ICE9IHBlclRhZ0NvdW50LmVuZCgpOyArK2l0KQotICAgICAgICBwcmludGYoIiAgTnVtYmVyIG9m
IDwlcz4gdGFnczogJXp1XG4iLCBpdC0+a2V5LnV0ZjgoKS5kYXRhKCksIGl0LT52YWx1ZSk7Cisg
ICAgICAgIHByaW50ZigiICBOdW1iZXIgb2YgPCVzPiB0YWdzOiAlenVcbiIsIGl0LT5maXJzdC51
dGY4KCkuZGF0YSgpLCBpdC0+c2Vjb25kKTsKIAogICAgIHByaW50ZigiQXR0cmlidXRlczpcbiIp
OwogICAgIHByaW50ZigiICBOdW1iZXIgb2YgQXR0cmlidXRlcyAobm9uLU5vZGUgYW5kIE5vZGUp
OiAlenUgWyV6dV1cbiIsIGF0dHJpYnV0ZXMsIHNpemVvZihBdHRyaWJ1dGUpKTsKQEAgLTUxMSw3
ICs1MTEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQogICAgICAgICBOb2RlUmFyZURh
dGE6Ok5vZGVSYXJlRGF0YU1hcCYgZGF0YU1hcCA9IE5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAo
KTsKICAgICAgICAgTm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0g
ZGF0YU1hcC5maW5kKHRoaXMpOwogICAgICAgICBBU1NFUlQoaXQgIT0gZGF0YU1hcC5lbmQoKSk7
Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7CisgICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kOwog
ICAgICAgICBkYXRhTWFwLnJlbW92ZShpdCk7CiAgICAgfQogICAgIGNsZWFyRmxhZyhIYXNSYXJl
RGF0YUZsYWcpOwpAQCAtMjI2NSwxOCArMjI2NSwxOCBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRh
OjppbnZhbGlkYXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQogewogICAg
IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpjb25zdF9pdGVyYXRvciBhdG9taWNOYW1lQ2Fj
aGVFbmQgPSBtX2F0b21pY05hbWVDYWNoZXMuZW5kKCk7CiAgICAgZm9yIChOb2RlTGlzdEF0b21p
Y05hbWVDYWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F0b21pY05hbWVDYWNoZXMuYmVn
aW4oKTsgaXQgIT0gYXRvbWljTmFtZUNhY2hlRW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUt
PmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmludmFsaWRh
dGVDYWNoZShhdHRyTmFtZSk7CiAKICAgICBOb2RlTGlzdE5hbWVDYWNoZU1hcDo6Y29uc3RfaXRl
cmF0b3IgbmFtZUNhY2hlRW5kID0gbV9uYW1lQ2FjaGVzLmVuZCgpOwogICAgIGZvciAoTm9kZUxp
c3ROYW1lQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9uYW1lQ2FjaGVzLmJlZ2luKCk7
IGl0ICE9IG5hbWVDYWNoZUVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5pbnZhbGlkYXRl
Q2FjaGUoYXR0ck5hbWUpOworICAgICAgICBpdC0+c2Vjb25kLT5pbnZhbGlkYXRlQ2FjaGUoYXR0
ck5hbWUpOwogCiAgICAgaWYgKGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBUYWdO
b2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yIHRhZ0NhY2hlRW5kID0gbV90YWdOb2RlTGlzdENhY2hl
TlMuZW5kKCk7CiAgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yIGl0ID0gbV90
YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4oKTsgaXQgIT0gdGFnQ2FjaGVFbmQ7ICsraXQpCi0gICAg
ICAgIGl0LT52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPmlu
dmFsaWRhdGVDYWNoZSgpOwogfQogCiB2b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKQEAgLTI0MzMsNyArMjQzMyw3IEBAIHZvaWQgTm9k
ZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxNdXRhdGlvbk9i
c2VydmVyKiwgTXV0YXRpCiAgICAgICAgICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9w
dGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsK
ICAgICAgICAgICAgICAgICBIYXNoTWFwPE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29y
ZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lz
dHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKICAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlIHw9IGRlbGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwogCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTI0NDYsNyArMjQ0Niw3IEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1hdGNoaW5n
T2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpCiAg
ICAgICAgICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRp
b25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKICAgICAgICAgICAgICAgICBI
YXNoTWFwPE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46
OkFkZFJlc3VsdCByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIo
KSwgZGVsaXZlcnlPcHRpb25zKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlIHw9IGRlbGl2
ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
fD0gZGVsaXZlcnlPcHRpb25zOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGY0MzE3YmRiYTViZWRkYWRmMjQxMmJlZjIzNGM1
NjIwNjEzNDUyODAuLjFmZGViYjZkMjE4NzM0ODU0NGM4MzIwZTJjNTVkNmJkODcwOTc3ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTY4LDEwICs2OCwxMCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fYXRvbWljTmFtZUNhY2hlcy5hZGQobmFtZWROb2RlTGlzdEtleShsaXN0VHlwZSwgbmFt
ZSksIDApOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAg
ICAgIFJlZlB0cjxUPiBsaXN0ID0gVDo6Y3JlYXRlKG5vZGUsIG5hbWUpOwotICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbGlzdC5nZXQoKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAg
ICAgfQogCkBAIC04MCwxMCArODAsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgTm9kZUxp
c3ROYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX25hbWVDYWNoZXMuYWRkKG5hbWVk
Tm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kKTsKIAogICAgICAgICBSZWZQdHI8VD4gbGlzdCA9IFQ6OmNyZWF0ZShu
b2RlLCBuYW1lKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGxpc3QuZ2V0KCk7
CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAgIH0KIApAQCAtOTIsMTAgKzkyLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVz
cGFjZVVSSSk7CiAgICAgICAgIFRhZ05vZGVMaXN0Q2FjaGVOUzo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmFkZChuYW1lLCAwKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgICAgIFJl
ZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUobm9kZSwgbmFtZXNw
YWNlVVJJLCBsb2NhbE5hbWUpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbGlz
dC5nZXQoKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwog
ICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC0xMzYsMjEgKzEzNiwy
MSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChvbGREb2N1bWVudCAhPSBuZXdEb2N1bWVudCkgewog
ICAgICAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGF0
b21pY05hbWVDYWNoZUVuZCA9IG1fYXRvbWljTmFtZUNhY2hlcy5lbmQoKTsKICAgICAgICAgICAg
IGZvciAoTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9h
dG9taWNOYW1lQ2FjaGVzLmJlZ2luKCk7IGl0ICE9IGF0b21pY05hbWVDYWNoZUVuZDsgKytpdCkg
ewotICAgICAgICAgICAgICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QgPSBpdC0+dmFs
dWU7CisgICAgICAgICAgICAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7CiAgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJOb2RlTGlzdENh
Y2hlKGxpc3QpOwogICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LT5yZWdpc3Rlck5vZGVMaXN0
Q2FjaGUobGlzdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE5vZGVMaXN0TmFtZUNh
Y2hlTWFwOjpjb25zdF9pdGVyYXRvciBuYW1lQ2FjaGVFbmQgPSBtX25hbWVDYWNoZXMuZW5kKCk7
CiAgICAgICAgICAgICBmb3IgKE5vZGVMaXN0TmFtZUNhY2hlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fbmFtZUNhY2hlcy5iZWdpbigpOyBpdCAhPSBuYW1lQ2FjaGVFbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0ID0gaXQtPnZhbHVlOwor
ICAgICAgICAgICAgICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QgPSBpdC0+c2Vjb25k
OwogICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZShs
aXN0KTsKICAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlzdENhY2hl
KGxpc3QpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBUYWdOb2RlTGlzdENhY2hlTlM6
OmNvbnN0X2l0ZXJhdG9yIHRhZ0VuZCA9IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmVuZCgpOwogICAg
ICAgICAgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlTlM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90
YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4oKTsgaXQgIT0gdGFnRW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0ID0gaXQtPnNlY29uZDsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWxpc3QtPmlzUm9vdGVkQXREb2N1bWVudCgpKTsKICAgICAg
ICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUobGlzdCk7CiAg
ICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJlZ2lzdGVyTm9kZUxpc3RDYWNoZShsaXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggMmY0
M2E1M2ZkZTZmNjI5OTA4NTRmZDBjNjQ3ZGZmMzBhZDdlOGIxYS4uZTU5NDA5YmNmNDJjNWI4MGUy
OTc2YmY3OGJkZTgxODUzOGNiNjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhdHRycy5maW5kKCJ0eXBlIik7CiAgICAgICAgIFN0cmlu
ZyB0eXBlOwogICAgICAgICBpZiAoaSAhPSBhdHRycy5lbmQoKSkKLSAgICAgICAgICAgIHR5cGUg
PSBpLT52YWx1ZTsKKyAgICAgICAgICAgIHR5cGUgPSBpLT5zZWNvbmQ7CiAKICAgICAgICAgbV9p
c0NTUyA9IHR5cGUuaXNFbXB0eSgpIHx8IHR5cGUgPT0gInRleHQvY3NzIjsKICNpZiBFTkFCTEUo
WFNMVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCA1MzViNTcwYjVkN2RlOWY0YWY5MzU4M2U3YzcxZDEyYjJkNzUzNWE4Li45MjQ0NWNhODBk
YWY2MzMyMzlkMmY3OWNlZTk4ZGQ5ZGQ0NDFiMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNzMsOSArMTczLDkgQEAgYm9vbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgbV9p
dGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5rZXktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAgICAgQVNTRVJUKGl0ZXItPmtleS0+c3Vz
cGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBpZiAoIWl0ZXItPmtleS0+Y2FuU3VzcGVu
ZCgpKSB7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRl
ZENhbGxlZCgpKTsKKyAgICAgICAgaWYgKCFpdGVyLT5maXJzdC0+Y2FuU3VzcGVuZCgpKSB7CiAg
ICAgICAgICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTkwLDkgKzE5MCw5IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2Jq
ZWN0OjpSZWFzb25Gb3JTCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
ICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFT
U0VSVChpdGVyLT5rZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAg
ICAgQVNTRVJUKGl0ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBp
dGVyLT5rZXktPnN1c3BlbmQod2h5KTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJz
dC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOworICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVu
ZCh3aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsK
ICAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOwpAQCAtMjA2LDkgKzIw
Niw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
cygpCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFw
PEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1f
YWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0
Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0
ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5r
ZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAgICAgQVNTRVJUKGl0
ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBpdGVyLT5rZXktPnJl
c3VtZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zdXNwZW5kSWZOZWVk
ZWRDYWxsZWQoKSk7CisgICAgICAgIGl0ZXItPmZpcnN0LT5yZXN1bWUoKTsKICAgICB9CiAgICAg
bV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiB9CkBAIC0yMjAsOSArMjIwLDkg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiAg
ICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2
ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZl
RE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9p
ZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0g
YWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5rZXktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAgICAgQVNTRVJUKGl0ZXItPmtl
eS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBpdGVyLT5rZXktPnN0b3AoKTsK
KyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
dGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVk
KCkpOworICAgICAgICBpdGVyLT5maXJzdC0+c3RvcCgpOwogICAgIH0KICAgICBtX2l0ZXJhdGlu
Z0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKIApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9s
ZE1pbmltdW1UaW1lckluCiB7CiAgICAgaWYgKG1pbmltdW1UaW1lckludGVydmFsKCkgIT0gb2xk
TWluaW11bVRpbWVySW50ZXJ2YWwpIHsKICAgICAgICAgZm9yIChUaW1lb3V0TWFwOjppdGVyYXRv
ciBpdGVyID0gbV90aW1lb3V0cy5iZWdpbigpOyBpdGVyICE9IG1fdGltZW91dHMuZW5kKCk7ICsr
aXRlcikgewotICAgICAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gaXRlci0+dmFsdWU7CisgICAg
ICAgICAgICBET01UaW1lciogdGltZXIgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICB0aW1l
ci0+YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwob2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IGVj
YjVhMTYwZmIyNmZhYzRhN2QyNzE4MWEwYzI0NGViZDA0Y2U0NTMuLjc4NjJhZWZjYzNhYmE4ZTRi
OTJjODQzMzJiNzRhOTYwM2NhZTcyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5j
cHAKQEAgLTE2OSw3ICsxNjksNyBAQCBTZWxlY3RvclF1ZXJ5KiBTZWxlY3RvclF1ZXJ5Q2FjaGU6
OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRG9jdW1lbnQqCiB7CiAgICAgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTZWxlY3RvclF1ZXJ5PiA+OjppdGVyYXRvciBpdCA9
IG1fZW50cmllcy5maW5kKHNlbGVjdG9ycyk7CiAgICAgaWYgKGl0ICE9IG1fZW50cmllcy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiAKICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKICAgICBDU1NT
ZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJp
bmcuY3BwCmluZGV4IDFkYzFmYjBkZGUxZjAyM2YzZjhhNjUzYjIzYWMzZDg3MzhlOGMzNDkuLjlj
Y2U3ZDk1YjVlMTA0NDNjMDNlZGE1YjcyZjExMmM1NzA1MmU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3BhY2VTcGxpdFN0cmluZy5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTcGFjZVNwbGl0U3Ry
aW5nRGF0YTo6flNwYWNlU3BsaXRTdHJpbmdEYXRhKCkKIAogUGFzc1JlZlB0cjxTcGFjZVNwbGl0
U3RyaW5nRGF0YT4gU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YSomIGRhdGEgPSBzaGFyZWRE
YXRhTWFwKCkuYWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgIFNwYWNlU3BsaXRT
dHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3Bs
aXRTdHJpbmdEYXRhKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAxNTUzZWI0YjYxNzFmYWQ0ZTliNmY0
YjIyOGU0YzUyZmI1MDFmMjg3Li5lNzVjZDUzMWQxNmY4ZDhlMjAyMzY5Mjc5NmYxZmU0OWFjOGY3
NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yNzcsMTQgKzI3Nywx
NCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKCkKICAgICBQcmVz
ZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6aXRlcmF0b3IgY2FjaGVJdGVyYXRvcjsKICAgICBpZiAo
Y2FjaGVIYXNoKSB7CiAgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1
dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gsIG51bGxwdHIpLml0ZXJhdG9yOwotICAgICAgICBpZiAo
Y2FjaGVJdGVyYXRvci0+dmFsdWUgJiYgY2FjaGVJdGVyYXRvci0+dmFsdWUtPmtleSAhPSBjYWNo
ZUtleSkKKyAgICAgICAgaWYgKGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9y
LT5zZWNvbmQtPmtleSAhPSBjYWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVD
YWNoZSgpLmVuZCgpOwogCiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlOwotICAg
IGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+dmFsdWUpIHsKLSAgICAgICAgc3R5bGUg
PSBjYWNoZUl0ZXJhdG9yLT52YWx1ZS0+dmFsdWU7CisgICAgaWYgKGNhY2hlSGFzaCAmJiBjYWNo
ZUl0ZXJhdG9yLT5zZWNvbmQpIHsKKyAgICAgICAgc3R5bGUgPSBjYWNoZUl0ZXJhdG9yLT5zZWNv
bmQtPnZhbHVlOwogICAgICAgICBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuZXIoKS5k
aWRIaXRQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKGlzU1ZHRWxlbWVudCgpID8gU1ZHQXR0
cmlidXRlTW9kZSA6IENTU1F1aXJrc01vZGUpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgU3R5
bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAgICAgYXR0cmlidXRlRGF0YSgp
LT5zZXRBdHRyaWJ1dGVTdHlsZShzdHlsZS0+aXNFbXB0eSgpID8gMCA6IHN0eWxlKTsKIAotICAg
IGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQorICAgIGlmICghY2FjaGVI
YXNoIHx8IGNhY2hlSXRlcmF0b3ItPnNlY29uZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3du
UHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnk+IG5ld0VudHJ5ID0gYWRvcHRQdHIo
bmV3IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnkpOwpAQCAtMzExLDcgKzMxMSw3IEBA
IHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogICAgICAgICBwcmVz
ZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmNsZWFyKCk7CiAgICAgICAgIHByZXNlbnRhdGlvbkF0
dHJpYnV0ZUNhY2hlKCkuc2V0KGNhY2hlSGFzaCwgbmV3RW50cnkucmVsZWFzZSgpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FjaGVJdGVyYXRvci0+dmFsdWUgPSBuZXdFbnRyeS5yZWxlYXNlKCk7
CisgICAgICAgIGNhY2hlSXRlcmF0b3ItPnNlY29uZCA9IG5ld0VudHJ5LnJlbGVhc2UoKTsKIH0K
IAogdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQ
cm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0KaW5kZXggNmNhNWQ1ZjAyOWM5OTE2OTMzYjgyODlkMTQ1ZjBk
MTIxYzZkNTY0Ni4uOTk5MTZjMWUwMGY0NDkyMmFhN2ViYzZjZmIwMGZjNDk3NjhkNDQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBOU1RleHRBbHRlcm5hdGl2ZXMqIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cgogICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVybmF0aXZlc09i
amVjdE1hcC5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdHIgPT0gbV9hbHRlcm5hdGl2ZXNPYmpl
Y3RNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBpdHItPnZhbHVl
LmdldCgpOworICAgIHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsKIH0KIAogdm9pZCBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXI6OnJl
bW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggMGEwOGMxZWNhN2M1Mjg3YzQ4NTdiYjc0NTRl
NDMxNTBmY2MyYzA1Yy4uZTM1ZWZmMTllMTliYTljNWU1ZDE1YzgwMmI2YmI5ZmU0NTQxYTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIyOCw4ICsyMjgsOCBA
QCB2b2lkIFNhdmVkRm9ybVN0YXRlOjpzZXJpYWxpemVUbyhWZWN0b3I8U3RyaW5nPiYgc3RhdGVW
ZWN0b3IpIGNvbnN0CiB7CiAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1f
Y29udHJvbFN0YXRlQ291bnQpKTsKICAgICBmb3IgKEZvcm1FbGVtZW50U3RhdGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5iZWdpbigpOyBpdCAhPSBt
X3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IEZv
cm1FbGVtZW50S2V5JiBrZXkgPSBpdC0+a2V5OwotICAgICAgICBjb25zdCBEZXF1ZTxGb3JtQ29u
dHJvbFN0YXRlPiYgcXVldWUgPSBpdC0+dmFsdWU7CisgICAgICAgIGNvbnN0IEZvcm1FbGVtZW50
S2V5JiBrZXkgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGNvbnN0IERlcXVlPEZvcm1Db250cm9sU3Rh
dGU+JiBxdWV1ZSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGZvciAoRGVxdWU8Rm9ybUNvbnRyb2xT
dGF0ZT46OmNvbnN0X2l0ZXJhdG9yIHF1ZUl0ZXJhdG9yID0gcXVldWUuYmVnaW4oKTsgcXVlSXRl
cmF0b3IgIT0gcXVldWUuZW5kKCk7ICsrcXVlSXRlcmF0b3IpIHsKICAgICAgICAgICAgIHN0YXRl
VmVjdG9yLmFwcGVuZChrZXkubmFtZSgpKTsKICAgICAgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVu
ZChrZXkudHlwZSgpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIFNhdmVkRm9ybVN0YXRlOjph
cHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNT
dAogICAgIEZvcm1FbGVtZW50S2V5IGtleShuYW1lLmltcGwoKSwgdHlwZS5pbXBsKCkpOwogICAg
IEZvcm1FbGVtZW50U3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVt
ZW50cy5maW5kKGtleSk7CiAgICAgaWYgKGl0ICE9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMu
ZW5kKCkpCi0gICAgICAgIGl0LT52YWx1ZS5hcHBlbmQoc3RhdGUpOworICAgICAgICBpdC0+c2Vj
b25kLmFwcGVuZChzdGF0ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIERlcXVlPEZvcm1Db250cm9s
U3RhdGU+IHN0YXRlTGlzdDsKICAgICAgICAgc3RhdGVMaXN0LmFwcGVuZChzdGF0ZSk7CkBAIC0y
NTksMTAgKzI1OSwxMCBAQCBGb3JtQ29udHJvbFN0YXRlIFNhdmVkRm9ybVN0YXRlOjp0YWtlQ29u
dHJvbFN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29ucwogICAgIEZvcm1FbGVtZW50
U3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5maW5kKEZv
cm1FbGVtZW50S2V5KG5hbWUuaW1wbCgpLCB0eXBlLmltcGwoKSkpOwogICAgIGlmIChpdCA9PSBt
X3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRy
b2xTdGF0ZSgpOwotICAgIEFTU0VSVChpdC0+dmFsdWUuc2l6ZSgpKTsKLSAgICBGb3JtQ29udHJv
bFN0YXRlIHN0YXRlID0gaXQtPnZhbHVlLnRha2VGaXJzdCgpOworICAgIEFTU0VSVChpdC0+c2Vj
b25kLnNpemUoKSk7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IGl0LT5zZWNvbmQudGFr
ZUZpcnN0KCk7CiAgICAgbV9jb250cm9sU3RhdGVDb3VudC0tOwotICAgIGlmICghaXQtPnZhbHVl
LnNpemUoKSkKKyAgICBpZiAoIWl0LT5zZWNvbmQuc2l6ZSgpKQogICAgICAgICBtX3N0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzLnJlbW92ZShpdCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQpAQCAtMjcx
LDEwICsyNzEsMTAgQEAgVmVjdG9yPFN0cmluZz4gU2F2ZWRGb3JtU3RhdGU6OmdldFJlZmVyZW5j
ZWRGaWxlUGF0aHMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJuOwogICAg
IGZvciAoRm9ybUVsZW1lbnRTdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzLmJlZ2luKCk7IGl0ICE9IG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgY29uc3QgRm9ybUVsZW1lbnRLZXkmIGtleSA9IGl0LT5r
ZXk7CisgICAgICAgIGNvbnN0IEZvcm1FbGVtZW50S2V5JiBrZXkgPSBpdC0+Zmlyc3Q7CiAgICAg
ICAgIGlmIChBdG9taWNTdHJpbmcoa2V5LnR5cGUoKSkgIT0gQXRvbWljU3RyaW5nKCJmaWxlIikp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY29uc3QgRGVxdWU8Rm9ybUNvbnRyb2xT
dGF0ZT4mIHF1ZXVlID0gaXQtPnZhbHVlOworICAgICAgICBjb25zdCBEZXF1ZTxGb3JtQ29udHJv
bFN0YXRlPiYgcXVldWUgPSBpdC0+c2Vjb25kOwogICAgICAgICBmb3IgKERlcXVlPEZvcm1Db250
cm9sU3RhdGU+Ojpjb25zdF9pdGVyYXRvciBxdWVJdGVyYXRvciA9IHF1ZXVlLmJlZ2luKCk7IHF1
ZUl0ZXJhdG9yICE9IHF1ZXVlLmVuZCgpOyArK3F1ZUl0ZXJhdG9yKSB7CiAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHNlbGVjdGVkRmlsZXMgPSBIVE1MSW5w
dXRFbGVtZW50OjpmaWxlc0Zyb21GaWxlSW5wdXRGb3JtQ29udHJvbFN0YXRlKCpxdWVJdGVyYXRv
cik7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlbGVjdGVkRmlsZXMuc2l6
ZSgpOyArK2kpCkBAIC0zNDksMTIgKzM0OSwxMiBAQCBBdG9taWNTdHJpbmcgRm9ybUtleUdlbmVy
YXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJiBjbwog
ICAgIH0KICAgICBGb3JtVG9LZXlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9mb3JtVG9LZXlN
YXAuZmluZChmb3JtKTsKICAgICBpZiAoaXQgIT0gbV9mb3JtVG9LZXlNYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAg
U3RyaW5nIHNpZ25hdHVyZSA9IGZvcm1TaWduYXR1cmUoKmZvcm0pOwogICAgIEFTU0VSVCghc2ln
bmF0dXJlLmlzTnVsbCgpKTsKICAgICBGb3JtU2lnbmF0dXJlVG9OZXh0SW5kZXhNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2Zvcm1TaWduYXR1cmVUb05leHRJbmRleE1hcC5hZGQoc2lnbmF0dXJl
LCAwKTsKLSAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7
CisgICAgdW5zaWduZWQgbmV4dEluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQrKzsKIAog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZChzaWduYXR1cmUp
OwpAQCAtNDA1LDggKzQwNSw4IEBAIFBhc3NPd25QdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9y
bVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBzdGF0ZU1hcC0+YWRkKGtleUdlbmVyYXRvci0+Zm9ybUtleSgqY29udHJvbCkuaW1wbCgpLCBu
dWxscHRyKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNhdmVkRm9ybVN0YXRlOjpjcmVhdGUoKTsKLSAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5hbWUo
KSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gU2F2ZWRGb3JtU3RhdGU6OmNyZWF0
ZSgpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+YXBwZW5kQ29udHJvbFN0YXRl
KGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRy
b2xTdGF0ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwLnJlbGVhc2UoKTsKIH0KQEAg
LTQxOCw4ICs0MTgsOCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Zm9ybUVsZW1l
bnRzU3RhdGUoKSBjb25zdAogICAgIHN0YXRlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuc2l6ZSgpICogNCk7CiAgICAgc3RhdGVWZWN0b3IuYXBw
ZW5kKGZvcm1TdGF0ZVNpZ25hdHVyZSgpKTsKICAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IHN0YXRlTWFwLT5iZWdpbigpOyBpdCAhPSBzdGF0ZU1hcC0+ZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKGl0LT5rZXkuZ2V0KCkpOwot
ICAgICAgICBpdC0+dmFsdWUtPnNlcmlhbGl6ZVRvKHN0YXRlVmVjdG9yKTsKKyAgICAgICAgc3Rh
dGVWZWN0b3IuYXBwZW5kKGl0LT5maXJzdC5nZXQoKSk7CisgICAgICAgIGl0LT5zZWNvbmQtPnNl
cmlhbGl6ZVRvKHN0YXRlVmVjdG9yKTsKICAgICB9CiAgICAgYm9vbCBoYXNPbmx5U2lnbmF0dXJl
ID0gc3RhdGVWZWN0b3Iuc2l6ZSgpID09IDE7CiAgICAgaWYgKGhhc09ubHlTaWduYXR1cmUpCkBA
IC00NDEsOCArNDQxLDggQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0
YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWwKICAgICBTYXZlZEZvcm1T
dGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5
R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2
ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7
Ci0gICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IGl0LT52YWx1ZS0+dGFrZUNvbnRyb2xTdGF0
ZShjb250cm9sLm5hbWUoKSwgY29udHJvbC50eXBlKCkpOwotICAgIGlmIChpdC0+dmFsdWUtPmlz
RW1wdHkoKSkKKyAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0gaXQtPnNlY29uZC0+dGFrZUNv
bnRyb2xTdGF0ZShjb250cm9sLm5hbWUoKSwgY29udHJvbC50eXBlKCkpOworICAgIGlmIChpdC0+
c2Vjb25kLT5pc0VtcHR5KCkpCiAgICAgICAgIG1fc2F2ZWRGb3JtU3RhdGVNYXAucmVtb3ZlKGl0
KTsKICAgICByZXR1cm4gc3RhdGU7CiB9CkBAIC01MTEsNyArNTExLDcgQEAgVmVjdG9yPFN0cmlu
Zz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHN0YXQKICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBtYXA7CiAgICAgZm9ybVN0YXRlc0Zy
b21TdGF0ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsKICAgICBmb3IgKFNhdmVkRm9ybVN0YXRl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBtYXAuZW5kKCk7ICsr
aXQpCi0gICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoKSk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+c2Vjb25kLT5nZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAxZWNiNjQ0Y2ExYjYzMDgwN2FkNjZhOTc0NGUz
ZGYzMzE0ZmVhZjQ2Li45MWUxOGEzZmJkZjJkODdhNmUwNzk0ZTdjYjJiNzFiNjRmOGFiOWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmluZyYg
bmFtZSkKIAogdm9pZCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZTo6YXBwZW5kKE5vZGVDYWNoZU1h
cCYgbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAg
ICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+
JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgaWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8
RWxlbWVudCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggZDA4MWUyNDkwNWEw
YWQ1OWU3NGU1ZGMwNWM3NDUxMDg2YTY4NGY0YS4uYjkxYWU1MDZlY2Y3OWUzZDYyZmUxN2U0Mzc3
OTkzZmQzYzE0NmMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJHTFNoYXJlZE9iamVjdCogV2Vi
R0xGcmFtZWJ1ZmZlcjo6Z2V0QXR0YWNobWVudE9iamVjdChHQzNEZW51bSBhdHRhY2htZW50KSBj
bwogV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xBdHRhY2htZW50KiBXZWJHTEZyYW1lYnVmZmVyOjpn
ZXRBdHRhY2htZW50KEdDM0RlbnVtIGF0dGFjaG1lbnQpIGNvbnN0CiB7CiAgICAgY29uc3QgQXR0
YWNobWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F0dGFjaG1lbnRzLmZpbmQoYXR0YWNo
bWVudCk7Ci0gICAgcmV0dXJuIChpdCAhPSBtX2F0dGFjaG1lbnRzLmVuZCgpKSA/IGl0LT52YWx1
ZS5nZXQoKSA6IDA7CisgICAgcmV0dXJuIChpdCAhPSBtX2F0dGFjaG1lbnRzLmVuZCgpKSA/IGl0
LT5zZWNvbmQuZ2V0KCkgOiAwOwogfQogCiB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnJlbW92ZUF0
dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcihHQzNEZW51bSBhdHRhY2htZW50KQpAQCAtMzY3
LDkgKzM2Nyw5IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6cmVtb3ZlQXR0YWNobWVudEZyb21C
b3VuZEZyYW1lYnVmZmVyKFdlYkdMU2hhcmVkT2JqZWN0KiBhCiAgICAgd2hpbGUgKGNoZWNrTW9y
ZSkgewogICAgICAgICBjaGVja01vcmUgPSBmYWxzZTsKICAgICAgICAgZm9yIChBdHRhY2htZW50
TWFwOjppdGVyYXRvciBpdCA9IG1fYXR0YWNobWVudHMuYmVnaW4oKTsgaXQgIT0gbV9hdHRhY2ht
ZW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgV2ViR0xBdHRhY2htZW50KiBhdHRhY2ht
ZW50T2JqZWN0ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgV2ViR0xBdHRhY2htZW50
KiBhdHRhY2htZW50T2JqZWN0ID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChh
dHRhY2htZW50T2JqZWN0LT5pc1NoYXJlZE9iamVjdChhdHRhY2htZW50KSkgewotICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGF0dGFjaG1lbnRUeXBlID0gaXQtPmtleTsKKyAgICAgICAgICAgICAg
ICBHQzNEZW51bSBhdHRhY2htZW50VHlwZSA9IGl0LT5maXJzdDsKICAgICAgICAgICAgICAgICBh
dHRhY2htZW50T2JqZWN0LT51bmF0dGFjaChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCks
IGF0dGFjaG1lbnRUeXBlKTsKICAgICAgICAgICAgICAgICByZW1vdmVBdHRhY2htZW50RnJvbUJv
dW5kRnJhbWVidWZmZXIoYXR0YWNobWVudFR5cGUpOwogICAgICAgICAgICAgICAgIGNoZWNrTW9y
ZSA9IHRydWU7CkBAIC00MTksOCArNDE5LDggQEAgR0MzRGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6
Y2hlY2tTdGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICBib29sIGhhdmVTdGVu
Y2lsID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlRGVwdGhTdGVuY2lsID0gZmFsc2U7CiAgICAgZm9y
IChBdHRhY2htZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXR0YWNobWVudHMuYmVnaW4o
KTsgaXQgIT0gbV9hdHRhY2htZW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICBXZWJHTEF0dGFj
aG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgIGlmICghaXNBdHRh
Y2htZW50Q29tcGxldGUoYXR0YWNobWVudCwgaXQtPmtleSwgcmVhc29uKSkKKyAgICAgICAgV2Vi
R0xBdHRhY2htZW50KiBhdHRhY2htZW50ID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgaWYg
KCFpc0F0dGFjaG1lbnRDb21wbGV0ZShhdHRhY2htZW50LCBpdC0+Zmlyc3QsIHJlYXNvbikpCiAg
ICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVDsKICAgICAgICAgaWYgKCFhdHRhY2htZW50LT5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgICAgICpyZWFzb24gPSAiYXR0YWNobWVudCBpcyBub3QgdmFsaWQiOwpAQCAtNDMwLDcg
KzQzMCw3IEBAIEdDM0RlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNo
YXIqKiByZWFzb24pIGNvbnN0CiAgICAgICAgICAgICAqcmVhc29uID0gImF0dGFjaG1lbnQgaXMg
YW4gdW5zdXBwb3J0ZWQgZm9ybWF0IjsKICAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICB9Ci0gICAg
ICAgIHN3aXRjaCAoaXQtPmtleSkgeworICAgICAgICBzd2l0Y2ggKGl0LT5maXJzdCkgewogICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UOgogICAgICAgICAg
ICAgaGF2ZURlcHRoID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDg4LDcgKzQ4OCw3
IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1ZmZlcigpIGNvbnN0CiB2b2lk
IFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzZCwgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAgICAgZm9yIChBdHRhY2htZW50
TWFwOjppdGVyYXRvciBpdCA9IG1fYXR0YWNobWVudHMuYmVnaW4oKTsgaXQgIT0gbV9hdHRhY2ht
ZW50cy5lbmQoKTsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5vbkRldGFjaGVkKGNvbnRleHQz
ZCk7CisgICAgICAgIGl0LT5zZWNvbmQtPm9uRGV0YWNoZWQoY29udGV4dDNkKTsKIAogICAgIGNv
bnRleHQzZC0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKIH0KQEAgLTQ5OSw4ICs0OTksOCBA
QCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0Nv
bnRleHQzRCogZzNkLCBjb25zdCBjaGFyKgogICAgIEdDM0RiaXRmaWVsZCBtYXNrID0gMDsKIAog
ICAgIGZvciAoQXR0YWNobWVudE1hcDo6aXRlcmF0b3IgaXQgPSBtX2F0dGFjaG1lbnRzLmJlZ2lu
KCk7IGl0ICE9IG1fYXR0YWNobWVudHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgR0MzRGVudW0g
YXR0YWNobWVudFR5cGUgPSBpdC0+a2V5OwotICAgICAgICBXZWJHTEF0dGFjaG1lbnQqIGF0dGFj
aG1lbnQgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIEdDM0RlbnVtIGF0dGFjaG1lbnRUeXBl
ID0gaXQtPmZpcnN0OworICAgICAgICBXZWJHTEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+
c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWF0dGFjaG1lbnQtPmlzSW5pdGlhbGl6ZWQoKSkK
ICAgICAgICAgICAgbWFzayB8PSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlBdHRh
Y2htZW50VHlwZShhdHRhY2htZW50VHlwZSk7CiAgICAgfQpAQCAtNTcxLDggKzU3MSw4IEBAIGJv
b2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRzKEdyYXBoaWNzQ29udGV4
dDNEKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgICAgIGczZC0+ZGlzYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6RElUSEVSKTsKIAogICAgIGZvciAoQXR0YWNobWVudE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2F0dGFjaG1lbnRzLmJlZ2luKCk7IGl0ICE9IG1fYXR0YWNobWVudHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgR0MzRGVudW0gYXR0YWNobWVudFR5cGUgPSBpdC0+a2V5OwotICAgICAgICBXZWJH
TEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIEdDM0Rl
bnVtIGF0dGFjaG1lbnRUeXBlID0gaXQtPmZpcnN0OworICAgICAgICBXZWJHTEF0dGFjaG1lbnQq
IGF0dGFjaG1lbnQgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBHQzNEYml0ZmllbGQgYml0
cyA9IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUF0dGFjaG1lbnRUeXBlKGF0dGFj
aG1lbnRUeXBlKTsKICAgICAgICAgaWYgKGJpdHMgJiBtYXNrKQogICAgICAgICAgICAgYXR0YWNo
bWVudC0+c2V0SW5pdGlhbGl6ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggZjQ3MDhmYzM4N2RjZTRlZDI0NmY2ZWFh
NDI4MGU5YTg5ZTI2NWUxMS4uODUyMjI1MzhiNGQzZDdlOTZmZDNjZTllM2JkMGM5MWFmMzE5OGM3
OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkKQEAgLTEzMTcsNyArMTMxNyw3IEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xp
bmUoIiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAlcztcbiIgJSBpdF9uYW1lKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIu
bmV3bGluZSgiICAgICAgICAlcyA9IG9iamVjdC0+ZmluZChcIiVzXCIpO1xuIiAlIChpdF9uYW1l
LCBwcm9wX2RhdGEucFsibmFtZSJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgQVNTRVJUKCVzICE9IG9i
amVjdC0+ZW5kKCkpO1xuIiAlIGl0X25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgICAgICVzKCVzLT52YWx1
ZS5nZXQoKSk7XG4iICUgKHByb3BfZGF0YS5wYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3ZhbGlkYXRv
cl9jYWxsX3RleHQoKSwgaXRfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgICAgICVzKCVzLT5zZWNvbmQu
Z2V0KCkpO1xuIiAlIChwcm9wX2RhdGEucGFyYW1fdHlwZV9iaW5kaW5nLmdldF92YWxpZGF0b3Jf
Y2FsbF90ZXh0KCksIGl0X25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIH1cbiIpCiAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsb3NlZF9maWVsZF9zZXQ6CkBAIC0xMzI5LDcg
KzEzMjksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgJXM7XG4iICUgaXRfbmFtZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgJXMg
PSBvYmplY3QtPmZpbmQoXCIlc1wiKTtcbiIgJSAoaXRfbmFtZSwgcHJvcF9kYXRhLnBbIm5hbWUi
XSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dy
aXRlci5uZXdsaW5lKCIgICAgICAgIGlmICglcyAhPSBvYmplY3QtPmVuZCgpKSB7XG4iICUgaXRf
bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jf
d3JpdGVyLm5ld2xpbmUoIiAgICAgICAgICAgICVzKCVzLT52YWx1ZS5nZXQoKSk7XG4iICUgKHBy
b3BfZGF0YS5wYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3ZhbGlkYXRvcl9jYWxsX3RleHQoKSwgaXRf
bmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9y
X3dyaXRlci5uZXdsaW5lKCIgICAgICAgICAgICAlcyglcy0+c2Vjb25kLmdldCgpKTtcbiIgJSAo
cHJvcF9kYXRhLnBhcmFtX3R5cGVfYmluZGluZy5nZXRfdmFsaWRhdG9yX2NhbGxfdGV4dCgpLCBp
dF9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbG9z
ZWRfZmllbGRfc2V0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVz
Q291bnQ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk
YXRvcl93cml0ZXIubmV3bGluZSgiICAgICAgICB9XG4iKQpAQCAtMjAwNyw3ICsyMDA3LDcgQEAg
JG1lc3NhZ2VIYW5kbGVycwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKCgqdGhpcyku
Kml0LT52YWx1ZSkoY2FsbElkLCBtZXNzYWdlT2JqZWN0LmdldCgpKTsKKyAgICAoKCp0aGlzKS4q
aXQtPnNlY29uZCkoY2FsbElkLCBtZXNzYWdlT2JqZWN0LmdldCgpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgY29uc3QgY2hhciogY29tbWFuZE5hbWUs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3RvY29sRXJyb3JzLCBFcnJvclN0cmluZyBp
bnZvY2F0aW9uRXJyb3IpCkBAIC0yMDkxLDcgKzIwOTEsNyBAQCBSIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVySW1wbDo6Z2V0UHJvcGVydHlWYWx1ZUltcGwoSW5zcGVjdG9yT2JqZWN0KiBvYmpl
Y3QsCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKLSAgICBpZiAoIWFzX21ldGhvZCh2
YWx1ZUl0ZXJhdG9yLT52YWx1ZS5nZXQoKSwgJnZhbHVlKSkKKyAgICBpZiAoIWFzX21ldGhvZCh2
YWx1ZUl0ZXJhdG9yLT5zZWNvbmQuZ2V0KCksICZ2YWx1ZSkpCiAgICAgICAgIHByb3RvY29sRXJy
b3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyBoYXMgd3Jvbmcg
dHlwZS4gSXQgbXVzdCBiZSAnJXMnLiIsIG5hbWUudXRmOCgpLmRhdGEoKSwgdHlwZV9uYW1lKSk7
CiAgICAgZWxzZQogICAgICAgICBpZiAodmFsdWVGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggOGU2YzE4MDBkMzUyODI2NGU1MzEzNGVk
OGRjNjFiODNlZjg4Yjk1Ni4uYzAzZGNlNDcxNGRmMTJjYTU1ZDU4ZWJhYjJiODk5YTJkYzcxMWNl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAg
LTIzNywyNCArMjM3LDI0IEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3du
UHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld0xpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRGlmZlRhYmxl
OjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZlY3Rvcjxz
aXplX3Q+KCkpLml0ZXJhdG9yOwotICAgICAgICBpdC0+dmFsdWUuYXBwZW5kKGkpOworICAgICAg
ICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG9sZExpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBp
dCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLml0
ZXJhdG9yOwotICAgICAgICBpdC0+dmFsdWUuYXBwZW5kKGkpOworICAgICAgICBpdC0+c2Vjb25k
LmFwcGVuZChpKTsKICAgICB9CiAKICAgICBmb3IgKERpZmZUYWJsZTo6aXRlcmF0b3IgbmV3SXQg
PSBuZXdUYWJsZS5iZWdpbigpOyBuZXdJdCAhPSBuZXdUYWJsZS5lbmQoKTsgKytuZXdJdCkgewot
ICAgICAgICBpZiAobmV3SXQtPnZhbHVlLnNpemUoKSAhPSAxKQorICAgICAgICBpZiAobmV3SXQt
PnNlY29uZC5zaXplKCkgIT0gMSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIERp
ZmZUYWJsZTo6aXRlcmF0b3Igb2xkSXQgPSBvbGRUYWJsZS5maW5kKG5ld0l0LT5rZXkpOwotICAg
ICAgICBpZiAob2xkSXQgPT0gb2xkVGFibGUuZW5kKCkgfHwgb2xkSXQtPnZhbHVlLnNpemUoKSAh
PSAxKQorICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIG9sZEl0ID0gb2xkVGFibGUuZmluZChu
ZXdJdC0+Zmlyc3QpOworICAgICAgICBpZiAob2xkSXQgPT0gb2xkVGFibGUuZW5kKCkgfHwgb2xk
SXQtPnNlY29uZC5zaXplKCkgIT0gMSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IG5ld01hcFtuZXdJdC0+dmFsdWVbMF1dID0gbWFrZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVl
WzBdXS5nZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsKLSAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1
ZVswXV0gPSBtYWtlX3BhaXIob2xkTGlzdFtvbGRJdC0+dmFsdWVbMF1dLmdldCgpLCBuZXdJdC0+
dmFsdWVbMF0pOworICAgICAgICBuZXdNYXBbbmV3SXQtPnNlY29uZFswXV0gPSBtYWtlX3BhaXIo
bmV3TGlzdFtuZXdJdC0+c2Vjb25kWzBdXS5nZXQoKSwgb2xkSXQtPnNlY29uZFswXSk7CisgICAg
ICAgIG9sZE1hcFtvbGRJdC0+c2Vjb25kWzBdXSA9IG1ha2VfcGFpcihvbGRMaXN0W29sZEl0LT5z
ZWNvbmRbMF1dLmdldCgpLCBuZXdJdC0+c2Vjb25kWzBdKTsKICAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgbmV3TGlzdC5zaXplKCkgPiAwICYmIGkgPCBuZXdMaXN0LnNpemUoKSAtIDE7
ICsraSkgewpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBh
dGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yCiAKICAg
ICAvLyAyLiBQYXRjaCBub2RlcyBtYXJrZWQgZm9yIG1lcmdlLgogICAgIGZvciAoSGFzaE1hcDxE
aWdlc3QqLCBEaWdlc3QqPjo6aXRlcmF0b3IgaXQgPSBtZXJnZXMuYmVnaW4oKTsgaXQgIT0gbWVy
Z2VzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICghaW5uZXJQYXRjaE5vZGUoaXQtPnZhbHVl
LCBpdC0+a2V5LCBlYykpCisgICAgICAgIGlmICghaW5uZXJQYXRjaE5vZGUoaXQtPnNlY29uZCwg
aXQtPmZpcnN0LCBlYykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00
NjMsNyArNDYzLDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OnJlbW92ZUNoaWxkQW5kTW92ZVRv
TmV3KERpZ2VzdCogb2xkRGlnZXN0LCBFeGNlcHRpb25Db2RlJgogICAgIC8vIGhpZ2ggdGhhdCBp
dCB3aWxsIGdldCBtZXJnZWQgYmFjayBpbnRvIHRoZSBvcmlnaW5hbCBET00gZHVyaW5nIHRoZSBm
dXJ0aGVyIHBhdGNoaW5nLgogICAgIFVudXNlZE5vZGVzTWFwOjppdGVyYXRvciBpdCA9IG1fdW51
c2VkTm9kZXNNYXAuZmluZChvbGREaWdlc3QtPm1fc2hhMSk7CiAgICAgaWYgKGl0ICE9IG1fdW51
c2VkTm9kZXNNYXAuZW5kKCkpIHsKLSAgICAgICAgRGlnZXN0KiBuZXdEaWdlc3QgPSBpdC0+dmFs
dWU7CisgICAgICAgIERpZ2VzdCogbmV3RGlnZXN0ID0gaXQtPnNlY29uZDsKICAgICAgICAgTm9k
ZSogbmV3Tm9kZSA9IG5ld0RpZ2VzdC0+bV9ub2RlOwogICAgICAgICBpZiAoIW1fZG9tRWRpdG9y
LT5yZXBsYWNlQ2hpbGQobmV3Tm9kZS0+cGFyZW50Tm9kZSgpLCBvbGROb2RlLCBuZXdOb2RlLCBl
YykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDFkNWUzMTc1N2NkODZiM2Iy
MmI4ZmVkYjMxYWJjZDVlMDJlZmY0NzQuLjUyZWM3NDkwYTA3N2I1Y2ZkNGYzYjA4NWQyODc3YmM4
NzBjYzA3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCkBAIC04MiwxMCArODIsMTAgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcklkKGludCBpZCkKIHsKICAgICBJZFRv
SW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZmlu
ZChpZCk7CiAgICAgaWYgKGl0ICE9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgpKQotICAgICAg
ICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKICAgICBmb3Ig
KFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5iZWdpbigp
OyBpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQt
PnZhbHVlID09IGlkKQotICAgICAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9yKGl0LT5r
ZXkpOworICAgICAgICBpZiAoaXQtPnNlY29uZCA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBp
bmplY3RlZFNjcmlwdEZvcihpdC0+Zmlyc3QpOwogICAgIH0KICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQoKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgaW50IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRJZEZvcihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB7CiAgICAgU2Ny
aXB0U3RhdGVUb0lkOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0U3RhdGVUb0lkLmZpbmQoc2NyaXB0
U3RhdGUpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAgICAgaW50IGlk
ID0gbV9uZXh0SW5qZWN0ZWRTY3JpcHRJZCsrOwogICAgIG1fc2NyaXB0U3RhdGVUb0lkLnNldChz
Y3JpcHRTdGF0ZSwgaWQpOwogICAgIHJldHVybiBpZDsKQEAgLTEyNiwxMSArMTI2LDExIEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERPTVdp
bmRvdyogd2luZG93KQogICAgIFZlY3Rvcjxsb25nPiBpZHNUb1JlbW92ZTsKICAgICBJZFRvSW5q
ZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgp
OwogICAgIGZvciAoSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdCA9IG1faWRUb0lu
amVjdGVkU2NyaXB0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUgPSBpdC0+dmFsdWUuc2NyaXB0U3RhdGUoKTsKKyAgICAgICAgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gaXQtPnNlY29uZC5zY3JpcHRTdGF0ZSgpOwogICAgICAg
ICBpZiAod2luZG93ICE9IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQucmVtb3ZlKHNj
cmlwdFN0YXRlKTsKLSAgICAgICAgaWRzVG9SZW1vdmUuYXBwZW5kKGl0LT5rZXkpOworICAgICAg
ICBpZHNUb1JlbW92ZS5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICB9CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGlkc1RvUmVtb3ZlLnNpemUoKTsgaSsrKQpAQCAtMTM5LDcgKzEzOSw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERP
TVdpbmRvdyogd2luZG93KQogICAgIC8vIE5vdyByZW1vdmUgc2NyaXB0IHN0YXRlcyB0aGF0IGhh
dmUgaWQgYnV0IG5vIGluamVjdGVkIHNjcmlwdC4KICAgICBWZWN0b3I8U2NyaXB0U3RhdGUqPiBz
Y3JpcHRTdGF0ZXNUb1JlbW92ZTsKICAgICBmb3IgKFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3Ig
aXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5iZWdpbigpOyBpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5l
bmQoKTsgKytpdCkgewotICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBpdC0+a2V5
OworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBpdC0+Zmlyc3Q7CiAgICAgICAg
IGlmICh3aW5kb3cgPT0gZG9tV2luZG93RnJvbVNjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKSkKICAg
ICAgICAgICAgIHNjcmlwdFN0YXRlc1RvUmVtb3ZlLmFwcGVuZChzY3JpcHRTdGF0ZSk7CiAgICAg
fQpAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nl
c3NJbnNwZWN0ZWRXb3JrZXJDb250ZXh0KFNjcmlwdFN0YXRlKikKIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkK
IHsKICAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9J
bmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsg
KytpdCkKLSAgICAgICAgaXQtPnZhbHVlLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7
CisgICAgICAgIGl0LT5zZWNvbmQucmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwKTsKIH0K
IAogU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQpA
QCAtMTczLDkgKzE3Myw5IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjCiB7CiAgICAgU2NyaXB0
U3RhdGVUb0lkOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0U3RhdGVUb0lkLmZpbmQoaW5zcGVjdGVk
U2NyaXB0U3RhdGUpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKSkgewot
ICAgICAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0MSA9IG1faWRUb0luamVj
dGVkU2NyaXB0LmZpbmQoaXQtPnZhbHVlKTsKKyAgICAgICAgSWRUb0luamVjdGVkU2NyaXB0TWFw
OjppdGVyYXRvciBpdDEgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5maW5kKGl0LT5zZWNvbmQpOwog
ICAgICAgICBpZiAoaXQxICE9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGl0MS0+dmFsdWU7CisgICAgICAgICAgICByZXR1cm4gaXQxLT5zZWNvbmQ7CiAg
ICAgfQogCiAgICAgaWYgKCFtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2soaW5zcGVjdGVkU2Ny
aXB0U3RhdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKaW5kZXggZjg1YmM0YTQyNDk1MjM2MWI0MWE5ZjBmMGUxNDJlZmVhZWYwZDNlMC4uNTNh
MzUzZjkwZDgyZDFhNWY2NTcwMDE2MGU0MGJmNmM1YWVmZWRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODcsMTAgKzE4NywxMCBA
QCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hl
ZCkKIAogICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9ydWxl
TWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJlbnRN
YXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUudG90YWxU
aW1lICs9IG1hdGNoVGltZU1zOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmhpdHMg
Kz0gMTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQudG90YWxUaW1lICs9IG1hdGNo
VGltZU1zOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5oaXRzICs9IDE7CiAgICAg
ICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tYXRj
aGVzICs9IDE7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5tYXRjaGVzICs9
IDE7CiAgICAgfQogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JQ
cm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUoKQogICAgIGlmIChpdCA9PSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpdC0+dmFsdWUudG90YWxUaW1l
ICs9IHByb2Nlc3NpbmdUaW1lTXM7CisgICAgaXQtPnNlY29uZC50b3RhbFRpbWUgKz0gcHJvY2Vz
c2luZ1RpbWVNczsKIH0KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclBy
b2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdApAQCAtMjEx
LDEyICsyMTEsMTIgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2Zp
bGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QKICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiA+IHNl
bGVjdG9yUHJvZmlsZURhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JQcm9maWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICBmb3IgKFJ1bGVNYXRjaGluZ1N0
YXRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYmVnaW4oKTsg
aXQgIT0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5lbmQoKTsgKytpdCkgewogICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+IGVudHJ5ID0gVHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0
U2VsZWN0b3IoaXQtPnZhbHVlLnNlbGVjdG9yKQotICAgICAgICAgICAgLnNldFVybChpdC0+dmFs
dWUudXJsKQotICAgICAgICAgICAgLnNldExpbmVOdW1iZXIoaXQtPnZhbHVlLmxpbmVOdW1iZXIp
Ci0gICAgICAgICAgICAuc2V0VGltZShpdC0+dmFsdWUudG90YWxUaW1lKQotICAgICAgICAgICAg
LnNldEhpdENvdW50KGl0LT52YWx1ZS5oaXRzKQotICAgICAgICAgICAgLnNldE1hdGNoQ291bnQo
aXQtPnZhbHVlLm1hdGNoZXMpOworICAgICAgICAgICAgLnNldFNlbGVjdG9yKGl0LT5zZWNvbmQu
c2VsZWN0b3IpCisgICAgICAgICAgICAuc2V0VXJsKGl0LT5zZWNvbmQudXJsKQorICAgICAgICAg
ICAgLnNldExpbmVOdW1iZXIoaXQtPnNlY29uZC5saW5lTnVtYmVyKQorICAgICAgICAgICAgLnNl
dFRpbWUoaXQtPnNlY29uZC50b3RhbFRpbWUpCisgICAgICAgICAgICAuc2V0SGl0Q291bnQoaXQt
PnNlY29uZC5oaXRzKQorICAgICAgICAgICAgLnNldE1hdGNoQ291bnQoaXQtPnNlY29uZC5tYXRj
aGVzKTsKICAgICAgICAgc2VsZWN0b3JQcm9maWxlRGF0YS0+YWRkSXRlbShlbnRyeS5yZWxlYXNl
KCkpOwogICAgIH0KIApAQCAtNTY4LDcgKzU2OCw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
CiAgICAgaWYgKGl0ID09IG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgZm9yY2VkUHNldWRvU3RhdGUgPSBpdC0+
dmFsdWU7CisgICAgdW5zaWduZWQgZm9yY2VkUHNldWRvU3RhdGUgPSBpdC0+c2Vjb25kOwogICAg
IHN3aXRjaCAocHNldWRvVHlwZSkgewogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2
ZToKICAgICAgICAgcmV0dXJuIGZvcmNlZFBzZXVkb1N0YXRlICYgUHNldWRvQWN0aXZlOwpAQCAt
ODA5LDcgKzgwOSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAKICAgICB1bnNpZ25lZCBm
b3JjZWRQc2V1ZG9TdGF0ZSA9IGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soZm9yY2VkUHNldWRvQ2xh
c3Nlcy5nZXQoKSk7CiAgICAgTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTo6aXRlcmF0b3IgaXQg
PSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUuZmluZChub2RlSWQpOwotICAgIHVuc2lnbmVk
IGN1cnJlbnRGb3JjZWRQc2V1ZG9TdGF0ZSA9IGl0ID09IG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9T
dGF0ZS5lbmQoKSA/IDAgOiBpdC0+dmFsdWU7CisgICAgdW5zaWduZWQgY3VycmVudEZvcmNlZFBz
ZXVkb1N0YXRlID0gaXQgPT0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmVuZCgpID8gMCA6
IGl0LT5zZWNvbmQ7CiAgICAgYm9vbCBuZWVkU3R5bGVSZWNhbGMgPSBmb3JjZWRQc2V1ZG9TdGF0
ZSAhPSBjdXJyZW50Rm9yY2VkUHNldWRvU3RhdGU7CiAgICAgaWYgKCFuZWVkU3R5bGVSZWNhbGMp
CiAgICAgICAgIHJldHVybjsKQEAgLTkxNiw3ICs5MTYsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQo
RWxlbQogICAgICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldC5nZXQoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgp
OwogfQogCiBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKQEAgLTEwMTAsNyArMTAxMCw3IEBAIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
RXJyb3JTdHJpbmcqIGVycm9yCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBzdHlsZSBzaGVl
dCB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJl
dHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAK
IFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQpCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGl0ID09IG1fbm9kZVRv
SW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pZFRv
SW5zcGVjdG9yU3R5bGVTaGVldC5yZW1vdmUoaXQtPnZhbHVlLT5pZCgpKTsKKyAgICBtX2lkVG9J
bnNwZWN0b3JTdHlsZVNoZWV0LnJlbW92ZShpdC0+c2Vjb25kLT5pZCgpKTsKICAgICBtX25vZGVU
b0luc3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKG5vZGUpOwogfQogCkBAIC0xMTU0LDcgKzExNTQs
NyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVs
ZW1lbnQpCiAgICAgaWYgKGl0ID09IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaXQtPnZhbHVlLT5kaWRNb2RpZnlFbGVtZW50QXR0cmli
dXRlKCk7CisgICAgaXQtPnNlY29uZC0+ZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwogfQog
CiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdHlsZVNoZWV0Q2hhbmdlZChJbnNwZWN0b3JTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0KQpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6cmVzZXRQc2V1ZG9TdGF0ZXMoKQogewogICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBk
b2N1bWVudHNUb0NoYW5nZTsKICAgICBmb3IgKE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU6Oml0
ZXJhdG9yIGl0ID0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmJlZ2luKCksIGVuZCA9IG1f
bm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9kb21BZ2VudC0+bm9kZUZvcklkKGl0
LT5rZXkpKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChtX2RvbUFnZW50
LT5ub2RlRm9ySWQoaXQtPmZpcnN0KSk7CiAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQt
Pm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50c1RvQ2hhbmdlLmFkZChlbGVt
ZW50LT5vd25lckRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggYzY0ZDg3MWI0MjIyMzA0OTZh
NDQ0OWU3NzlkNWFkMDUyOTJkOTNlZi4uYzEyYTU2YjBkMGYyMWQwYzQ4YTc4YWVkNTgwZGQxZGJl
OTdkYWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdENh
bAogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBk
b3VibGUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOworICAgIGRvdWJsZSBzdGFydFRpbWUgPSBpdC0+
c2Vjb25kOwogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIAogICAgIGRvdWJsZSBlbGFwc2VkID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzdGFydFRpbWU7CkBAIC0yMDAsNyArMjAw
LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWYKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5k
KCkpCiAgICAgICAgIGNvdW50ID0gMTsKICAgICBlbHNlIHsKLSAgICAgICAgY291bnQgPSBpdC0+
dmFsdWUgKyAxOworICAgICAgICBjb3VudCA9IGl0LT5zZWNvbmQgKyAxOwogICAgICAgICBtX2Nv
dW50cy5yZW1vdmUoaXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjIwODgzYWUxNmYzYjNjNzk1ODc1YWM2YzEyYTFi
MmJlYzMzMzgwMC4uZWQ0N2I1ZDBhMTczOTAyNTU5NjM0M2EwMjczZGJkYTFmMGUyNDM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00
NjksNyArNDY5LDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChpbnQgaWQp
CiAKICAgICBIYXNoTWFwPGludCwgTm9kZSo+OjppdGVyYXRvciBpdCA9IG1faWRUb05vZGUuZmlu
ZChpZCk7CiAgICAgaWYgKGl0ICE9IG1faWRUb05vZGUuZW5kKCkpCi0gICAgICAgIHJldHVybiBp
dC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogICAgIHJldHVybiAwOwogfQog
CkBAIC05MTUsOSArOTE1LDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW0KICAgICBTZWFyY2hS
ZXN1bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJ
ZCwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwogCiAgICAgZm9yIChMaXN0SGFz
aFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9
IHJlc3VsdENvbGxlY3Rvci5lbmQoKTsgKytpdCkKLSAgICAgICAgcmVzdWx0c0l0LT52YWx1ZS5h
cHBlbmQoKml0KTsKKyAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5kKCppdCk7CiAKLSAg
ICAqcmVzdWx0Q291bnQgPSByZXN1bHRzSXQtPnZhbHVlLnNpemUoKTsKKyAgICAqcmVzdWx0Q291
bnQgPSByZXN1bHRzSXQtPnNlY29uZC5zaXplKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxpbnQ+ID4mIG5vZGVJZHMpCkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBzaXplID0g
aXQtPnZhbHVlLnNpemUoKTsKKyAgICBpbnQgc2l6ZSA9IGl0LT5zZWNvbmQuc2l6ZSgpOwogICAg
IGlmIChmcm9tSW5kZXggPCAwIHx8IHRvSW5kZXggPiBzaXplIHx8IGZyb21JbmRleCA+PSB0b0lu
ZGV4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlkIHNlYXJjaCByZXN1bHQgcmFu
Z2UiOwogICAgICAgICByZXR1cm47CkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYKIAogICAgIG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKLSAgICAg
ICAgbm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ld
LmdldCgpKSk7CisgICAgICAgIG5vZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZCgoaXQtPnNlY29uZClbaV0uZ2V0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IGM0ZmNiODJiN2I2ZmEwZTJiOWE1M2JkNGZhYWM2MjM2MjlkMGJl
NWUuLjgwMzIyOTVkODk1ZTlkMjJhMmY4MGM1OThkOWU0NGQyNzQ3NGEwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTQwMiw4ICs0MDIsOCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgZWxzZSB7CiAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHhockJyZWFrcG9pbnRzID0gbV9zdGF0ZS0+Z2V0
T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtwb2ludHMpOwogICAgICAgICBm
b3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSB4aHJCcmVha3BvaW50cy0+YmVnaW4o
KTsgaXQgIT0geGhyQnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAo
dXJsLmNvbnRhaW5zKGl0LT5rZXkpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludFVSTCA9
IGl0LT5rZXk7CisgICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5zKGl0LT5maXJzdCkpIHsKKyAg
ICAgICAgICAgICAgICBicmVha3BvaW50VVJMID0gaXQtPmZpcnN0OwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGMzMmVhMjk4
NzZkZDllZTE3YmMyZTYxZTBkN2U2ODcwNmExMjUzNzcuLjkwYTBhOWU2MDkwZTBjMmMzOWQ3ODY5
ZjQwMmQ0MzJiM2EyYmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBET01TdG9yYWdl
UmVzb3VyY2VzTWFwOjppdGVyYXRvciBkb21TdG9yYWdlRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7
CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1
ZS0+dW5iaW5kKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnVuYmluZCgpOwogICAgIG1fZnJvbnRl
bmQgPSAwOwogICAgIGRpc2FibGUoMCk7CiB9CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogCiAgICAgRE9NU3RvcmFn
ZVJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7
CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5iaW5kKG1fZnJvbnRlbmQpOworICAgICAgICBpdC0+c2Vjb25kLT5iaW5kKG1fZnJvbnRlbmQp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyopCkBAIC0xNjUsOCArMTY1LDggQEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbAogICAgIEFTU0VS
VChzZWN1cml0eU9yaWdpbik7CiAgICAgRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3Ig
ZG9tU3RvcmFnZUVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRE9NU3RvcmFnZVJl
c291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBkb21T
dG9yYWdlRW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUtPmlzU2FtZU9yaWdpbkFu
ZFR5cGUoc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKSkKLSAgICAgICAgICAgIHJldHVy
biBpdC0+a2V5OworICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNTYW1lT3JpZ2luQW5kVHlwZShz
ZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT5m
aXJzdDsKICAgICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtMTc2LDE0ICsxNzYsMTQg
QEAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvckkKICAgICBET01TdG9yYWdlUmVzb3VyY2VzTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoc3RvcmFnZUlkKTsKICAgICBpZiAoaXQgPT0g
bV9yZXNvdXJjZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpdC0+dmFs
dWUuZ2V0KCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50OjpkaWRVc2VET01TdG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdl
QXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJhbWUqIGZyYW1lKQogewogICAgIERPTVN0b3Jh
Z2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGRvbVN0b3JhZ2VFbmQgPSBtX3Jlc291cmNlcy5lbmQo
KTsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytpdCkgewotICAgICAgICBpZiAo
aXQtPnZhbHVlLT5pc1NhbWVPcmlnaW5BbmRUeXBlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCBpc0xvY2FsU3RvcmFnZSkpCisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5pc1Nh
bWVPcmlnaW5BbmRUeXBlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBpc0xv
Y2FsU3RvcmFnZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTgsNyArMjE4
LDcgQEAgc2l6ZV90IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6bWVtb3J5Qnl0ZXNVc2VkQnlT
dG9yYWdlQ2FjaGUoKSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0gMDsKICAgICBmb3IgKERP
TVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIHNpemUgKz0gaXQt
PnZhbHVlLT5zdG9yYWdlQXJlYSgpLT5tZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCk7CisgICAgICAg
IHNpemUgKz0gaXQtPnNlY29uZC0+c3RvcmFnZUFyZWEoKS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNo
ZSgpOwogICAgIHJldHVybiBzaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggN2I4ZmNhNGQ0YWE2NTdiMjg5
YzI1MDNkODJhYWI0YTljYTBhNjc1Mi4uOThjOTM2M2FlNjk3ZDQ2ODM0ZWMzYjYxZDQzYTNlZWQ0
NDgwOWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogICAgIERhdGFiYXNlUmVzb3VyY2VzTWFw
OjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKERh
dGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5iaW5kKG1fZnJvbnRl
bmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmJpbmQobV9mcm9u
dGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKQEAgLTMzMyw4ICszMzMsOCBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIGRhdGFiYQogU3RyaW5nIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRhdGFiYXNlSWQo
RGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7
ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS0+ZGF0YWJhc2UoKSA9PSBkYXRhYmFzZSkK
LSAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgICAgICBpZiAoaXQtPnNlY29uZC0+ZGF0
YWJhc2UoKSA9PSBkYXRhYmFzZSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+Zmlyc3Q7CiAgICAg
fQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTM0Miw4ICszNDIsOCBAQCBTdHJpbmcgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJhc2VJZChEYXRhYmFzZSogZGF0YWJhc2UpCiBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlGaWxl
TmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIGZvciAoRGF0YWJhc2VSZXNvdXJj
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJj
ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS0+ZGF0YWJhc2UoKS0+Zmls
ZU5hbWUoKSA9PSBmaWxlTmFtZSkKLSAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7
CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5kYXRhYmFzZSgpLT5maWxlTmFtZSgpID09IGZpbGVO
YW1lKQorICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgfQogICAgIHJl
dHVybiAwOwogfQpAQCAtMzUzLDcgKzM1Myw3IEBAIERhdGFiYXNlKiBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkYXRhYmFzZUZvcklkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCkKICAgICBEYXRh
YmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGRhdGFiYXNl
SWQpOwogICAgIGlmIChpdCA9PSBtX3Jlc291cmNlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIGl0LT52YWx1ZS0+ZGF0YWJhc2UoKTsKKyAgICByZXR1cm4gaXQtPnNlY29u
ZC0+ZGF0YWJhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDVi
ODc2NGNlNDkwNmJkZTA3MWVjZjJlMWNkNTlhYzMzOTE4MzdjYTMuLjFiYzE2ZjIwZjNjNWIxZWU2
MDliNWMzZjE5YzQyMmU0OTZjODhmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI0OCw5ICsyNDgsOSBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBsaQogCiAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3BvaW50KGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uKTsKICAgICBmb3IgKFNjcmlwdHNNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmJlZ2luKCk7IGl0ICE9IG1fc2NyaXB0cy5lbmQoKTsg
KytpdCkgewotICAgICAgICBpZiAoIW1hdGNoZXMoaXQtPnZhbHVlLnVybCwgdXJsLCBpc1JlZ2V4
KSkKKyAgICAgICAgaWYgKCFtYXRjaGVzKGl0LT5zZWNvbmQudXJsLCB1cmwsIGlzUmVnZXgpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwg
aXQtPmtleSwgYnJlYWtwb2ludCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwg
aXQtPmZpcnN0LCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQogICAgICAgICAg
ICAgbG9jYXRpb25zLT5hZGRJdGVtKGxvY2F0aW9uKTsKICAgICB9CkBAIC0zMDIsOCArMzAyLDgg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3AKICAgICBCcmVha3BvaW50SWRUb0RlYnVnU2VydmVy
QnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0
b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmZpbmQoYnJlYWtw
b2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPT0gbV9i
cmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
SXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgKytpKQotICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigp
LnJlbW92ZUJyZWFrcG9pbnQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnZhbHVl
W2ldKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnU2VydmVyQnJlYWtwb2ludElk
c0l0ZXJhdG9yLT5zZWNvbmQuc2l6ZSgpOyArK2kpCisgICAgICAgIHNjcmlwdERlYnVnU2VydmVy
KCkucmVtb3ZlQnJlYWtwb2ludChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvci0+c2Vj
b25kW2ldKTsKICAgICBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnJl
bW92ZShkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvcik7CiB9CiAKQEAgLTMzMSw3ICsz
MzEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9y
IHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0SWQpOwogICAgIGlmIChzY3Jp
cHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFNj
cmlwdCYgc2NyaXB0ID0gc2NyaXB0SXRlcmF0b3ItPnZhbHVlOworICAgIFNjcmlwdCYgc2NyaXB0
ID0gc2NyaXB0SXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYnJlYWtwb2ludC5saW5lTnVtYmVy
IDwgc2NyaXB0LnN0YXJ0TGluZSB8fCBzY3JpcHQuZW5kTGluZSA8IGJyZWFrcG9pbnQubGluZU51
bWJlcikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlc29sdmVCcmVhawogICAgIEJyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
TWFwOjppdGVyYXRvciBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtw
b2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZmluZChicmVha3BvaW50SWQpOwogICAg
IGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9PSBtX2JyZWFrcG9pbnRJZFRv
RGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmVuZCgpKQogICAgICAgICBkZWJ1Z1NlcnZlckJyZWFr
cG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJ
ZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuaXRlcmF0b3I7Ci0gICAgZGVi
dWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnZhbHVlLmFwcGVuZChkZWJ1Z1NlcnZlckJy
ZWFrcG9pbnRJZCk7CisgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnNlY29u
ZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQpOwogCiAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpMb2NhdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNjcmlwdElkKHNjcmlwdElkKQpAQCAt
MzcwLDcgKzM3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250
ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzCiAKICAgICBTY3JpcHRzTWFw
OjppdGVyYXRvciBpdCA9IG1fc2NyaXB0cy5maW5kKHNjcmlwdElkKTsKICAgICBpZiAoaXQgIT0g
bV9zY3JpcHRzLmVuZCgpKQotICAgICAgICByZXN1bHRzID0gQ29udGVudFNlYXJjaFV0aWxzOjpz
ZWFyY2hJblRleHRCeUxpbmVzKGl0LT52YWx1ZS5zb3VyY2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZl
LCBpc1JlZ2V4KTsKKyAgICAgICAgcmVzdWx0cyA9IENvbnRlbnRTZWFyY2hVdGlsczo6c2VhcmNo
SW5UZXh0QnlMaW5lcyhpdC0+c2Vjb25kLnNvdXJjZSwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlz
UmVnZXgpOwogICAgIGVsc2UKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIg
KyBzY3JpcHRJZDsKIH0KQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
cwogewogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0
SWQpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkpCi0gICAgICAgICpzY3JpcHRTb3Vy
Y2UgPSBpdC0+dmFsdWUuc291cmNlOworICAgICAgICAqc2NyaXB0U291cmNlID0gaXQtPnNlY29u
ZC5zb3VyY2U7CiAgICAgZWxzZQogICAgICAgICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZvciBpZDog
IiArIHNjcmlwdElkOwogfQpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2Ny
aXB0CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50c0Nvb2tpZSA9IG1f
c3RhdGUtPmdldE9iamVjdChEZWJ1Z2dlckFnZW50U3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50
cyk7CiAgICAgZm9yIChJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGl0ID0gYnJlYWtwb2ludHND
b29raWUtPmJlZ2luKCk7IGl0ICE9IGJyZWFrcG9pbnRzQ29va2llLT5lbmQoKTsgKytpdCkgewot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50T2JqZWN0ID0gaXQtPnZh
bHVlLT5hc09iamVjdCgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50T2JqZWN0ID0gaXQtPnNlY29uZC0+YXNPYmplY3QoKTsKICAgICAgICAgYm9vbCBpc1JlZ2V4
OwogICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJpc1JlZ2V4IiwgJmlzUmVn
ZXgpOwogICAgICAgICBTdHJpbmcgdXJsOwpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcigibGluZU51
bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICBicmVha3BvaW50T2JqZWN0
LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50LmNvbHVtbk51bWJlcik7CiAg
ICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmJyZWFrcG9p
bnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmtleSwgc2NyaXB0SWQsIGJy
ZWFrcG9pbnQpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmlyc3QsIHNjcmlwdElkLCBicmVh
a3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQotICAgICAgICAgICAgbV9mcm9udGVuZC0+
YnJlYWtwb2ludFJlc29sdmVkKGl0LT5rZXksIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG1fZnJv
bnRlbmQtPmJyZWFrcG9pbnRSZXNvbHZlZChpdC0+Zmlyc3QsIGxvY2F0aW9uKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCmluZGV4IGVhMzM5OWVmNzMyZWExYmM0OTJiYTlkZWUwNDg5MTYzMmU1Mzk4MzUu
LjMzYjIxYjRmZGQxMmMxOTkyNWY0NWMzMzNhZWE3MDQ3MzdlYzZmODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAt
MzE5LDEyICszMTksMTIgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPiA+IG9iamVjdFN0b3JlcyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46
OmNyZWF0ZSgpOwogCiAgICAgICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3Rv
cmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGF0YWJhc2VNZXRhZGF0YS5vYmplY3RTdG9yZXMu
YmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VNZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQp
IHsKLSAgICAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3Jl
TWV0YWRhdGEgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gaXQtPnNlY29uZDsKIAogICAgICAgICAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RT
dG9yZUluZGV4PiA+IGluZGV4ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6Oklu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleD46OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBmb3Ig
KElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG9i
amVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBvYmplY3RTdG9yZU1ldGFk
YXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJREJJbmRl
eE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhID0gaXQtPnZhbHVlOworICAgICAgICAgICAgICAgIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgPSBpdC0+c2Vjb25kOwogCiAgICAg
ICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3JlSW5kZXg+IG9iamVjdFN0b3JlSW5kZXggPSBP
YmplY3RTdG9yZUluZGV4OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShp
bmRleE1ldGFkYXRhLm5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAwODQyNWNjODc0MjA1ODIxMDIwZGFhMDlmNmYyNzc1
NzE0ZDRjMmUyLi5lYTUyNTRhYWI1OWUzMjRiYWNiYTk3NzdiNjZkZjM4MGEyNWI0YzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
QEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok5vZGVDb3VudD4gPiBjaGlsZHJlblN0
YXRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok5vZGVDb3VudD46
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBpbnQ+OjppdGVyYXRvciBp
dCA9IG1fbm9kZU5hbWVUb0NvdW50LmJlZ2luKCk7IGl0ICE9IG1fbm9kZU5hbWVUb0NvdW50LmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZUNvdW50PiBub2RlQ291bnQgPSBO
b2RlQ291bnQ6OmNyZWF0ZSgpLnNldE5vZGVOYW1lKGl0LT5rZXkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvdW50KGl0
LT52YWx1ZSk7CisgICAgICAgICAgICBSZWZQdHI8Tm9kZUNvdW50PiBub2RlQ291bnQgPSBOb2Rl
Q291bnQ6OmNyZWF0ZSgpLnNldE5vZGVOYW1lKGl0LT5maXJzdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q291bnQoaXQt
PnNlY29uZCk7CiAgICAgICAgICAgICBjaGlsZHJlblN0YXRzLT5hZGRJdGVtKG5vZGVDb3VudCk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNoaWxkcmVuU3RhdHMucmVsZWFzZSgpOwpAQCAt
MTc0LDggKzE3NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TGlzdGVuZXJDb3VudD4gPiBsaXN0ZW5lclN0
YXRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6Okxpc3RlbmVyQ291
bnQ+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZywgaW50Pjo6
aXRlcmF0b3IgaXQgPSBtX2V2ZW50VHlwZVRvQ291bnQuYmVnaW4oKTsgaXQgIT0gbV9ldmVudFR5
cGVUb0NvdW50LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBSZWZQdHI8TGlzdGVuZXJDb3Vu
dD4gbGlzdGVuZXJDb3VudCA9IExpc3RlbmVyQ291bnQ6OmNyZWF0ZSgpLnNldFR5cGUoaXQtPmtl
eSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuc2V0Q291bnQoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxMaXN0ZW5lckNvdW50PiBsaXN0ZW5lckNvdW50ID0gTGlzdGVuZXJDb3VudDo6Y3JlYXRl
KCkuc2V0VHlwZShpdC0+Zmlyc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvdW50KGl0LT5zZWNv
bmQpOwogICAgICAgICAgICAgbGlzdGVuZXJTdGF0cy0+YWRkSXRlbShsaXN0ZW5lckNvdW50KTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gbGlzdGVuZXJTdGF0cy5yZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGI4
MGI2MjkxNmE3MjliMjdhY2VmY2RjOTZjMmM4MmI0NGU1YmQ5OGYuLmI2ODQ5ZmE4OTI0ZmQxZDVh
MGQ2NTdjMmRhODRkMjMzMWFkMDQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIFZlY3Rv
cjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkK
ICAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxs
UmVzb3VyY2VzID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmFs
bENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJl
c291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxSZXNvdXJjZXMuZW5kKCk7CiAgICAg
Zm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsK
IAogICAgICAgICBzd2l0Y2ggKGNhY2hlZFJlc291cmNlLT50eXBlKCkpIHsKICAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvcgogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IHNjcmlwdHMtPmVuZCgpOwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JpcHRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIFN0cmluZyBzY3JpcHRUZXh0OwotICAgICAgICAgICAgaWYgKGl0LT52YWx1
ZS0+YXNTdHJpbmcoJnNjcmlwdFRleHQpKQorICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmFz
U3RyaW5nKCZzY3JpcHRUZXh0KSkKICAgICAgICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+aW5qZWN0U2NyaXB0KHNjcmlwdFRleHQsIG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1l
KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC03OTYsOCArNzk2LDggQEAgdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUqIGZyYW1lKQogewogICAgIEhhc2hNYXA8RnJh
bWUqLCBTdHJpbmc+OjppdGVyYXRvciBpdGVyYXRvciA9IG1fZnJhbWVUb0lkZW50aWZpZXIuZmlu
ZChmcmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fZnJhbWVUb0lkZW50aWZpZXIuZW5kKCkp
IHsKLSAgICAgICAgbV9mcm9udGVuZC0+ZnJhbWVEZXRhY2hlZChpdGVyYXRvci0+dmFsdWUpOwot
ICAgICAgICBtX2lkZW50aWZpZXJUb0ZyYW1lLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOworICAg
ICAgICBtX2Zyb250ZW5kLT5mcmFtZURldGFjaGVkKGl0ZXJhdG9yLT5zZWNvbmQpOworICAgICAg
ICBtX2lkZW50aWZpZXJUb0ZyYW1lLnJlbW92ZShpdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAg
bV9mcmFtZVRvSWRlbnRpZmllci5yZW1vdmUoaXRlcmF0b3IpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRl
eCA5OTdhNThlOTkzZjIzMjI3MTU0NjEyMGQ3ZDQyMjk4NTE5ZGY0Y2JlLi40MmNkZTg1YmJhYzFh
NmEyZDZkN2U5MGU4MTE3ZGIwZThiZTEyMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yNDksMTAgKzI0OSwxMCBA
QCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOgogCiAgICAgUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIHBy
b2ZpbGVzRW5kID0gbV9wcm9maWxlcy5lbmQoKTsKICAgICBmb3IgKFByb2ZpbGVzTWFwOjppdGVy
YXRvciBpdCA9IG1fcHJvZmlsZXMuYmVnaW4oKTsgaXQgIT0gcHJvZmlsZXNFbmQ7ICsraXQpCi0g
ICAgICAgIGhlYWRlcnMtPmFkZEl0ZW0oY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnZhbHVlKSk7
CisgICAgICAgIGhlYWRlcnMtPmFkZEl0ZW0oY3JlYXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29u
ZCkpOwogICAgIEhlYXBTbmFwc2hvdHNNYXA6Oml0ZXJhdG9yIHNuYXBzaG90c0VuZCA9IG1fc25h
cHNob3RzLmVuZCgpOwogICAgIGZvciAoSGVhcFNuYXBzaG90c01hcDo6aXRlcmF0b3IgaXQgPSBt
X3NuYXBzaG90cy5iZWdpbigpOyBpdCAhPSBzbmFwc2hvdHNFbmQ7ICsraXQpCi0gICAgICAgIGhl
YWRlcnMtPmFkZEl0ZW0oY3JlYXRlU25hcHNob3RIZWFkZXIoKml0LT52YWx1ZSkpOworICAgICAg
ICBoZWFkZXJzLT5hZGRJdGVtKGNyZWF0ZVNuYXBzaG90SGVhZGVyKCppdC0+c2Vjb25kKSk7CiB9
CiAKIG5hbWVzcGFjZSB7CkBAIC0yODAsMTYgKzI4MCwxNiBAQCB2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvZmlsZU9iamVj
dCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZTo6Y3JlYXRlKCk7Ci0gICAgICAgIHBy
b2ZpbGVPYmplY3QtPnNldEhlYWQoaXQtPnZhbHVlLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUtPmJvdHRvbVVwSGVhZCgpKQotICAgICAgICAg
ICAgcHJvZmlsZU9iamVjdC0+c2V0Qm90dG9tVXBIZWFkKGl0LT52YWx1ZS0+YnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgIHByb2ZpbGVPYmplY3QtPnNldEhl
YWQoaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOworICAgICAgICBp
ZiAoaXQtPnNlY29uZC0+Ym90dG9tVXBIZWFkKCkpCisgICAgICAgICAgICBwcm9maWxlT2JqZWN0
LT5zZXRCb3R0b21VcEhlYWQoaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0
b21VcEhlYWQoKSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9maWxlVHlwZSkgewog
ICAgICAgICBIZWFwU25hcHNob3RzTWFwOjppdGVyYXRvciBpdCA9IG1fc25hcHNob3RzLmZpbmQo
dWlkKTsKICAgICAgICAgaWYgKGl0ID09IG1fc25hcHNob3RzLmVuZCgpKSB7CiAgICAgICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiUHJvZmlsZSB3YXNuJ3QgZm91bmQiOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBz
aG90ID0gaXQtPnZhbHVlOworICAgICAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFw
c2hvdCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHByb2ZpbGVPYmplY3QgPSBUeXBlQnVpbGRlcjo6
UHJvZmlsZXI6OlByb2ZpbGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAobV9mcm9udGVuZCkgewog
ICAgICAgICAgICAgT3V0cHV0U3RyZWFtIHN0cmVhbShtX2Zyb250ZW5kLCB1aWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IDk2MDgxMTIxYjU0MDM2Mjk2MTZlN2I1ZDRkYjY1YjI1OWQ5NWI1MjAuLjlkOTI5YzlhMTBi
ZWQzNGMyOWMyODk0ODFhYjBhNGE1YTYyODY5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVhZGVy
cyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZQogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhl
YWRlcnNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBoZWFkZXJzT2JqZWN0LT5zZXRTdHJpbmcoaXQtPmtleS5zdHJpbmcoKSwg
aXQtPnZhbHVlKTsKKyAgICAgICAgaGVhZGVyc09iamVjdC0+c2V0U3RyaW5nKGl0LT5maXJzdC5z
dHJpbmcoKSwgaXQtPnNlY29uZCk7CiAgICAgcmV0dXJuIGhlYWRlcnNPYmplY3Q7CiB9CiAKQEAg
LTIxNCw4ICsyMTQsOCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgICAgICBJbnNwZWN0
b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgpOwogICAgICAgICBm
b3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAg
ICAgIGlmIChpdC0+dmFsdWUtPmFzU3RyaW5nKCZ2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYg
KGl0LT5zZWNvbmQtPmFzU3RyaW5nKCZ2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCmluZGV4IGJhZjEw
Yzk3MWUxMTk1MzI1NzZiZjQ5NDU1MjJmMzdiMDgzMjVhZmIuLjcwYTI0Mzk4NDdjNDU3YzM4YTM5
MGEzMzAwNGEzZDllMWIxZGI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0YXRlLmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIEluc3BlY3RvclN0YXRlOjpnZXRC
b29sZWFuKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIEluc3BlY3Rvck9iamVjdDo6
aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMtPmZpbmQocHJvcGVydHlOYW1lKTsKICAgICBib29s
IHZhbHVlID0gZmFsc2U7CiAgICAgaWYgKGl0ICE9IG1fcHJvcGVydGllcy0+ZW5kKCkpCi0gICAg
ICAgIGl0LT52YWx1ZS0+YXNCb29sZWFuKCZ2YWx1ZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmFz
Qm9vbGVhbigmdmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtODksNyArODksNyBA
QCBTdHJpbmcgSW5zcGVjdG9yU3RhdGU6OmdldFN0cmluZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGl0ID0gbV9wcm9wZXJ0aWVzLT5m
aW5kKHByb3BlcnR5TmFtZSk7CiAgICAgU3RyaW5nIHZhbHVlOwogICAgIGlmIChpdCAhPSBtX3By
b3BlcnRpZXMtPmVuZCgpKQotICAgICAgICBpdC0+dmFsdWUtPmFzU3RyaW5nKCZ2YWx1ZSk7Cisg
ICAgICAgIGl0LT5zZWNvbmQtPmFzU3RyaW5nKCZ2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCkBAIC05OCw3ICs5OCw3IEBAIGxvbmcgSW5zcGVjdG9yU3RhdGU6OmdldExvbmcoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpdCA9
IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5hbWUpOwogICAgIGxvbmcgdmFsdWUgPSAwOwog
ICAgIGlmIChpdCAhPSBtX3Byb3BlcnRpZXMtPmVuZCgpKQotICAgICAgICBpdC0+dmFsdWUtPmFz
TnVtYmVyKCZ2YWx1ZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmFzTnVtYmVyKCZ2YWx1ZSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMDcsNyArMTA3LDcgQEAgZG91YmxlIEluc3BlY3Rv
clN0YXRlOjpnZXREb3VibGUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgSW5zcGVj
dG9yT2JqZWN0OjppdGVyYXRvciBpdCA9IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5hbWUp
OwogICAgIGRvdWJsZSB2YWx1ZSA9IDA7CiAgICAgaWYgKGl0ICE9IG1fcHJvcGVydGllcy0+ZW5k
KCkpCi0gICAgICAgIGl0LT52YWx1ZS0+YXNOdW1iZXIoJnZhbHVlKTsKKyAgICAgICAgaXQtPnNl
Y29uZC0+YXNOdW1iZXIoJnZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTExOCw3
ICsxMTgsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yU3RhdGU6Omdl
dE9iamVjdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZQogICAgICAgICBtX3Byb3BlcnRpZXMt
PnNldE9iamVjdChwcm9wZXJ0eU5hbWUsIEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
ICAgICBpdCA9IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5hbWUpOwogICAgIH0KLSAgICBy
ZXR1cm4gaXQtPnZhbHVlLT5hc09iamVjdCgpOworICAgIHJldHVybiBpdC0+c2Vjb25kLT5hc09i
amVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMjM0MGMxZGI1MzU4ZDZh
YTljMzEwY2U3ZjdmZDhiNjNhNDQ5MzgyNS4uODNiNDAyZDZlYTkzOWY0ZjNlNWU3ZWI0OWQ4MGUz
MGRhNzQ3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29u
CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZXZp
b3VzUGFyc2VkT2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3Rp
dmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlBh
cnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHN1Y2Nlc3MgPSBhY3RpdmVJdC0+c2Vjb25kLT5nZXRCb29sZWFuKFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFyc2VkT2spOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIH0KQEAgLTU0Myw3ICs1NDMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0
KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogCiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZEluYWN0aXZhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVl
LT5zZXRTdGF0dXMoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3Rp
dmUpOworICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+c2Vjb25kLT5zZXRTdGF0dXMoVHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5hY3RpdmUpOwogICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9u
aWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclN0
eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjppbnNwZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3Bl
YwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlID0gSW5zcGVj
dG9yU3R5bGU6OmNyZWF0ZShpZCwgc3R5bGUsIHRoaXMpOwogICAgICAgICByZXR1cm4gaW5zcGVj
dG9yU3R5bGUucmVsZWFzZSgpOwogICAgIH0KLSAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogfQogCiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlbWVtYmVy
SW5zcGVjdG9yU3R5bGUoUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggYWRhMjYx
N2NjMGM0YmVhMGE5ZjE5OWYyNTk3NzE0ZDI2OTBiMDZlOC4uZTRlYWQxN2U1Mjg2NjhkOWU1MDVi
ZmRjYjEwMzBlN2I1MGZiNzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAog
ICAgIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhLmZpbmQobmFtZSk7CiAg
ICAgaWYgKGl0ID09IG1fZGF0YS5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogdm9pZCBJbnNwZWN0b3JP
YmplY3RCYXNlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNzM5LDkgKzczOSw5IEBA
IHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1
dCkgY29uc3QKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5lbmQoKSk7CiAgICAgICAgIGlm
IChpKQogICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQoJywnKTsKLSAgICAgICAgZG91YmxlUXVv
dGVTdHJpbmcoaXQtPmtleSwgb3V0cHV0KTsKKyAgICAgICAgZG91YmxlUXVvdGVTdHJpbmcoaXQt
PmZpcnN0LCBvdXRwdXQpOwogICAgICAgICBvdXRwdXQtPmFwcGVuZCgnOicpOwotICAgICAgICBp
dC0+dmFsdWUtPndyaXRlSlNPTihvdXRwdXQpOworICAgICAgICBpdC0+c2Vjb25kLT53cml0ZUpT
T04ob3V0cHV0KTsKICAgICB9CiAgICAgb3V0cHV0LT5hcHBlbmQoJ30nKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDlm
YzYxZGI3YTc5ZGJhMjQwZDY3M2YxODQ3OWFjNGQ2ZDQzNzYyZDcuLjI0YmVlYjU3ZDA3N2YzMjA5
NzI2MDQ3ODMxNzgyNTQwYmJjMTMyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMjA0LDkgKzIwNCw5IEBAIHZvaWQgSW5z
cGVjdG9yV29ya2VyQWdlbnQ6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFdvcmtlckNvbnRleHRQ
cm94eSogcHJveHkpCiB7CiAgICAgbV9kZWRpY2F0ZWRXb3JrZXJzLnJlbW92ZShwcm94eSk7CiAg
ICAgZm9yIChXb3JrZXJDaGFubmVsczo6aXRlcmF0b3IgaXQgPSBtX2lkVG9DaGFubmVsLmJlZ2lu
KCk7IGl0ICE9IG1faWRUb0NoYW5uZWwuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKHByb3h5
ID09IGl0LT52YWx1ZS0+cHJveHkoKSkgewotICAgICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVu
ZC0+d29ya2VyKCktPndvcmtlclRlcm1pbmF0ZWQoaXQtPmtleSk7Ci0gICAgICAgICAgICBkZWxl
dGUgaXQtPnZhbHVlOworICAgICAgICBpZiAocHJveHkgPT0gaXQtPnNlY29uZC0+cHJveHkoKSkg
eworICAgICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+d29ya2VyKCktPndvcmtlclRlcm1p
bmF0ZWQoaXQtPmZpcnN0KTsKKyAgICAgICAgICAgIGRlbGV0ZSBpdC0+c2Vjb25kOwogICAgICAg
ICAgICAgbV9pZFRvQ2hhbm5lbC5yZW1vdmUoaXQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0yMTYsMTQgKzIxNiwxNCBAQCB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3
b3JrZXJDb250ZXh0VGVybWluYXRlZChXb3JrZXJDb250ZXh0UHJveHkqIHByb3h5KQogdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsc0ZvckV4aXN0
aW5nV29ya2VycygpCiB7CiAgICAgZm9yIChEZWRpY2F0ZWRXb3JrZXJzOjppdGVyYXRvciBpdCA9
IG1fZGVkaWNhdGVkV29ya2Vycy5iZWdpbigpOyBpdCAhPSBtX2RlZGljYXRlZFdvcmtlcnMuZW5k
KCk7ICsraXQpCi0gICAgICAgIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChpdC0+a2V5LCBp
dC0+dmFsdWUpOworICAgICAgICBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWwoaXQtPmZpcnN0
LCBpdC0+c2Vjb25kKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGVzdHJveVdv
cmtlckZyb250ZW5kQ2hhbm5lbHMoKQogewogICAgIGZvciAoV29ya2VyQ2hhbm5lbHM6Oml0ZXJh
dG9yIGl0ID0gbV9pZFRvQ2hhbm5lbC5iZWdpbigpOyBpdCAhPSBtX2lkVG9DaGFubmVsLmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgIGl0LT52YWx1ZS0+ZGlzY29ubmVjdEZyb21Xb3JrZXJDb250ZXh0
KCk7Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7CisgICAgICAgIGl0LT5zZWNvbmQtPmRpc2Nv
bm5lY3RGcm9tV29ya2VyQ29udGV4dCgpOworICAgICAgICBkZWxldGUgaXQtPnNlY29uZDsKICAg
ICB9CiAgICAgbV9pZFRvQ2hhbm5lbC5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNTkyMzMwMjMxNzE2NTY1
M2Q5YzU5OTY1OTNhMGM1YjFhZTE5NzNmNS4uZTA1ZDEzZGVjYjM4MThmY2YxYmI4MzMyODM1OWRl
YWZiMjk1ZGZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCkBAIC0yNTksMTAgKzI1OSwxMCBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZAogICAgIFJlc291cmNlRGF0YU1hcDo6aXRlcmF0b3IgaXQ7CiAgICAgUmVzb3VyY2VEYXRh
TWFwOjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmVuZCgpOwog
ICAgIGZvciAoaXQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IGl0LT52
YWx1ZTsKKyAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBpdC0+c2Vjb25kOwog
ICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpID09IGNhY2hlZFJlc291
cmNlKSB7CiAgICAgICAgICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKDApOwot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoaXQtPmZpcnN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjc5LDkgKzI3OSw5IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVk
TG9hZGVySWQpCiAgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBpdDsKICAgICBSZXNvdXJj
ZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZW5k
KCk7CiAgICAgZm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0g
aXQtPnZhbHVlOworICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IGl0LT5zZWNv
bmQ7CiAgICAgICAgIGlmICghcHJlc2VydmVkTG9hZGVySWQuaXNOdWxsKCkgJiYgcmVzb3VyY2VE
YXRhLT5sb2FkZXJJZCgpID09IHByZXNlcnZlZExvYWRlcklkKQotICAgICAgICAgICAgcHJlc2Vy
dmVkTWFwLnNldChpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAgICAgICAgcHJlc2VydmVkTWFw
LnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBk
ZWxldGUgcmVzb3VyY2VEYXRhOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggOWIyNmZjODZjOTA0MzkzOTUxNWYx
MGFlNjllYmI2NTUzMGMwYjQzMS4uYWJhMmJhMDYzZTU5MzA4ZmFlYzQ0YmZjNzhkZmFmOGQ5Yjg0
NWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYKIAog
ICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlck1hcC5lbmQoKTsK
ICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyTWFwLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9s
U2ltcGxlUmVxdWVzdEhlYWRlcldoaXRlbGlzdChpdC0+a2V5LCBpdC0+dmFsdWUpKQorICAgICAg
ICBpZiAoIWlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdEhlYWRlcldoaXRlbGlzdChpdC0+
Zmlyc3QsIGl0LT5zZWNvbmQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTE2LDE0ICsxMTYsMTQgQEAgUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQ
cmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBpZiAocmVx
dWVzdEhlYWRlckZpZWxkcy5zaXplKCkgPiAwKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgaGVh
ZGVyQnVmZmVyOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJl
cXVlc3RIZWFkZXJGaWVsZHMuYmVnaW4oKTsKLSAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZChp
dC0+a2V5KTsKKyAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAg
ICArK2l0OwogCiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
cXVlc3RIZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgICAgIGhlYWRlckJ1ZmZlci5hcHBlbmQoJywnKTsKICAgICAgICAgICAgIGhl
YWRlckJ1ZmZlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGhlYWRlckJ1ZmZlci5hcHBlbmQo
aXQtPmtleSk7CisgICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5kKGl0LT5maXJzdCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgi
QWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgaGVhZGVyQnVmZmVyLnRvU3RyaW5nKCku
bG93ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggOWQ1MWM4N2ZlNmM0ZTdkNDM5MzNlNDVl
ZWY3ZDVjMTliZDVlMjA4NC4uMDRkNTg4MTU1Y2U1NTMzYmRkZDNmMDJiM2JkODE1ZWQ5ZWUzOTll
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMTI1LDggKzEyNSw4IEBAIGJvb2wgQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhjb25z
dCBIVFRQSGVhCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVx
dWVzdEhlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBpZiAoIW1faGVhZGVycy5jb250YWlucyhpdC0+a2V5KSAmJiAhaXNPbkFjY2Vzc0NvbnRyb2xT
aW1wbGVSZXF1ZXN0SGVhZGVyV2hpdGVsaXN0KGl0LT5rZXksIGl0LT52YWx1ZSkpIHsKLSAgICAg
ICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUmVxdWVzdCBoZWFkZXIgZmllbGQgIiArIGl0LT5r
ZXkuc3RyaW5nKCkgKyAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LUhl
YWRlcnMuIjsKKyAgICAgICAgaWYgKCFtX2hlYWRlcnMuY29udGFpbnMoaXQtPmZpcnN0KSAmJiAh
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0SGVhZGVyV2hpdGVsaXN0KGl0LT5maXJzdCwg
aXQtPnNlY29uZCkpIHsKKyAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUmVxdWVzdCBo
ZWFkZXIgZmllbGQgIiArIGl0LT5maXJzdC5zdHJpbmcoKSArICIgaXMgbm90IGFsbG93ZWQgYnkg
QWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycy4iOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uCiAgICAgaWYgKGNhY2hlSXQgPT0gbV9wcmVmbGlnaHRIYXNoTWFwLmVuZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoY2FjaGVJdC0+dmFsdWUtPmFsbG93c1JlcXVl
c3QoaW5jbHVkZUNyZWRlbnRpYWxzLCBtZXRob2QsIHJlcXVlc3RIZWFkZXJzKSkKKyAgICBpZiAo
Y2FjaGVJdC0+c2Vjb25kLT5hbGxvd3NSZXF1ZXN0KGluY2x1ZGVDcmVkZW50aWFscywgbWV0aG9k
LCByZXF1ZXN0SGVhZGVycykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbV9wcmVmbGln
aHRIYXNoTWFwLnJlbW92ZShjYWNoZUl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDEzOTJhMjUwNjhhZWE0YjU0NWMzYjY5YzM4Y2E4YmM2NDIxNTNlODQu
LmVhNjliZjUyZjg4MzM3NTlmYjk4ODJjYzY3OGMyMDI5NzRkOTkzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+ID4mIHN1YnJlCiAgICAgY29uc3QgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50
UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgp
OwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1
YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+dmFsdWUtPnVybCgpKSk7CisgICAg
ICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3Vy
Y2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQtPnVybCgpKSk7CiAgICAgICAgIGlm
IChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoc3VicmVzb3Vy
Y2UucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NDcsOCArNjQ3LDggQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50
TG9hZGVyPioKIAogICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gY29weS5lbmQoKTsKICAgICBmb3IgKFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IGl0LT5rZXk7Ci0gICAgICAgIFN1YnN0aXR1dGVS
ZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRlcj4gbG9hZGVyID0gaXQtPmZpcnN0OworICAgICAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChy
ZXNvdXJjZSkgewogICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPmRh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMzM1MmU2NDM2YTZhNWY2MWM5NmE5ODIwZjE5MzcyNjZiZTE2MWQ2NS4uMDgzNmQ4Y2MwMGU4
OTA1OGU5ODMyM2JiNmQ2MDY0NTNmY2U5YzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIp
CiAKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHIuaHR0cEhlYWRlckZp
ZWxkcygpLmZpbmQoQXRvbWljU3RyaW5nKCJ4LWZyYW1lLW9wdGlvbnMiKSk7CiAgICAgaWYgKGl0
ICE9IHIuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpKSB7Ci0gICAgICAgIFN0cmluZyBjb250ZW50
ID0gaXQtPnZhbHVlOworICAgICAgICBTdHJpbmcgY29udGVudCA9IGl0LT5zZWNvbmQ7CiAgICAg
ICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9w
dGlvbnMoY29udGVudCwgci51cmwoKSkpIHsKICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQobV9mcmFtZS5nZXQoKSwg
ZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByKTsKICAgICAgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGRpc3BsYXkg
ZG9jdW1lbnQgYmVjYXVzZSBkaXNwbGF5IGZvcmJpZGRlbiBieSBYLUZyYW1lLU9wdGlvbnMuXG4i
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CmluZGV4IDhlYjQ0ZDQ5ZDI5YTY4NDY2NGQ4MzI1Y2EyNjFmNTc1YzY0MTBiNjMuLjgwMDRkOGYy
ZWIyZDhiYzM2MDZhMDY5ZmM3ZWVhMzUxYWZjZmNkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFJlc291cmNlTG9h
ZFByaW9yaXR5IG1pbmltdW1QcmkKICAgICBtX2hvc3RzLmNoZWNrQ29uc2lzdGVuY3koKTsKICAg
ICBIb3N0TWFwOjppdGVyYXRvciBlbmQgPSBtX2hvc3RzLmVuZCgpOwogICAgIGZvciAoSG9zdE1h
cDo6aXRlcmF0b3IgaXRlciA9IG1faG9zdHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikK
LSAgICAgICAgaG9zdHNUb1NlcnZlLmFwcGVuZChpdGVyLT52YWx1ZSk7CisgICAgICAgIGhvc3Rz
VG9TZXJ2ZS5hcHBlbmQoaXRlci0+c2Vjb25kKTsKIAogICAgIGludCBzaXplID0gaG9zdHNUb1Nl
cnZlLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCmlu
ZGV4IGI3ZWE2NTI0YzQwMzk3NWZmMGRmOTQ2YTJmMGQwMTFjYjE3MDBhNmEuLjYzY2Q3YmJiZmE4
Nzg5ZjRhZGIzZGY1MmNiNGU5YzE3ZGQ3MTU5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTEwMCwxMSArMTAwLDEx
IEBAIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFRoZSByZXNvdXJjZSBleGlzdHMs
IGdldCBpdHMgdHlwZSBzbyB3ZSBjYW4gcmV0dXJuIGl0LgotICAgIHVuc2lnbmVkIHR5cGUgPSBp
dC0+dmFsdWUtPnR5cGUoKTsKKyAgICB1bnNpZ25lZCB0eXBlID0gaXQtPnNlY29uZC0+dHlwZSgp
OwogCiAgICAgbV9yZXNvdXJjZXMucmVtb3ZlKGl0KTsKIAotICAgIG1fZXN0aW1hdGVkU2l6ZUlu
U3RvcmFnZSAtPSBpdC0+dmFsdWUtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKTsKKyAgICBtX2Vz
dGltYXRlZFNpemVJblN0b3JhZ2UgLT0gaXQtPnNlY29uZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFn
ZSgpOwogCiAgICAgcmV0dXJuIHR5cGU7CiB9ICAgIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9yYWdlSUQoKQogICAgIAogICAgIFJlc291cmNlTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKFJlc291
cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5jbGVhclN0b3JhZ2VJRCgpOworICAgICAgICBp
dC0+c2Vjb25kLT5jbGVhclN0b3JhZ2VJRCgpOwogfQogICAgIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQpAQCAtMjE4
LDggKzIxOCw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+ID46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIAogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHByaW50Zigi
JXMgIiwgaXQtPmtleS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6ZHVtcFR5cGUoaXQtPnZhbHVlLT50eXBlKCkpOworICAgICAgICBwcmludGYoIiVz
ICIsIGl0LT5maXJzdC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6ZHVtcFR5cGUoaXQtPnNlY29uZC0+dHlwZSgpKTsKICAgICB9CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKaW5kZXggMjczYTYwMTBkODI1NWZiOTRhYTYwNTFiOTJmNjkyYjQ4ODM3
Yzk5Ni4uOTIwODJjNTZiZTExYzlkYzI1ODUwZjdhOTRiYzI3OTNiNzdmNWY1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKQEAgLTc3Nyw5ICs3NzcsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICBpZiAoaXNVcGdyYWRlQXR0ZW1wdCkgewog
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9uZXdlc3RDYWNoZS0+ZW5kKCk7CiAgICAgICAgIGZvciAoQXBwbGljYXRpb25DYWNoZTo6
UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9uZXdlc3RDYWNoZS0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0eXBlID0gaXQtPnZhbHVl
LT50eXBlKCk7CisgICAgICAgICAgICB1bnNpZ25lZCB0eXBlID0gaXQtPnNlY29uZC0+dHlwZSgp
OwogICAgICAgICAgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3Rl
cikKLSAgICAgICAgICAgICAgICBhZGRFbnRyeShpdC0+a2V5LCB0eXBlKTsKKyAgICAgICAgICAg
ICAgICBhZGRFbnRyeShpdC0+Zmlyc3QsIHR5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIApA
QCAtMTAxOCw3ICsxMDE4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9h
ZGluZ0VudHJ5KCkKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKLSAgICBt
X2N1cnJlbnRIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgaXQtPmtleSksIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVS
TChpdC0+a2V5KSA6IDApOworICAgIG1fY3VycmVudEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFu
ZGxlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+Zmlyc3QpLCBtX25ld2VzdENhY2hlID8gbV9u
ZXdlc3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaXQtPmZpcnN0KSA6IDApOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWluUmVzb3VyY2VzKCkKQEAgLTEw
NjcsNyArMTA2Nyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25z
dCBTdHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKICAgICBFbnRyeU1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fcGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CiAgICAgCiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSB8PSB0eXBl
OworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSB0eXBlOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAppbmRleCBmZTlmMDEwYTBmZTY1MDNkMGJjNWU1YjkyNzcwYTNmN2I2NDM0NGZkLi44MDFjMWIz
NjcwMzFhMzM5ZGI0NDcwN2E5MmQxYmM4MGQ0MWQ4Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI4
Miw3ICsyODIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaWxsUmVzb3VyY2VMaXN0
KFJlc291cmNlSW5mb0xpc3QqIHJlc291cmNlcykKICAgICAgCiAgICAgQXBwbGljYXRpb25DYWNo
ZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQoKTsKICAgICBm
b3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGNh
Y2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBpdC0+dmFsdWU7CisgICAgICAgIFJlZlB0cjxB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJlc291cmNlID0gaXQtPnNlY29uZDsKICAgICAgICAg
dW5zaWduZWQgdHlwZSA9IHJlc291cmNlLT50eXBlKCk7CiAgICAgICAgIGJvb2wgaXNNYXN0ZXIg
ICA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlcjsKICAgICAgICAgYm9v
bCBpc01hbmlmZXN0ID0gdHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFuaWZlc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDk5NzY2ZTNhNjZiZDM2ZWI0MmZlZDJhOTI2OWQz
NGIwNjYxOTRkN2YuLmQ4MzE3ODRiNDE5NmFkZjM4MmNmMzU1ZTBlZWYwMmQ2YTdhODA3OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGludDY0X3QgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjplc3RpbWF0ZWRTaXplSW5TdG9yYWdlKCkKIAogICAgIEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkcygp
LmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXNw
b25zZSgpLmh0dHBIZWFkZXJGaWVsZHMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgIG1fZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSArPSAoaXQtPmtleS5sZW5ndGgoKSArIGl0LT52
YWx1ZS5sZW5ndGgoKSArIDIpICogc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgbV9lc3RpbWF0ZWRT
aXplSW5TdG9yYWdlICs9IChpdC0+Zmlyc3QubGVuZ3RoKCkgKyBpdC0+c2Vjb25kLmxlbmd0aCgp
ICsgMikgKiBzaXplb2YoVUNoYXIpOwogCiAgICAgbV9lc3RpbWF0ZWRTaXplSW5TdG9yYWdlICs9
IHVybCgpLnN0cmluZygpLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKICAgICBtX2VzdGltYXRl
ZFNpemVJblN0b3JhZ2UgKz0gc2l6ZW9mKGludCk7IC8vIHJlc3BvbnNlKCkubV9odHRwU3RhdHVz
Q29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZDFjOTdlNGIyYWExNjA4ZmM5NDhlYTYzMmMy
YmE2ZWQyYTdlNTEzZC4uNzc4ZTRlMzg4ODkxZDMzNDcyMGNkMjE1MjU2ZDRkYWQzOWIyMmYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzcsOCArMTM3LDggQEAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChj
b25zdCBLVVIKICAgICBDYWNoZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZXNJ
bk1lbW9yeS5hZGQobWFuaWZlc3RVUkwsIDApOwogICAgIAogICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
OwogICAgIH0KIAogICAgIC8vIExvb2sgdXAgdGhlIGdyb3VwIGluIHRoZSBkYXRhYmFzZQpAQCAt
MTUwLDcgKzE1MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSCiAgICAgICAgIG1fY2FjaGVI
b3N0U2V0LmFkZCh1cmxIb3N0SGFzaChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZ3JvdXA7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgPSBncm91cDsKICAgICAKICAgICByZXR1cm4gZ3JvdXA7CiB9CkBAIC0xOTcsNyArMTk3LDcg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVH
cm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwKICAgICAvLyBDaGVjayBpZiBhIGNhY2hlIGFscmVh
ZHkgZXhpc3RzIGluIG1lbW9yeS4KICAgICBDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX2NhY2hlc0luTWVtb3J5LmVuZCgpOwogICAgIGZvciAoQ2FjaGVHcm91cE1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gaXQtPnZhbHVlOwor
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gaXQtPnNlY29uZDsKIAogICAg
ICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwogCkBAIC0yNjgsNyArMjY4LDcgQEAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tD
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IEsKICAgICAvLyBDaGVjayBpZiBhbiBhcHByb3ByaWF0ZSBj
YWNoZSBhbHJlYWR5IGV4aXN0cyBpbiBtZW1vcnkuCiAgICAgQ2FjaGVHcm91cE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsKICAgICBmb3IgKENhY2hlR3Jv
dXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGl0
LT52YWx1ZTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGl0LT5zZWNv
bmQ7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwogCkBA
IC03MTMsMTMgKzcxMywxMyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShB
cHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdlSURKbwogICAgIHsKICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNh
Y2hlLT5lbmQoKTsKICAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBvbGRTdG9yYWdlSUQgPSBpdC0+dmFsdWUtPnN0b3JhZ2VJRCgp
OwotICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+dmFsdWUuZ2V0KCksIGNhY2hlU3RvcmFnZUlE
KSkKKyAgICAgICAgICAgIHVuc2lnbmVkIG9sZFN0b3JhZ2VJRCA9IGl0LT5zZWNvbmQtPnN0b3Jh
Z2VJRCgpOworICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+c2Vjb25kLmdldCgpLCBjYWNoZVN0
b3JhZ2VJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAv
LyBTdG9yaW5nIHRoZSByZXNvdXJjZSBzdWNjZWVkZWQuIExvZyBpdHMgb2xkIHN0b3JhZ2VJRCBp
biBjYXNlCiAgICAgICAgICAgICAvLyBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci4KLSAg
ICAgICAgICAgIHN0b3JhZ2VJREpvdXJuYWwtPmFkZChpdC0+dmFsdWUuZ2V0KCksIG9sZFN0b3Jh
Z2VJRCk7CisgICAgICAgICAgICBzdG9yYWdlSURKb3VybmFsLT5hZGQoaXQtPnNlY29uZC5nZXQo
KSwgb2xkU3RvcmFnZUlEKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTgzOSw5ICs4Mzks
OSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZHMo
KS5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7IGl0IT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgoVUNoYXIpJzonKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaXQtPnZhbHVl
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaXQtPnNlY29uZCk7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKChVQ2hhciknXG4nKTsKICAgICB9CiAgICAgCkBAIC0xMjQxLDcg
KzEyNDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSgpCiAgICAgLy8g
dW50aWwgYSBjYWNoZSB1cGRhdGUgcHJvY2VzcyBoYXMgYmVlbiBpbml0aWF0ZWQuCiAgICAgQ2Fj
aGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsK
ICAgICBmb3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1l
bW9yeS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJT
dG9yYWdlSUQoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2xlYXJTdG9yYWdlSUQoKTsKICAgICAK
ICAgICBjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKTsKIH0KQEAgLTEzMDMsNyArMTMwMyw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3Ry
aW5nJiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAgLy8gVHJhdmVyc2UgdGhlIGNhY2hlIGFuZCBh
ZGQgY29waWVzIG9mIGFsbCByZXNvdXJjZXMuCiAgICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3Vy
Y2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQoKTsKICAgICBmb3IgKEFwcGxp
Y2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGNhY2hlLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICBS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZUNvcHkgPSBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5yZXNwb25z
ZSgpLCByZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLCByZXNvdXJjZS0+cGF0aCgp
KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAKaW5kZXggY2QzODc2YWFlZmFjOTA0Y2I0Y2Q0OTBjNzI4ODkxZTAzODc1NjRk
Yy4uZjY5NzBhYTUzMWI1ZTVhNjVjNWE2MDUyOWIxNWUwNTQzODZjNDY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtOTUsNyAr
OTUsNyBAQCB2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cygpCiAgICAgQXJjaGl2ZU1JTUVUeXBlc01hcDo6aXRlcmF0b3IgZW5kID0gYXJjaGl2ZU1JTUVU
eXBlcygpLmVuZCgpOwogCiAgICAgZm9yICg7IGkgIT0gZW5kOyArK2kpCi0gICAgICAgIG1pbWVU
eXBlcy5hZGQoaS0+a2V5KTsKKyAgICAgICAgbWltZVR5cGVzLmFkZChpLT5maXJzdCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IDEyODhmZTE3Y2YwOTNmYjQ0ZDFiYzQwYzY4Njk1MmEwMmE0ZjQwMjguLjRlNDMx
MzFiMWQyNTQ4MzcxZjcxNTc0ZjUxNTY1N2UzZDQyZDA4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMTUzLDggKzE1Myw4
IEBAIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6OmNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCkgY29uc3QKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG5ld0hlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBpID0gbmV3SGVhZGVycy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAg
IEF0b21pY1N0cmluZyBoZWFkZXJOYW1lID0gaS0+a2V5OwotICAgICAgICBpZiAoaS0+dmFsdWUg
IT0gb2xkSGVhZGVycy5nZXQoaGVhZGVyTmFtZSkpCisgICAgICAgIEF0b21pY1N0cmluZyBoZWFk
ZXJOYW1lID0gaS0+Zmlyc3Q7CisgICAgICAgIGlmIChpLT5zZWNvbmQgIT0gb2xkSGVhZGVycy5n
ZXQoaGVhZGVyTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggYWRlOTgzZTg2NWU2NGI4N2NlMWMxMWM4MzVlZjQ3NWVkNmI3MTM3Yi4uZDdh
YmNhZTg0MGM3OTZkNjFhYjYzNjA0NWZkNWFmNWRkNzJjNzkxNiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC02MTIsOCArNjEyLDggQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6c3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgp
CiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlQ2xpZW50Kj4gY2xpZW50c1RvTW92ZTsKICAgICBI
YXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+OjppdGVyYXRvciBlbmQyID0gbV9j
bGllbnRzLmVuZCgpOwogICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGll
bnQqPjo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsgaXQgIT0gZW5kMjsgKytpdCkg
ewotICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gaXQtPmtleTsKLSAgICAg
ICAgdW5zaWduZWQgY291bnQgPSBpdC0+dmFsdWU7CisgICAgICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSBpdC0+Zmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gaXQtPnNl
Y29uZDsKICAgICAgICAgd2hpbGUgKGNvdW50KSB7CiAgICAgICAgICAgICBjbGllbnRzVG9Nb3Zl
LmFwcGVuZChjbGllbnQpOwogICAgICAgICAgICAgLS1jb3VudDsKQEAgLTY0Nyw5ICs2NDcsOSBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG5ld0hlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG5ld0hlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIC8vIERvbid0IGFsbG93IDMwNCByZXNwb25zZSB0byB1cGRhdGUgY29udGVudCBoZWFk
ZXJzLCB0aGVzZSBjYW4ndCBjaGFuZ2UgYnV0IHNvbWUgc2VydmVycyBzZW5kIHdyb25nIHZhbHVl
cy4KLSAgICAgICAgaWYgKGl0LT5rZXkuc3RhcnRzV2l0aChjb250ZW50SGVhZGVyUHJlZml4LCBm
YWxzZSkpCisgICAgICAgIGlmIChpdC0+Zmlyc3Quc3RhcnRzV2l0aChjb250ZW50SGVhZGVyUHJl
Zml4LCBmYWxzZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9yZXNwb25zZS5z
ZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgbV9yZXNwb25z
ZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyLmgKaW5kZXggNzkzM2IwYjgxNGM1MjEyNTZlMDc2MGY4NjFiNDMxMDk3Yjg5
YjU5Yy4uOGIzNzgwYjVlNjRiMjE0MzQ2Mjg5NmJkYTJhNmEyNjVhNWE4YTA3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICBJdGVyYXRvciBlbmQg
PSBzZXQuZW5kKCk7CiAgICAgICAgIHNpemVfdCBjbGllbnRJbmRleCA9IDA7CiAgICAgICAgIGZv
ciAoSXRlcmF0b3IgY3VycmVudCA9IHNldC5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJy
ZW50KQotICAgICAgICAgICAgbV9jbGllbnRWZWN0b3JbY2xpZW50SW5kZXgrK10gPSBjdXJyZW50
LT5rZXk7CisgICAgICAgICAgICBtX2NsaWVudFZlY3RvcltjbGllbnRJbmRleCsrXSA9IGN1cnJl
bnQtPmZpcnN0OwogICAgIH0KIAogICAgIFQqIG5leHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTVjMjE0MmI5
ZDEwZTA4ZGU4ZWQwZWFlZjc1Nzk0NTFiYWRjNmU2OS4uYjI1OGMwNTdmZjNhZjExMTk1ODBkZTFh
ZjYwODQwNTMyZjZhMGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAgICAgY2xlYXJQcmVsb2Fkcygp
OwogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNv
dXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9
IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBp
dC0+dmFsdWUtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKDApOworICAgICAgICBpdC0+
c2Vjb25kLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKIAogICAgIC8vIE1ha2Ug
c3VyZSBubyByZXF1ZXN0cyBzdGlsbCBwb2ludCB0byB0aGlzIENhY2hlZFJlc291cmNlTG9hZGVy
CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID09IDApOwpAQCAtNDE5LDcgKzQxOSw3IEBAIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgaWYgKG1lbW9yeUNhY2hlKCktPmRpc2FibGVkKCkp
IHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50
UmVzb3VyY2VzLmZpbmQodXJsLnN0cmluZygpKTsKICAgICAgICAgaWYgKGl0ICE9IG1fZG9jdW1l
bnRSZXNvdXJjZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0T3duaW5nQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIoMCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPd25pbmdD
YWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKICAgICAgICAgICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMu
cmVtb3ZlKGl0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKIAogICAg
IERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMu
ZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKHJlc291cmNl
LT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKICAgICAgICAgICAg
IENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2Fz
dDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKQEAgLTY1MSw3ICs2NTEsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UpIGNvbnN0CiAjaWZuZGVmIE5ERUJVRwogICAgIERvY3VtZW50UmVzb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5maW5kKHJlc291cmNlLT51
cmwoKSk7CiAgICAgaWYgKGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCkpCi0gICAgICAg
IEFTU0VSVChpdC0+dmFsdWUuZ2V0KCkgPT0gcmVzb3VyY2UpOworICAgICAgICBBU1NFUlQoaXQt
PnNlY29uZC5nZXQoKSA9PSByZXNvdXJjZSk7CiAjZW5kaWYKICAgICBtX2RvY3VtZW50UmVzb3Vy
Y2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOwogfQpAQCAtNjg1LDkgKzY4NSw5IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoKQog
ICAgIFN0cmluZ1ZlY3RvciByZXNvdXJjZXNUb0RlbGV0ZTsKIAogICAgIGZvciAoRG9jdW1lbnRS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52
YWx1ZS0+aGFzT25lSGFuZGxlKCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlc1RvRGVsZXRlLmFw
cGVuZChpdC0+a2V5KTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0T3duaW5nQ2FjaGVkUmVz
b3VyY2VMb2FkZXIoMCk7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5oYXNPbmVIYW5kbGUoKSkg
eworICAgICAgICAgICAgcmVzb3VyY2VzVG9EZWxldGUuYXBwZW5kKGl0LT5maXJzdCk7CisgICAg
ICAgICAgICBpdC0+c2Vjb25kLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtODgzLDggKzg4Myw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pCiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpMb2FkZXIpOwogICAgIGluZm8uYWRkSGFzaE1hcChtX2RvY3Vt
ZW50UmVzb3VyY2VzKTsKICAgICBmb3IgKERvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGkgIT0gbV9kb2N1bWVudFJlc291
cmNlcy5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGkt
PmtleSk7Ci0gICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGktPnZhbHVlKTsKKyAg
ICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoaS0+Zmlyc3QpOworICAgICAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOwogICAgIH0KICAgICBpbmZvLmFkZEhh
c2hTZXQobV92YWxpZGF0ZWRVUkxzKTsKICAgICBpZiAobV9wcmVsb2FkcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGMzODg2YTQwZThhNmVlY2U5
MTllZTU5NTUyMjJkOWE0ODk2NWIyNDUuLjY2MTExZDczZjdkMWZiMDEyMTk1NmFlYWZkMTAzN2Fk
YmQyOGIwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cApAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dp
dGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAgIENhY2hlZFJlc291cmNlTWFw
OjppdGVyYXRvciBlID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlOyArK2l0KSB7
Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZDsKICAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIGlmICghcmVzb3VyY2VPcmlnaW4pCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIE1lbW9yeUNhY2hl
OjpnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKQogewogICAg
IENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAg
Zm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigp
OyBpdCAhPSBlOyArK2l0KQotICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhpdC0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgIG9yaWdpbnMuYWRkKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0LT5zZWNvbmQtPnVybCgpKSk7CiB9CiAK
IHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtNjg5LDcgKzY4OSw3IEBAIE1lbW9yeUNhY2hlOjpT
dGF0aXN0aWNzIE1lbW9yeUNhY2hlOjpnZXRTdGF0aXN0aWNzKCkKICAgICBTdGF0aXN0aWNzIHN0
YXRzOwogICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gbV9yZXNvdXJjZXMuZW5k
KCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1fcmVzb3VyY2Vz
LmJlZ2luKCk7IGkgIT0gZTsgKytpKSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSA9IGktPnZhbHVlOworICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpLT5zZWNv
bmQ7CiAgICAgICAgIHN3aXRjaCAocmVzb3VyY2UtPnR5cGUoKSkgewogICAgICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICAgICAgc3RhdHMuaW1hZ2VzLmFk
ZFJlc291cmNlKHJlc291cmNlKTsKQEAgLTcyMSw4ICs3MjEsOCBAQCB2b2lkIE1lbW9yeUNhY2hl
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogICAgIGluZm8uYWRkSGFzaE1hcChtX3Jlc291cmNlcyk7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKENh
Y2hlZFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsg
aSAhPSBlOyArK2kpIHsKLSAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoaS0+a2V5
KTsKLSAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoaS0+dmFsdWUpOworICAgICAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5maXJzdCk7CisgICAgICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKGktPnNlY29uZCk7CiAgICAgfQogICAgIGluZm8uYWRkVmVjdG9y
KG1fYWxsUmVzb3VyY2VzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2xpdmVEZWNvZGVkUmVzb3Vy
Y2VzKTsKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZChi
b29sIGRpc2FibGVkKQogICAgICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IG1f
cmVzb3VyY2VzLmJlZ2luKCk7CiAgICAgICAgIGlmIChpID09IG1fcmVzb3VyY2VzLmVuZCgpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGV2aWN0KGktPnZhbHVlKTsKKyAgICAgICAgZXZp
Y3QoaS0+c2Vjb25kKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCmluZGV4IGRiMDgzM2UxZWM0NzgzZDYzOWY4YjU1NWUyOWQwNGNkOWVk
ZmVlNTkuLjcxMDY0OGY5NGFkZTFmZDYyMGRkZGVhZGI2MDc2ZWJlNWU1MTBiMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBQYWdlVVJMUmVjb3JkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3BhZ2VVUkxUb1JlY29y
ZE1hcC5iZWdpbigpOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUGFnZVVSTFJlY29yZCo+Ojpp
dGVyYXRvciBlbmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5lbmQoKTsKICAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAoKml0ZXIpLnZhbHVlLT5zZXRJY29u
UmVjb3JkKDApOworICAgICAgICAgICAgKCppdGVyKS5zZWNvbmQtPnNldEljb25SZWNvcmQoMCk7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGljb25VUkwgLT4gSWNvblJlY29y
ZCBtYXAKICAgICAgICAgbV9pY29uVVJMVG9SZWNvcmRNYXAuY2xlYXIoKTsKQEAgLTc4NSw3ICs3
ODUsNyBAQCBzaXplX3QgSWNvbkRhdGFiYXNlOjppY29uUmVjb3JkQ291bnRXaXRoRGF0YSgpCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIEljb25SZWNvcmQqPjo6aXRlcmF0b3IgZW5kID0gbV9pY29uVVJM
VG9SZWNvcmRNYXAuZW5kKCk7CiAgICAgCiAgICAgZm9yICg7IGkgIT0gZW5kOyArK2kpCi0gICAg
ICAgIHJlc3VsdCArPSAoKCppKS52YWx1ZS0+aW1hZ2VEYXRhU3RhdHVzKCkgPT0gSW1hZ2VEYXRh
U3RhdHVzUHJlc2VudCk7CisgICAgICAgIHJlc3VsdCArPSAoKCppKS5zZWNvbmQtPmltYWdlRGF0
YVN0YXR1cygpID09IEltYWdlRGF0YVN0YXR1c1ByZXNlbnQpOwogICAgICAgICAgICAgCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1NTYsMTMgKzE1NTYsMTMgQEAgdm9pZCBJY29uRGF0YWJh
c2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKQogICAgIH0KIAog
ICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b1Jl
dGFpbi5iZWdpbigpLCBlbmQgPSB0b1JldGFpbi5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIEFTU0VSVCghaXQtPmtleS5pbXBsKCkgfHwgaXQtPmtleS5pbXBsKCktPmhhc09uZVJl
ZigpKTsKLSAgICAgICAgcGVyZm9ybVJldGFpbkljb25Gb3JQYWdlVVJMKGl0LT5rZXksIGl0LT52
YWx1ZSk7CisgICAgICAgIEFTU0VSVCghaXQtPmZpcnN0LmltcGwoKSB8fCBpdC0+Zmlyc3QuaW1w
bCgpLT5oYXNPbmVSZWYoKSk7CisgICAgICAgIHBlcmZvcm1SZXRhaW5JY29uRm9yUGFnZVVSTChp
dC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgIH0KIAogICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b1JlbGVhc2UuYmVnaW4oKSwgZW5kID0gdG9S
ZWxlYXNlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQVNTRVJUKCFpdC0+a2V5
LmltcGwoKSB8fCBpdC0+a2V5LmltcGwoKS0+aGFzT25lUmVmKCkpOwotICAgICAgICBwZXJmb3Jt
UmVsZWFzZUljb25Gb3JQYWdlVVJMKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgIEFTU0VS
VCghaXQtPmZpcnN0LmltcGwoKSB8fCBpdC0+Zmlyc3QuaW1wbCgpLT5oYXNPbmVSZWYoKSk7Cisg
ICAgICAgIHBlcmZvcm1SZWxlYXNlSWNvbkZvclBhZ2VVUkwoaXQtPmZpcnN0LCBpdC0+c2Vjb25k
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Yzg4OWZhYTM4
MzM3NmJlNWRhNzI3NDMxZjc3YzQzMzUyMGJjOWI5Li5kNzg3YTY1YmQ2ZDgwYzU1MGY4ZDEyYTBk
NGYxMzFmNzg2MWQxN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ0JlZm9yZVVubG9hZEV2
ZW50cygpCiAgICAgVmVjdG9yPFJlZlB0cjxET01XaW5kb3c+ID4gd2luZG93czsKICAgICBET01X
aW5kb3dTZXQ6Oml0ZXJhdG9yIGVuZCA9IHNldC5lbmQoKTsKICAgICBmb3IgKERPTVdpbmRvd1Nl
dDo6aXRlcmF0b3IgaXQgPSBzZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB3
aW5kb3dzLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgd2luZG93cy5hcHBlbmQoaXQtPmZpcnN0
KTsKIAogICAgIHNpemVfdCBzaXplID0gd2luZG93cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIERPTVdpbmRv
dzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCkKICAgICBWZWN0b3I8UmVmUHRyPERP
TVdpbmRvdz4gPiB3aW5kb3dzOwogICAgIERPTVdpbmRvd1NldDo6aXRlcmF0b3IgZW5kID0gc2V0
LmVuZCgpOwogICAgIGZvciAoRE9NV2luZG93U2V0OjppdGVyYXRvciBpdCA9IHNldC5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdpbmRvd3MuYXBwZW5kKGl0LT5rZXkpOworICAg
ICAgICB3aW5kb3dzLmFwcGVuZChpdC0+Zmlyc3QpOwogCiAgICAgc2l6ZV90IHNpemUgPSB3aW5k
b3dzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDBkYmViZmY3OTc1ODcxYmM1YzExOTEx
MDQ3ZTI4YjFiYjM5YjhhOGQuLmRjNmNmYTg3NTJkMjdmZDFkNzRmMGJjMjM4ZTBlMzJkM2Y5Yzk5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM2MzcsNyArMzYzNyw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91
Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIHJlbGVhc2VkIG9yIGNhbmNlbGxlZCBpdCB3aWxs
IG9ubHkgYXBwZWFyIGluIHRoZSBjaGFuZ2VkVG91Y2hlcyBsaXN0LgogICAgICAgICBpZiAocG9p
bnRTdGF0ZSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQgJiYgcG9pbnRTdGF0
ZSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKSB7CiAgICAgICAgICAgICB0
b3VjaGVzLT5hcHBlbmQodG91Y2gpOwotICAgICAgICAgICAgdGFyZ2V0VG91Y2hlc0l0ZXJhdG9y
LT52YWx1ZS0+YXBwZW5kKHRvdWNoKTsKKyAgICAgICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRv
ci0+c2Vjb25kLT5hcHBlbmQodG91Y2gpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTm93IGJ1
aWxkIHVwIHRoZSBjb3JyZWN0IGxpc3QgZm9yIGNoYW5nZWRUb3VjaGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCAxODgxMjlhZDBhMDRlZjY3MThhZTY1ZTcwMjk3YWI0OWYzOTliZWE2Li5jOGUz
YmZmNTIwMjRjYTBiMWU1NjdhM2QwNGZlMTk0ZTNiNzkxNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKFVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiAgICAgICAgIHJldHVybjsKICAgICBV
c2VyU2NyaXB0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB1c2VyU2NyaXB0cy0+ZW5kKCk7CiAg
ICAgZm9yIChVc2VyU2NyaXB0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHVzZXJTY3JpcHRzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGluamVjdFVzZXJTY3JpcHRzRm9yV29y
bGQoaXQtPmtleS5nZXQoKSwgKml0LT52YWx1ZSwgaW5qZWN0aW9uVGltZSk7CisgICAgICAgIGlu
amVjdFVzZXJTY3JpcHRzRm9yV29ybGQoaXQtPmZpcnN0LmdldCgpLCAqaXQtPnNlY29uZCwgaW5q
ZWN0aW9uVGltZSk7CiB9CiAKIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdFZlY3RvciYgdXNlclNjcmlw
dHMsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5jcHAKaW5kZXggMDMyN2JiMGI2YzdlZWI4M2MyYzNlOWQwMjYyN2I4MGRjNzE5YzFm
My4uNDVkMjVmNTUyMTRkNzQ0MTk0ZTkzN2ZhMzFlNmU2NDYwZWFjYWY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcApAQCAtOTMsMTIgKzkzLDEyIEBAIFBhZ2VHcm91cCogUGFnZUdyb3Vw
OjpwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiAgICAgUGFnZUdyb3VwTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdyb3VwTmFtZSwgMCk7CiAKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBQYWdlR3JvdXAo
Z3JvdXBOYW1lKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7Cisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3IFBhZ2VHcm91cChncm91cE5hbWUp
OwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogdm9pZCBQ
YWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlKCkKQEAgLTEwOSw4ICsxMDksOCBAQCB2b2lkIFBh
Z2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQogICAgIFBhZ2VHcm91cE1hcDo6aXRlcmF0b3Ig
ZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAKICAgICBmb3IgKFBhZ2VHcm91cE1hcDo6aXRlcmF0
b3IgaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
aWYgKGl0LT52YWx1ZS0+aGFzTG9jYWxTdG9yYWdlKCkpCi0gICAgICAgICAgICBpdC0+dmFsdWUt
PmxvY2FsU3RvcmFnZSgpLT5jbG9zZSgpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+aGFzTG9j
YWxTdG9yYWdlKCkpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5sb2NhbFN0b3JhZ2UoKS0+Y2xv
c2UoKTsKICAgICB9CiB9CiAKQEAgLTEyMSw4ICsxMjEsOCBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xl
YXJMb2NhbFN0b3JhZ2VGb3JBbGxPcmlnaW5zKCkKIAogICAgIFBhZ2VHcm91cE1hcDo6aXRlcmF0
b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAgICAgZm9yIChQYWdlR3JvdXBNYXA6Oml0ZXJh
dG9yIGl0ID0gcGFnZUdyb3Vwcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IGlmIChpdC0+dmFsdWUtPmhhc0xvY2FsU3RvcmFnZSgpKQotICAgICAgICAgICAgaXQtPnZhbHVl
LT5sb2NhbFN0b3JhZ2UoKS0+Y2xlYXJBbGxPcmlnaW5zRm9yRGVsZXRpb24oKTsKKyAgICAgICAg
aWYgKGl0LT5zZWNvbmQtPmhhc0xvY2FsU3RvcmFnZSgpKQorICAgICAgICAgICAgaXQtPnNlY29u
ZC0+bG9jYWxTdG9yYWdlKCktPmNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9uKCk7CiAgICAgfQog
fQogCkBAIC0xMzMsOCArMTMzLDggQEAgdm9pZCBQYWdlR3JvdXA6OmNsZWFyTG9jYWxTdG9yYWdl
Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKICAgICBQYWdlR3JvdXBNYXA6Oml0
ZXJhdG9yIGVuZCA9IHBhZ2VHcm91cHMtPmVuZCgpOwogICAgIGZvciAoUGFnZUdyb3VwTWFwOjpp
dGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpZiAoaXQtPnZhbHVlLT5oYXNMb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgICAgIGl0LT52
YWx1ZS0+bG9jYWxTdG9yYWdlKCktPmNsZWFyT3JpZ2luRm9yRGVsZXRpb24ob3JpZ2luKTsKKyAg
ICAgICAgaWYgKGl0LT5zZWNvbmQtPmhhc0xvY2FsU3RvcmFnZSgpKQorICAgICAgICAgICAgaXQt
PnNlY29uZC0+bG9jYWxTdG9yYWdlKCktPmNsZWFyT3JpZ2luRm9yRGVsZXRpb24ob3JpZ2luKTsK
ICAgICB9ICAgIAogfQogICAgIApAQCAtMTQ1LDggKzE0NSw4IEBAIHZvaWQgUGFnZUdyb3VwOjpz
eW5jTG9jYWxTdG9yYWdlKCkKIAogICAgIFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFn
ZUdyb3Vwcy0+ZW5kKCk7CiAgICAgZm9yIChQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yIGl0ID0gcGFn
ZUdyb3Vwcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFs
dWUtPmhhc0xvY2FsU3RvcmFnZSgpKQotICAgICAgICAgICAgaXQtPnZhbHVlLT5sb2NhbFN0b3Jh
Z2UoKS0+c3luYygpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+aGFzTG9jYWxTdG9yYWdlKCkp
CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5sb2NhbFN0b3JhZ2UoKS0+c3luYygpOwogICAgIH0K
IH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9X
b3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgT3du
UHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdChzb3Vy
Y2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJh
bWVzKSk7CiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAgICBtX3VzZXJTY3JpcHRzID0g
YWRvcHRQdHIobmV3IFVzZXJTY3JpcHRNYXApOwotICAgIE93blB0cjxVc2VyU2NyaXB0VmVjdG9y
PiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNjcmlwdHNJbldv
cmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25k
OwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldvcmxkID0gYWRv
cHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQo
dXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgUGFnZUdyb3Vw
OjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3Qg
U3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IGFk
b3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xp
c3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMp
CiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0
TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0c0luV29y
bGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxk
ID0gbV91c2VyU3R5bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICBpZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkKICAgICAgICAgc3R5bGVTaGVldHNJbldv
cmxkID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0VmVjdG9yKTsKICAgICBzdHlsZVNoZWV0
c0luV29ybGQtPmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNlKCkpOwpAQCAtMzA2LDcgKzMw
Niw3IEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIGNvbnN0IEtVUkwmIHVyCiAgICAgaWYgKGl0ID09IG1fdXNlclNjcmlw
dHMtPmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgVXNlclNjcmlwdFZlY3Rvciog
c2NyaXB0cyA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICBVc2VyU2NyaXB0VmVjdG9yKiBzY3JpcHRz
ID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICBmb3IgKGludCBpID0gc2NyaXB0cy0+c2l6ZSgpIC0g
MTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgaWYgKHNjcmlwdHMtPmF0KGkpLT51cmwoKSA9PSB1
cmwpCiAgICAgICAgICAgICBzY3JpcHRzLT5yZW1vdmUoaSk7CkBAIC0zMjgsNyArMzI4LDcgQEAg
dm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIGNvbnN0IEtVUkwKICAgICBpZiAoaXQgPT0gbV91c2VyU3R5bGVTaGVldHMt
PmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgVXNlclN0eWxlU2hlZXRWZWN0b3Iq
IHN0eWxlc2hlZXRzID0gaXQtPnZhbHVlLmdldCgpOworICAgIFVzZXJTdHlsZVNoZWV0VmVjdG9y
KiBzdHlsZXNoZWV0cyA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgZm9yIChpbnQgaSA9IHN0eWxl
c2hlZXRzLT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBpZiAoc3R5bGVzaGVl
dHMtPmF0KGkpLT51cmwoKSA9PSB1cmwpIHsKICAgICAgICAgICAgIHN0eWxlc2hlZXRzLT5yZW1v
dmUoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IGExNjE0OTI1
NWM3ZTNlNDI2MDM5YzRhMTMyZmIxNjJiYzdhMTdmZTUuLmM5MTFkNTRhOTI1NDZhN2NlMTRmMTg2
NmVjYmNlZDhiNTZlNTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0zMzksNyArMzM5LDcgQEAgS1VSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9yQmxhbmtGcmFt
ZShGcmFtZSogZnJhbWUpCiB7CiAgICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+OjppdGVyYXRvciBp
dGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKICAgICBpZiAoaXRlciAhPSBtX2Js
YW5rRnJhbWVVUkxzLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgICAg
IHJldHVybiBpdGVyLT5zZWNvbmQ7CiAgICAgU3RyaW5nIHVybCA9ICJ3eWNpd3lnOi8vZnJhbWUv
IiArIFN0cmluZzo6bnVtYmVyKG1fYmxhbmtGcmFtZUNvdW50ZXIrKyk7CiAgICAgS1VSTCBmYWtl
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBtX2JsYW5rRnJhbWVVUkxzLmFkZChmcmFt
ZSwgZmFrZVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDVi
MzZmNGY3MTZjNDRiZmIwOWYyMGU2MzJjYzBkMDM4NmYzY2NhM2MuLmMyYTVhYjExNDM1ZWY2ZGIw
NTc2OGM3NmNhMDM1N2I1NjI1ODMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCkBAIC0xMzMsOSArMTMzLDkgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CiAgICAgT3JpZ2lu
QWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJj
ZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCk7CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCog
bGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChP
cmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJk
b21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwogfQogCkBA
IC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXIKICAgICBpZiAoaXQgPT0g
bWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Qq
IGxpc3QgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0
ID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICBzaXplX3QgaW5kZXggPSBsaXN0LT5maW5kKE9yaWdp
bkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFp
bnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zKSk7CiAgICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CmluZGV4IGE1NGVkM2I1ZGYyZTQ4ZTg3ODk5NGZiNDUxZTAxMmU1NTZlOTIzMzEuLmU5N2M2NGY3
M2RjYjBlMjdhZTQ5NjRkNDc1ZTYyYWI4MjliM2ZjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRHZW5lcmljRm9udEZh
bWlseU1hcChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBjb25zdCBBCiAgICAgICAgIGlm
IChpdCA9PSBmb250TWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb250
TWFwLnJlbW92ZShpdCk7Ci0gICAgfSBlbHNlIGlmIChpdCAhPSBmb250TWFwLmVuZCgpICYmIGl0
LT52YWx1ZSA9PSBmYW1pbHkpCisgICAgfSBlbHNlIGlmIChpdCAhPSBmb250TWFwLmVuZCgpICYm
IGl0LT5zZWNvbmQgPT0gZmFtaWx5KQogICAgICAgICByZXR1cm47CiAgICAgZWxzZQogICAgICAg
ICBmb250TWFwLnNldChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCksIGZhbWlseSk7CkBAIC03Myw3
ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRHZW5lcmljRm9u
dEZhbWlseUZvclNjcmlwdChjb25zdCBTY3JpcHRGb250CiB7CiAgICAgU2NyaXB0Rm9udEZhbWls
eU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmb250TWFwLmZpbmQoc3RhdGljX2Nhc3Q8aW50Pihz
Y3JpcHQpKTsKICAgICBpZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAgICAgaWYgKHNjcmlwdCAhPSBV
U0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KGZvbnRNYXAsIFVTQ1JJUFRfQ09NTU9OKTsKICAgICByZXR1cm4gZW1wdHlBdG9tOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCA4MzI4YzVkNGRmMzI5OTQyYjU5ZjNlY2My
MjUzNTY4Y2UyYThhMTFkLi4wMTI4ZWY4YTQwYTQyNDM1NGFiNWY4ZTUwYmE4ZWNjNjIyNTdiM2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBpbnQg
U3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIoU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlzdGVu
ZXIpCiAjaWYgZGVmaW5lZChERUJVRykKICAgICAvLyBDaGVjayBpZiBhbHJlYWR5IHByZXNlbnQu
CiAgICAgZm9yIChIYXNoTWFwPGludCwgU3BlZWNoSW5wdXRMaXN0ZW5lcio+OjppdGVyYXRvciBp
dCA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7IGl0ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQot
ICAgICAgQVNTRVJUKGl0LT52YWx1ZSAhPSBsaXN0ZW5lcik7CisgICAgICBBU1NFUlQoaXQtPnNl
Y29uZCAhPSBsaXN0ZW5lcik7CiAjZW5kaWYKIAogICAgIG1fbGlzdGVuZXJzLmFkZChtX25leHRM
aXN0ZW5lcklkLCBsaXN0ZW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
CmluZGV4IDFiNmIxZDBiMTYzMmU4MmE5NGVmMDQ2NzlkMGE3ZDQ3YWQzMWNiNTAuLjc1NjQxNTI4
ZGZlYzJmNGJlYzdlZWEzM2QwNzQwYTBkYzdkN2JhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgYm9vbCBXaW5kb3dGZWF0dXJlczo6
Ym9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFy
KgogICAgIERpYWxvZ0ZlYXR1cmVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGZlYXR1cmVzLmZp
bmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBk
ZWZhdWx0VmFsdWU7Ci0gICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGl0LT52YWx1ZTsKKyAgICBj
b25zdCBTdHJpbmcmIHZhbHVlID0gaXQtPnNlY29uZDsKICAgICByZXR1cm4gdmFsdWUuaXNOdWxs
KCkgfHwgdmFsdWUgPT0gIjEiIHx8IHZhbHVlID09ICJ5ZXMiIHx8IHZhbHVlID09ICJvbiI7CiB9
CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBmbG9hdCBXaW5kb3dGZWF0dXJlczo6ZmxvYXRGZWF0dXJl
KGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcgogICAgIC8vIEZJ
WE1FOiBUaGUgdG9Eb3VibGUgZnVuY3Rpb24gZG9lcyBub3Qgb2ZmZXIgYSB3YXkgdG8gdGVsbCAi
MHEiIGZyb20gc3RyaW5nIHdpdGggbm8gZGlnaXRzIGluIGl0OiBCb3RoCiAgICAgLy8gcmV0dXJu
IHRoZSBudW1iZXIgMCBhbmQgZmFsc2UgZm9yIG9rLiBCdXQgIjBxIiBzaG91bGQgeWllbGQgdGhl
IG1pbmltdW0gcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQuCiAgICAgYm9vbCBvazsKLSAgICBkb3Vi
bGUgcGFyc2VkTnVtYmVyID0gaXQtPnZhbHVlLnRvRG91YmxlKCZvayk7CisgICAgZG91YmxlIHBh
cnNlZE51bWJlciA9IGl0LT5zZWNvbmQudG9Eb3VibGUoJm9rKTsKICAgICBpZiAoKHBhcnNlZE51
bWJlciA9PSAwICYmICFvaykgfHwgaXNuYW4ocGFyc2VkTnVtYmVyKSkKICAgICAgICAgcmV0dXJu
IGRlZmF1bHRWYWx1ZTsKICAgICBpZiAocGFyc2VkTnVtYmVyIDwgbWluIHx8IG1heCA8PSBtaW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDVlMDcxN2UwYTljZmJhMzI4OTgyOTU2MjE3NzkxMmMwNmY3OGM4YmUu
LmM0OTExOWU2YTEzYzAxNGM4ZjI1OGUyOTQ2MTM4MTFjZGZhMGQ1MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBA
IC05MywxNCArOTMsMTQgQEAgZG91YmxlIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRh
dGVBbmltYXRpb25zKFNldENoYW5nZWQgY2FsbFNldENoYW5nZWQvKgogCiAgICAgUmVuZGVyT2Jq
ZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9jb21wb3Np
dGVBbmltYXRpb25zLmVuZCgpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBh
bmltYXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFu
aW0gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFu
aW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWNvbXBBbmltLT5zdXNwZW5kZWQo
KSAmJiBjb21wQW5pbS0+aGFzQW5pbWF0aW9ucygpKSB7CiAgICAgICAgICAgICBkb3VibGUgdCA9
IGNvbXBBbmltLT50aW1lVG9OZXh0U2VydmljZSgpOwogICAgICAgICAgICAgaWYgKHQgIT0gLTEg
JiYgKHQgPCB0aW1lVG9OZXh0U2VydmljZSB8fCB0aW1lVG9OZXh0U2VydmljZSA9PSAtMSkpCiAg
ICAgICAgICAgICAgICAgdGltZVRvTmV4dFNlcnZpY2UgPSB0OwogICAgICAgICAgICAgaWYgKCF0
aW1lVG9OZXh0U2VydmljZSkgewogICAgICAgICAgICAgICAgIGlmIChjYWxsU2V0Q2hhbmdlZCA9
PSBDYWxsU2V0Q2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gaXQt
PmtleS0+bm9kZSgpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gaXQtPmZpcnN0
LT5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZSB8fCAobm9kZS0+ZG9j
dW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkpOwogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGVkU2V0Q2hhbmdlZCA9IHRydWU7CkBAIC0yOTIs
OSArMjkyLDkgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1h
dGlvbnNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQKICAgICAKICAgICBSZW5kZXJPYmpl
Y3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0
ZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFu
aW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0
LT5rZXk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+Zmlyc3Q7CiAgICAg
ICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkgewotICAgICAgICAgICAg
Q29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAg
ICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICAgICAgY29tcEFuaW0tPnN1c3BlbmRBbmltYXRpb25zKCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0zMDgsOSArMzA4LDkgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cmVz
dW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAKICAgICBS
ZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3RBbmltYXRp
b25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2luKCk7
IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGl0LT5rZXk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+Zmly
c3Q7CiAgICAgICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkgewotICAg
ICAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsK
KyAgICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+c2Vjb25kLmdl
dCgpOwogICAgICAgICAgICAgY29tcEFuaW0tPnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTM5Niw4ICszOTYsOCBAQCB1bnNpZ25lZCBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudAogICAg
IAogICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9u
c0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKICAgICBmb3IgKFJlbmRlck9iamVj
dEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMu
YmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gaXQtPmtleTsKLSAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21w
QW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGl0LT5maXJzdDsKKyAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT5z
ZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVu
dCkKICAgICAgICAgICAgIGNvdW50ICs9IGNvbXBBbmltLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
b21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29t
cG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCAwYjBmMzc5ZDU2YWJkODVjNjNiYWUxNGNlNWVhMmI0
OWFiMTNlZThlLi5mMzU3NzgxODk3NDBlZTM2ZThhMzNhNTBhZjZjYWQ1NjkyOTBmOTZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlv
bi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OmNsZWFyUmVu
ZGVyZXIoKQogICAgICAgICAvLyBhbiBhbmltYXRpb24gY2FsbGJhY2sgKHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTIpCiAgICAgICAgIENTU1Byb3BlcnR5
VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0
aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNpdGlvbnNF
bmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiB0cmFuc2l0aW9uID0g
aXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIHRyYW5zaXRp
b24gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbGxlcigp
LT5hbmltYXRpb25XaWxsQmVSZW1vdmVkKHRyYW5zaXRpb24pOwogICAgICAgICAgICAgdHJhbnNp
dGlvbi0+Y2xlYXIoKTsKICAgICAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIENvbXBvc2l0
ZUFuaW1hdGlvbjo6Y2xlYXJSZW5kZXJlcigpCiAgICAgICAgIG1fa2V5ZnJhbWVBbmltYXRpb25z
LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRl
cmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmVuZCgpOwogICAgICAg
ICBmb3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9rZXlmcmFtZUFu
aW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewotICAgICAgICAg
ICAgS2V5ZnJhbWVBbmltYXRpb24qIGFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgICAg
ICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAg
ICBhbmltYXRpb25Db250cm9sbGVyKCktPmFuaW1hdGlvbldpbGxCZVJlbW92ZWQoYW5pbSk7CiAg
ICAgICAgICAgICBhbmltLT5jbGVhcigpOwogICAgICAgICB9CkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBSZW5kZXJTdHlsZSoKICAgICAvLyBpbiB0aGUgbmV4dCBsb29wIGFuZCB0aGVuIHRv
c3MgdGhlIG9uZXMgdGhhdCBkaWRuJ3QgZ2V0IG1hcmtlZC4KICAgICBDU1NQcm9wZXJ0eVRyYW5z
aXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RyYW5zaXRpb25zLmVuZCgpOwogICAg
IGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Ry
YW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5z
ZXRBY3RpdmUoZmFsc2UpOworICAgICAgICBpdC0+c2Vjb25kLT5zZXRBY3RpdmUoZmFsc2UpOwog
ICAgICAgICAKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1vZGlmaWVkQ3VycmVudFN0eWxlOwog
ICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVU
cmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSoKICAgICBWZWN0
b3I8aW50PiB0b0JlUmVtb3ZlZDsKICAgICBlbmQgPSBtX3RyYW5zaXRpb25zLmVuZCgpOwogICAg
IGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Ry
YW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBJbXBsaWNpdEFu
aW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgSW1wbGljaXRBbmltYXRp
b24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWFuaW0tPmFjdGl2ZSgp
KSB7CiAgICAgICAgICAgICBhbmltYXRpb25Db250cm9sbGVyKCktPmFuaW1hdGlvbldpbGxCZVJl
bW92ZWQoYW5pbSk7CiAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQoYW5pbS0+YW5pbWF0
aW5nUHJvcGVydHkoKSk7CkBAIC0yMDcsMTMgKzIwNywxMyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1h
dGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJl
bmRlcgogICAgICAgICAvLyBUaGUgY3VycmVudCBhbmQgdGFyZ2V0IGFuaW1hdGlvbnMgYXJlIHRo
ZSBzYW1lIHNvIHdlIGp1c3QgbmVlZCB0byB0b3NzIGFueSAKICAgICAgICAgLy8gYW5pbWF0aW9u
IHdoaWNoIGlzIGZpbmlzaGVkIChwb3N0QWN0aXZlKS4KICAgICAgICAgZm9yIChBbmltYXRpb25O
YW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7
IGl0ICE9IGtmZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLT5wb3N0QWN0
aXZlKCkpCi0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRJbmRleCgtMSk7CisgICAgICAg
ICAgICBpZiAoaXQtPnNlY29uZC0+cG9zdEFjdGl2ZSgpKQorICAgICAgICAgICAgICAgIGl0LT5z
ZWNvbmQtPnNldEluZGV4KC0xKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IE1hcmsgYWxsIGV4aXN0aW5nIGFuaW1hdGlvbnMgYXMgbm8gbG9uZ2VyIGFjdGl2ZS4KICAgICAg
ICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVB
bmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGtmZW5kOyArK2l0KQotICAgICAgICAgICAgaXQtPnZh
bHVlLT5zZXRJbmRleCgtMSk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRJbmRleCgtMSk7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVG9zcyB0aGUgYW5pbWF0aW9uIG9yZGVyIG1hcC4K
ICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbk9yZGVyTWFwLmNsZWFyKCk7CkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9u
cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXIKICAgICBWZWN0b3I8QXRvbWljU3RyaW5n
SW1wbCo+IGFuaW1zVG9CZVJlbW92ZWQ7CiAgICAga2ZlbmQgPSBtX2tleWZyYW1lQW5pbWF0aW9u
cy5lbmQoKTsKICAgICBmb3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9rZXlmcmFtZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0ga2ZlbmQ7ICsraXQpIHsKLSAgICAg
ICAgS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAg
ICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7
CiAgICAgICAgIGlmIChrZXlmcmFtZUFuaW0tPmluZGV4KCkgPCAwKSB7CiAgICAgICAgICAgICBh
bmltc1RvQmVSZW1vdmVkLmFwcGVuZChrZXlmcmFtZUFuaW0tPm5hbWUoKS5pbXBsKCkpOwogICAg
ICAgICAgICAgYW5pbWF0aW9uQ29udHJvbGxlcigpLT5hbmltYXRpb25XaWxsQmVSZW1vdmVkKGtl
eWZyYW1lQW5pbSk7CkBAIC0yOTAsNyArMjkwLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Q29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQK
ICAgICAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQ1NT
UHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90cmFuc2l0aW9u
cy5lbmQoKTsKICAgICAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgICAgIGlmIChJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1
ZS5nZXQoKSkKKyAgICAgICAgICAgICAgICBpZiAoSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBp
dC0+c2Vjb25kLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBhbmltLT5hbmltYXRlKHRoaXMs
IHJlbmRlcmVyLCBjdXJyZW50U3R5bGUsIHRhcmdldFN0eWxlLCByZXN1bHRTdHlsZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMxMiw3ICszMTIsNyBAQCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUoKSBjb25zdAogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVzdWx0U3R5bGU7CiAgICAgQ1NTUHJvcGVydHlUcmFuc2l0
aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICBm
b3IgKENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90cmFu
c2l0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKEltcGxpY2l0
QW5pbWF0aW9uKiBpbXBsaWNpdEFuaW1hdGlvbiA9IGl0LT52YWx1ZS5nZXQoKSkKKyAgICAgICAg
aWYgKEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsaWNpdEFuaW1hdGlvbiA9IGl0LT5zZWNvbmQuZ2V0
KCkpCiAgICAgICAgICAgICBpbXBsaWNpdEFuaW1hdGlvbi0+Z2V0QW5pbWF0ZWRTdHlsZShyZXN1
bHRTdHlsZSk7CiAgICAgfQogCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBDb21wb3NpdGVBbmlt
YXRpb246OnNldEFuaW1hdGluZyhib29sIGFuaW1hdGluZykKICAgICBpZiAoIW1fdHJhbnNpdGlv
bnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0
X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAg
Zm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJh
bnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNpdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIEltcGxpY2l0QW5pbWF0aW9uKiB0cmFuc2l0aW9uID0gaXQtPnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIHRyYW5zaXRpb24gPSBpdC0+c2Vjb25kLmdldCgp
OwogICAgICAgICAgICAgdHJhbnNpdGlvbi0+c2V0QW5pbWF0aW5nKGFuaW1hdGluZyk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246
OnNldEFuaW1hdGluZyhib29sIGFuaW1hdGluZykKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlv
bnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBBbmltYXRpb25OYW1lTWFwOjpjb25zdF9p
dGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAg
ICAgIGZvciAoQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2tleWZyYW1l
QW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAg
ICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAg
ICAgIGFuaW0tPnNldEFuaW1hdGluZyhhbmltYXRpbmcpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MzU2LDcgKzM1Niw3IEBAIGRvdWJsZSBDb21wb3NpdGVBbmltYXRpb246OnRpbWVUb05leHRTZXJ2
aWNlKCkgY29uc3QKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5k
ID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0g
dHJhbnNpdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiB0
cmFuc2l0aW9uID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRp
b24qIHRyYW5zaXRpb24gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgZG91YmxlIHQg
PSB0cmFuc2l0aW9uID8gdHJhbnNpdGlvbi0+dGltZVRvTmV4dFNlcnZpY2UoKSA6IC0xOwogICAg
ICAgICAgICAgaWYgKHQgPCBtaW5UIHx8IG1pblQgPT0gLTEpCiAgICAgICAgICAgICAgICAgbWlu
VCA9IHQ7CkBAIC0zNjgsNyArMzY4LDcgQEAgZG91YmxlIENvbXBvc2l0ZUFuaW1hdGlvbjo6dGlt
ZVRvTmV4dFNlcnZpY2UoKSBjb25zdAogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5jaGVj
a0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGFuaW1hdGlvbnNFbmQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKTsKICAgICAgICAgZm9y
IChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRp
b25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEtl
eWZyYW1lQW5pbWF0aW9uKiBhbmltYXRpb24gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgICAg
ICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbWF0aW9uID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAg
ICAgICAgIGRvdWJsZSB0ID0gYW5pbWF0aW9uID8gYW5pbWF0aW9uLT50aW1lVG9OZXh0U2Vydmlj
ZSgpIDogLTE7CiAgICAgICAgICAgICBpZiAodCA8IG1pblQgfHwgbWluVCA9PSAtMSkKICAgICAg
ICAgICAgICAgICBtaW5UID0gdDsKQEAgLTM5MCw3ICszOTAsNyBAQCBQYXNzUmVmUHRyPEtleWZy
YW1lQW5pbWF0aW9uPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFuaW1hdGlvbkZvclByb3BlcnR5
KENTU1BybwogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7
CiAgICAgICAgIEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQg
PSBtX2tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChBbmltYXRpb25OYW1l
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0
ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFJlZlB0cjxLZXlmcmFtZUFu
aW1hdGlvbj4gYW5pbSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxLZXlmcmFtZUFu
aW1hdGlvbj4gYW5pbSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoYW5pbS0+aGFzQW5p
bWF0aW9uRm9yUHJvcGVydHkocHJvcGVydHkpKQogICAgICAgICAgICAgICAgIHJldHZhbCA9IGFu
aW07CiAgICAgICAgIH0KQEAgLTQxMCwxNCArNDEwLDE0IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0
aW9uOjpzdXNwZW5kQW5pbWF0aW9ucygpCiAgICAgICAgIG1fa2V5ZnJhbWVBbmltYXRpb25zLmNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0
b3IgYW5pbWF0aW9uc0VuZCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmVuZCgpOwogICAgICAgICBm
b3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9rZXlmcmFtZUFuaW1h
dGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewotICAgICAgICAgICAg
aWYgKEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnZhbHVlLmdldCgpKQorICAgICAgICAg
ICAgaWYgKEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQoKSkKICAgICAg
ICAgICAgICAgICBhbmltLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNlZCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAg
ICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciB0cmFuc2l0aW9u
c0VuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFu
c2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0
ICE9IHRyYW5zaXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBJbXBsaWNpdEFuaW1hdGlv
biogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9u
KiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChhbmltICYmIGFuaW0t
Pmhhc1N0eWxlKCkpCiAgICAgICAgICAgICAgICAgYW5pbS0+dXBkYXRlUGxheVN0YXRlKEFuaW1Q
bGF5U3RhdGVQYXVzZWQpOwogICAgICAgICB9CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBDb21w
b3NpdGVBbmltYXRpb246OnJlc3VtZUFuaW1hdGlvbnMoKQogICAgICAgICBtX2tleWZyYW1lQW5p
bWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIEFuaW1hdGlvbk5hbWVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKTsK
ICAgICAgICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5
ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICAgICAgaWYgKGFuaW0gJiYgYW5pbS0+cGxheVN0YXRlUGxheWluZygpKQogICAgICAgICAg
ICAgICAgIGFuaW0tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGxheWluZyk7CiAgICAg
ICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1l
QW5pbWF0aW9ucygpCiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAg
ICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciB0cmFuc2l0aW9uc0Vu
ZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0
aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9
IHRyYW5zaXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiog
YW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBh
bmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChhbmltICYmIGFuaW0tPmhh
c1N0eWxlKCkpCiAgICAgICAgICAgICAgICAgYW5pbS0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5
U3RhdGVQbGF5aW5nKTsKICAgICAgICAgfQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQ29tcG9z
aXRlQW5pbWF0aW9uOjpvdmVycmlkZUltcGxpY2l0QW5pbWF0aW9ucyhDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KQogICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHko
KSkgewogICAgICAgICBmb3IgKENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV90cmFuc2l0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnZhbHVlLmdldCgpOworICAgICAg
ICAgICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAg
ICAgICAgaWYgKGFuaW0gJiYgYW5pbS0+YW5pbWF0aW5nUHJvcGVydHkoKSA9PSBwcm9wZXJ0eSkK
ICAgICAgICAgICAgICAgICBhbmltLT5zZXRPdmVycmlkZGVuKHRydWUpOwogICAgICAgICB9CkBA
IC00NjgsNyArNDY4LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnJlc3VtZU92ZXJyaWRk
ZW5JbXBsaWNpdEFuaW1hdGlvbnMoQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICBpZiAoIW1fdHJh
bnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRp
b25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgSW1wbGljaXRBbmlt
YXRpb24qIGFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgICAgICBJbXBsaWNpdEFuaW1h
dGlvbiogYW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoYW5pbSAmJiBh
bmltLT5hbmltYXRpbmdQcm9wZXJ0eSgpID09IHByb3BlcnR5KQogICAgICAgICAgICAgICAgIGFu
aW0tPnNldE92ZXJyaWRkZW4oZmFsc2UpOwogICAgICAgICB9CkBAIC00ODEsNyArNDgxLDcgQEAg
Ym9vbCBDb21wb3NpdGVBbmltYXRpb246OmlzQW5pbWF0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgYm9vbCBhY2NlbGUKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hl
Y2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRv
ciBhbmltYXRpb25zRW5kID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgICAgIGZv
ciAoQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2tleWZyYW1lQW5pbWF0
aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBL
ZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIEtl
eWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlm
IChhbmltICYmIGFuaW0tPmlzQW5pbWF0aW5nUHJvcGVydHkocHJvcGVydHksIGFjY2VsZXJhdGVk
T25seSwgaXNSdW5uaW5nTm93KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjppc0FuaW1h
dGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWNjZWxlCiAgICAgaWYg
KCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciB0cmFuc2l0aW9uc0VuZCA9IG1fdHJhbnNpdGlvbnMuZW5k
KCk7CiAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zaXRpb25zRW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQo
KTsKKyAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQo
KTsKICAgICAgICAgICAgIGlmIChhbmltICYmIGFuaW0tPmlzQW5pbWF0aW5nUHJvcGVydHkocHJv
cGVydHksIGFjY2VsZXJhdGVkT25seSwgaXNSdW5uaW5nTm93KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNTU2LDcgKzU1Niw3IEBAIHVuc2lnbmVkIENvbXBv
c2l0ZUFuaW1hdGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKICAgICAgICAg
bV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBBbmltYXRp
b25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9rZXlmcmFtZUFuaW1h
dGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29u
ZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChhbmltLT5ydW5uaW5nKCkpCiAgICAgICAgICAgICAg
ICAgKytjb3VudDsKICAgICAgICAgfQpAQCAtNTY1LDcgKzU2NSw3IEBAIHVuc2lnbmVkIENvbXBv
c2l0ZUFuaW1hdGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKICAgICBpZiAo
IW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0aW9ucy5lbmQo
KTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNpdGlvbnNFbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnZhbHVlLmdldCgp
OworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgp
OwogICAgICAgICAgICAgaWYgKGFuaW0tPnJ1bm5pbmcoKSkKICAgICAgICAgICAgICAgICArK2Nv
dW50OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5n
dWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKaW5kZXggYjNm
OTdiZWM5NzIxNWI4MDliMzQxZWFjMDFhNjE3ZTgxYWE3YTA2ZS4uNDdmMDlmNjA5Mjk5NzFlMzE3
MzU2ZTQ5ZmJjYjYzYjVkYjQxN2YzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNw
cApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGxhbmd1YWdlRGlkQ2hhbmdlKCkKIHsKICAgICBPYnNl
cnZlck1hcDo6aXRlcmF0b3IgZW5kID0gb2JzZXJ2ZXJNYXAoKS5lbmQoKTsKICAgICBmb3IgKE9i
c2VydmVyTWFwOjppdGVyYXRvciBpdGVyID0gb2JzZXJ2ZXJNYXAoKS5iZWdpbigpOyBpdGVyICE9
IGVuZDsgKytpdGVyKQotICAgICAgICBpdGVyLT52YWx1ZShpdGVyLT5rZXkpOworICAgICAgICBp
dGVyLT5zZWNvbmQoaXRlci0+Zmlyc3QpOwogfQogCiBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggOGY1
MjEwM2MyZTljYWU5N2RhNDRkMzRjM2IyMjgyOTVmOTY4YWRjYS4uMjg5YzY2OTliMDVmNDlmYjcx
N2MwYzQwM2MyYjU3MWJiYzljMjhiOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKQEAgLTY5Miw3ICs2OTIsNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
TUlNRVR5cGVBc3NvY2lhdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVHlwZUFzc29j
aWF0aW9uTWFwKCkuZmluZChtaW1lVHlwZSk7CiAKICAgICBpZiAoaXQgIT0gbWltZVR5cGVBc3Nv
Y2lhdGlvbk1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKICNlbmRpZgogICAgIHJldHVybiBtaW1lVHlwZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggY2Zl
MTNlZDg1MzA2YjUxNzEyYWEzMDc0YjljOGRjMzkyY2Q0NjUyZC4uMjVlNDU4OTYyNWRjY2ZkN2Y0
ZDNiNTRhZjc1MzJkOGU4M2YyNjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIEF1ZGlvQnVz
KiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcm
IHN1YmplY3QKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcy5sZWFr
UHRyKCk7CiAgICAgICAgIGF1ZGlvQnVzTWFwLnNldChzdWJqZWN0TmFtZSwgYnVzKTsKICAgICB9
IGVsc2UKLSAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBidXMgPSBpdGVy
YXRvci0+c2Vjb25kOwogCiAgICAgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoID0gYnVzLT5sZW5ndGgo
KTsKICAgICBzaXplX3QgZXhwZWN0ZWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFRvdGFs
TnVtYmVyT2ZSZXNwb25zZXMgKiBSZXNwb25zZUZyYW1lU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAppbmRleCA2ZGJm
OTE2MmJmNjFhMTcxYjQ3OWE2MjFkZDQ3MDlhNmJiYWNhY2JmLi5kZDkzNzAyMjMxNDM1MDA2NGEy
YjE4YTllZTljNjVmMjg0OWUyYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJp
bmcgQ29va2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKIAogICAg
IFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29raWVDYW5kaWRhdGVzOwogICAgIGZvciAoSGFzaE1h
cDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1fbWFuYWdlck1hcC5iZWdpbigp
OyBpdCAhPSBtX21hbmFnZXJNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Z2V0
QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsKKyAgICAgICAgaXQtPnNlY29uZC0+
Z2V0QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsKIAogICAgIFN0cmluZyByZXN1
bHQ7CiAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSAwOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZv
aWQgQ29va2llTWFuYWdlcjo6cmVtb3ZlQWxsQ29va2llcyhCYWNraW5nU3RvcmVSZW1vdmFsUG9s
aWN5IGJhY2tpbmdTdG9yZVJlbW92CiAgICAgSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+Ojpp
dGVyYXRvciBmaXJzdCA9IG1fbWFuYWdlck1hcC5iZWdpbigpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBDb29raWVNYXAqPjo6aXRlcmF0b3IgZW5kID0gbV9tYW5hZ2VyTWFwLmVuZCgpOwogICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IGZpcnN0OyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+ZGVsZXRlQWxsQ29va2llc0FuZERvbWFp
bnMoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+ZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKTsK
IAogICAgIGlmIChiYWNraW5nU3RvcmVSZW1vdmFsID09IFJlbW92ZUZyb21CYWNraW5nU3RvcmUp
CiAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmVBbGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmNwcAppbmRleCBhZjQ4NWI1
NGMyMGVjY2ZjYTBhYTRkOTk1ZmI3MjBhNDUzNGQ3OGE0Li5iYmU5YTdjZWRmNzNmNzBkNTBjNGRk
MDcyNGY0YTVkNmEwMTVjN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVNYXAuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgUGFyc2VkQ29va2llKiBD
b29raWVNYXA6OnJlbW92ZU9sZGVzdENvb2tpZSgpCiAgICAgICAgIENvb2tpZUxvZygiQ29va2ll
TWFwIC0gbG9va2luZyBpbnRvIHN1YmRvbWFpbnMiKTsKIAogICAgICAgICBmb3IgKEhhc2hNYXA8
U3RyaW5nLCBDb29raWVNYXAqPjo6aXRlcmF0b3IgaXQgPSBtX3N1YmRvbWFpbnMuYmVnaW4oKTsg
aXQgIT0gbV9zdWJkb21haW5zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBvbGRlc3RDb29r
aWUgPSBpdC0+dmFsdWUtPnJlbW92ZU9sZGVzdENvb2tpZSgpOworICAgICAgICAgICAgb2xkZXN0
Q29va2llID0gaXQtPnNlY29uZC0+cmVtb3ZlT2xkZXN0Q29va2llKCk7CiAgICAgICAgICAgICBp
ZiAob2xkZXN0Q29va2llKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0y
MTQsNyArMjE0LDcgQEAgdm9pZCBDb29raWVNYXA6OmdldEFsbENoaWxkQ29va2llcyhWZWN0b3I8
UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29raWVzKQogICAgIENvb2tpZUxvZygiQ29va2llTWFw
IC0gZ2V0QWxsQ2hpbGRDb29raWVzIGluIE1hcCAtICVzIiwgZ2V0TmFtZSgpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIGdldEFsbENvb2tpZXMoc3RhY2tPZkNvb2tpZXMpOwogICAgIGZvciAoSGFzaE1h
cDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1fc3ViZG9tYWlucy5iZWdpbigp
OyBpdCAhPSBtX3N1YmRvbWFpbnMuZW5kKCk7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Z2V0
QWxsQ2hpbGRDb29raWVzKHN0YWNrT2ZDb29raWVzKTsKKyAgICAgICAgaXQtPnNlY29uZC0+Z2V0
QWxsQ2hpbGRDb29raWVzKHN0YWNrT2ZDb29raWVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVy
dHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlz
dC5jcHAKaW5kZXggYjI3ZDdkN2NkM2MxNDM4NjBlYzY1OGJlZWIyZDZlNzcyZTk0MmM1Mi4uYmVj
MmVjOTUwNjQ0Yzk5M2JlODlhYjM1ZTBiODY3YThiNjEyNjA4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCkBAIC0yMjksNyArMjI5
LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJBcnJheShjb25z
dCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0ZUludGVnZXIoaW50ZWdl
cnNbaV0pOwotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX2N1cnJlbnRPYmplY3RS
ZWZlcmVuY2UrKzsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG1fY3VycmVudE9i
amVjdFJlZmVyZW5jZSsrOwogICAgIHdyaXRlQXJyYXlPYmplY3Qoc2l6ZSk7CiAgICAgbV9jdXJy
ZW50QWdncmVnYXRlU2l6ZSA9IHNhdmVkQWdncmVnYXRlU2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJ
bmZvLmNwcAppbmRleCA2NjM3MWI0YWIxZDJkZDI1NGZiYmRkN2E5ZGU3MmVkNDExOWQ1NjYxLi43
NzYyZmQ4YzQ5ZmRhMjQyYTM3MDI2YzZkZmU2NzdmMjMwNTBlMjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2FkSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9h
ZEluZm8uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgYWRkSGVhZGVyKEhUVFBI
ZWFkZXJNYXAqIG1hcCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcKICAg
ICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUp
OwogICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHZhbHVlcyBhcmUgc2VwYXJhdGVkIGJ5ICdc
bicsIG5vdCBjb21tYSwgb3RoZXJ3aXNlIFNldC1Db29raWUgaGVhZGVyIGlzIG5vdCBwYXJzZWFi
bGUuCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSArPSAiXG4iICsgU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQgKz0gIlxuIiArIFN0cmluZyh2YWx1ZSk7CiB9CiAKIHZvaWQgV2ViSFRUUExvYWRJ
bmZvOjphZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlVSTFJlcXVlc3QuY3BwCmluZGV4IGUzODUxMDE0ZmNkZDQ1YmZhY2I0
OGI5N2JiYTc2ZTMxZDhiNGEwMTUuLmY0MzdiNTE2NDNiMjM0YjYwOWY3NzI1ZmI4ZDc2ZDczMWY1
NjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJVUkxSZXF1ZXN0LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2Vi
VVJMUmVxdWVzdDo6dmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhUVFBIZWFkZXJWaXNpdG9yKiB2
aXNpdG9yKSBjb25zdAogewogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG1hcCA9IG1fcHJpdmF0
ZS0+bV9yZXNvdXJjZVJlcXVlc3QtPmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBmb3IgKEhUVFBI
ZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQo
KTsgKytpdCkKLSAgICAgICAgdmlzaXRvci0+dmlzaXRIZWFkZXIoaXQtPmtleSwgaXQtPnZhbHVl
KTsKKyAgICAgICAgdmlzaXRvci0+dmlzaXRIZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsK
IH0KIAogV2ViSFRUUEJvZHkgV2ViVVJMUmVxdWVzdDo6aHR0cEJvZHkoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJVUkxSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlVS
TFJlc3BvbnNlLmNwcAppbmRleCA4MDU2NjY0OTFiMzU0OGM2YjQ5MTQ5YjFmYTc1MjVhY2JkMzJk
OGQ5Li4xZjliOTY4NjBlMGJhMmU5Mzg1YmU1NTU5NWRhNmUwOWY1MTUxM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlVSTFJlc3BvbnNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlVS
TFJlc3BvbnNlLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmFk
ZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYK
ICAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0KICAgICAgICAgY29uc3RfY2Fz
dDxIVFRQSGVhZGVyTWFwKj4oJm1hcCktPmFkZChuYW1lLCB2YWx1ZVN0cik7CiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSAiLCAi
ICsgdmFsdWVTdHI7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsICIgKyB2
YWx1ZVN0cjsKIH0KIAogdm9pZCBXZWJVUkxSZXNwb25zZTo6Y2xlYXJIVFRQSGVhZGVyRmllbGQo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lKQpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViVVJMUmVz
cG9uc2U6OnZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJIVFRQSGVhZGVyVmlzaXRvciogdmlzaXRv
cikgY29uc3QKIHsKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBtYXAgPSBtX3ByaXZhdGUtPm1f
cmVzb3VyY2VSZXNwb25zZS0+aHR0cEhlYWRlckZpZWxkcygpOwogICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgpOyAr
K2l0KQotICAgICAgICB2aXNpdG9yLT52aXNpdEhlYWRlcihpdC0+a2V5LCBpdC0+dmFsdWUpOwor
ICAgICAgICB2aXNpdG9yLT52aXNpdEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogfQog
CiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6Omxhc3RNb2RpZmllZERhdGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAKaW5kZXggZjg5MTAzZjliZTJiNWVlZGQwN2ZhNzQxMWZlMjc5MWE2MjE4MWVl
MC4uMzBkOGQzZDQxZTIyYmRkYTEwNzY0ZDhmNmExZWY0MDMzYTYyOWRhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgp
OworICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgpOwogfQogCiB2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXI6OnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dCogY2xpZW50KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlcjo6dW5yZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqCiAg
ICAgaWYgKGl0ID09IG1fbW9uaXRvcnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICBp
ZiAobW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKICAgICAgICAgaWYgKCFtb25pdG9y
LT5oYXNDbGllbnRzKCkpCiAgICAgICAgICAgICBtX21vbml0b3JzLnJlbW92ZShpdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAyMThk
ZTJmMTQ3ZTkzMWI1MWYwYTY5YmI2OTkxNmUxYWU0OGRlNjg0Li5iNDYyNjNhOTY2MzIzOWQyZmNm
YWQ4YmJiZjMyOWNkNTdkMjZiNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBGb250UGxhdGZvcm1EYXRh
KiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmbwogICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5zZXQoa2V5LCByZXN1bHQp
OwogICAgICAgICBmb3VuZFJlc3VsdCA9IHJlc3VsdDsKICAgICB9IGVsc2UgewotICAgICAgICBy
ZXN1bHQgPSBpdC0+dmFsdWU7CisgICAgICAgIHJlc3VsdCA9IGl0LT5zZWNvbmQ7CiAgICAgICAg
IGZvdW5kUmVzdWx0ID0gdHJ1ZTsKICAgICB9CiAKQEAgLTI0Miw3ICsyNDIsNyBAQCBPcGVuVHlw
ZVZlcnRpY2FsRGF0YSogRm9udENhY2hlOjpnZXRWZXJ0aWNhbERhdGEoY29uc3QgRm9udEZpbGVL
ZXkmIGtleSwgY29uc3QgRgogICAgIEZvbnRWZXJ0aWNhbERhdGFDYWNoZSYgZm9udFZlcnRpY2Fs
RGF0YUNhY2hlID0gZm9udFZlcnRpY2FsRGF0YUNhY2hlSW5zdGFuY2UoKTsKICAgICBGb250VmVy
dGljYWxEYXRhQ2FjaGU6Oml0ZXJhdG9yIHJlc3VsdCA9IGZvbnRWZXJ0aWNhbERhdGFDYWNoZS5m
aW5kKGtleSk7CiAgICAgaWYgKHJlc3VsdCAhPSBmb250VmVydGljYWxEYXRhQ2FjaGUuZW5kKCkp
Ci0gICAgICAgIHJldHVybiByZXN1bHQuZ2V0KCktPnZhbHVlLmdldCgpOworICAgICAgICByZXR1
cm4gcmVzdWx0LmdldCgpLT5zZWNvbmQuZ2V0KCk7CiAKICAgICBPcGVuVHlwZVZlcnRpY2FsRGF0
YSogdmVydGljYWxEYXRhID0gbmV3IE9wZW5UeXBlVmVydGljYWxEYXRhKHBsYXRmb3JtRGF0YSk7
CiAgICAgaWYgKCF2ZXJ0aWNhbERhdGEtPmlzT3BlblR5cGUoKSkgewpAQCAtMzMyLDIwICszMzIs
MjAgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXQKICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlLmZp
cnN0OwogICAgIH0KIAotICAgIGlmICghcmVzdWx0LmdldCgpLT52YWx1ZS5zZWNvbmQpIHsKLSAg
ICAgICAgQVNTRVJUKGdJbmFjdGl2ZUZvbnREYXRhLT5jb250YWlucyhyZXN1bHQuZ2V0KCktPnZh
bHVlLmZpcnN0KSk7Ci0gICAgICAgIGdJbmFjdGl2ZUZvbnREYXRhLT5yZW1vdmUocmVzdWx0Lmdl
dCgpLT52YWx1ZS5maXJzdCk7CisgICAgaWYgKCFyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQp
IHsKKyAgICAgICAgQVNTRVJUKGdJbmFjdGl2ZUZvbnREYXRhLT5jb250YWlucyhyZXN1bHQuZ2V0
KCktPnNlY29uZC5maXJzdCkpOworICAgICAgICBnSW5hY3RpdmVGb250RGF0YS0+cmVtb3ZlKHJl
c3VsdC5nZXQoKS0+c2Vjb25kLmZpcnN0KTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUmV0YWlu
ID09IFJldGFpbikKLSAgICAgICAgcmVzdWx0LmdldCgpLT52YWx1ZS5zZWNvbmQrKzsKLSAgICBl
bHNlIGlmICghcmVzdWx0LmdldCgpLT52YWx1ZS5zZWNvbmQpIHsKKyAgICAgICAgcmVzdWx0Lmdl
dCgpLT5zZWNvbmQuc2Vjb25kKys7CisgICAgZWxzZSBpZiAoIXJlc3VsdC5nZXQoKS0+c2Vjb25k
LnNlY29uZCkgewogICAgICAgICAvLyBJZiBzaG91bGRSZXRhaW4gaXMgRG9Ob3RSZXRhaW4gYW5k
IGNvdW50IGlzIDAsIHdlIHdhbnQgdG8gcmVtb3ZlIHRoZSBmb250RGF0YSBmcm9tIAogICAgICAg
ICAvLyBnSW5hY3RpdmVGb250RGF0YSAoYWJvdmUpIGFuZCByZS1hZGQgaGVyZSB0byB1cGRhdGUg
TFJVIHBvc2l0aW9uLgotICAgICAgICBnSW5hY3RpdmVGb250RGF0YS0+YWRkKHJlc3VsdC5nZXQo
KS0+dmFsdWUuZmlyc3QpOworICAgICAgICBnSW5hY3RpdmVGb250RGF0YS0+YWRkKHJlc3VsdC5n
ZXQoKS0+c2Vjb25kLmZpcnN0KTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmdldCgpLT52
YWx1ZS5maXJzdDsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgpLT5zZWNvbmQuZmlyc3Q7CiB9CiAK
IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldE5vblJldGFpbmVkTGFzdFJlc29ydEZhbGxi
YWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKQEAgLTM2MSw4
ICszNjEsOCBAQCB2b2lkIEZvbnRDYWNoZTo6cmVsZWFzZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBmb250RGF0YSkKICAgICBGb250RGF0YUNhY2hlOjppdGVyYXRvciBpdCA9IGdGb250
RGF0YUNhY2hlLT5maW5kKGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKSk7CiAgICAgQVNTRVJUKGl0
ICE9IGdGb250RGF0YUNhY2hlLT5lbmQoKSk7CiAKLSAgICBBU1NFUlQoaXQtPnZhbHVlLnNlY29u
ZCk7Ci0gICAgaWYgKCEtLWl0LT52YWx1ZS5zZWNvbmQpCisgICAgQVNTRVJUKGl0LT5zZWNvbmQu
c2Vjb25kKTsKKyAgICBpZiAoIS0taXQtPnNlY29uZC5zZWNvbmQpCiAgICAgICAgIGdJbmFjdGl2
ZUZvbnREYXRhLT5hZGQoZm9udERhdGEpOwogfQogCkBAIC00MTAsOCArNDEwLDggQEAgdm9pZCBG
b250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YShpbnQgY291bnQpCiAgICAgICAgIGtleXNU
b1JlbW92ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPnNp
emUoKSk7CiAgICAgICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgcGxhdGZvcm1E
YXRhRW5kID0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZW5kKCk7CiAgICAgICAgIGZvciAoRm9u
dFBsYXRmb3JtRGF0YUNhY2hlOjppdGVyYXRvciBwbGF0Zm9ybURhdGEgPSBnRm9udFBsYXRmb3Jt
RGF0YUNhY2hlLT5iZWdpbigpOyBwbGF0Zm9ybURhdGEgIT0gcGxhdGZvcm1EYXRhRW5kOyArK3Bs
YXRmb3JtRGF0YSkgewotICAgICAgICAgICAgaWYgKHBsYXRmb3JtRGF0YS0+dmFsdWUgJiYgIWdG
b250RGF0YUNhY2hlLT5jb250YWlucygqcGxhdGZvcm1EYXRhLT52YWx1ZSkpCi0gICAgICAgICAg
ICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChwbGF0Zm9ybURhdGEtPmtleSk7CisgICAgICAgICAg
ICBpZiAocGxhdGZvcm1EYXRhLT5zZWNvbmQgJiYgIWdGb250RGF0YUNhY2hlLT5jb250YWlucygq
cGxhdGZvcm1EYXRhLT5zZWNvbmQpKQorICAgICAgICAgICAgICAgIGtleXNUb1JlbW92ZS5hcHBl
bmQocGxhdGZvcm1EYXRhLT5maXJzdCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHNp
emVfdCBrZXlzVG9SZW1vdmVDb3VudCA9IGtleXNUb1JlbW92ZS5zaXplKCk7CkBAIC00MjUsMjAg
KzQyNSwyMCBAQCB2b2lkIEZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKGludCBjb3Vu
dCkKICAgICAgICAgLy8gTWFyayAmIHN3ZWVwIHVudXNlZCB2ZXJ0aWNhbERhdGEKICAgICAgICAg
Rm9udFZlcnRpY2FsRGF0YUNhY2hlOjppdGVyYXRvciB2ZXJ0aWNhbERhdGFFbmQgPSBmb250VmVy
dGljYWxEYXRhQ2FjaGUuZW5kKCk7CiAgICAgICAgIGZvciAoRm9udFZlcnRpY2FsRGF0YUNhY2hl
OjppdGVyYXRvciB2ZXJ0aWNhbERhdGEgPSBmb250VmVydGljYWxEYXRhQ2FjaGUuYmVnaW4oKTsg
dmVydGljYWxEYXRhICE9IHZlcnRpY2FsRGF0YUVuZDsgKyt2ZXJ0aWNhbERhdGEpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJ0aWNhbERhdGEtPnZhbHVlKQotICAgICAgICAgICAgICAgIHZlcnRpY2Fs
RGF0YS0+dmFsdWUtPm1faW5Gb250Q2FjaGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh2ZXJ0
aWNhbERhdGEtPnNlY29uZCkKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbERhdGEtPnNlY29uZC0+
bV9pbkZvbnRDYWNoZSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIEZvbnREYXRhQ2FjaGU6
Oml0ZXJhdG9yIGZvbnREYXRhRW5kID0gZ0ZvbnREYXRhQ2FjaGUtPmVuZCgpOwogICAgICAgICBm
b3IgKEZvbnREYXRhQ2FjaGU6Oml0ZXJhdG9yIGZvbnREYXRhID0gZ0ZvbnREYXRhQ2FjaGUtPmJl
Z2luKCk7IGZvbnREYXRhICE9IGZvbnREYXRhRW5kOyArK2ZvbnREYXRhKSB7Ci0gICAgICAgICAg
ICBPcGVuVHlwZVZlcnRpY2FsRGF0YSogdmVydGljYWxEYXRhID0gY29uc3RfY2FzdDxPcGVuVHlw
ZVZlcnRpY2FsRGF0YSo+KGZvbnREYXRhLT52YWx1ZS5maXJzdC0+dmVydGljYWxEYXRhKCkpOwor
ICAgICAgICAgICAgT3BlblR5cGVWZXJ0aWNhbERhdGEqIHZlcnRpY2FsRGF0YSA9IGNvbnN0X2Nh
c3Q8T3BlblR5cGVWZXJ0aWNhbERhdGEqPihmb250RGF0YS0+c2Vjb25kLmZpcnN0LT52ZXJ0aWNh
bERhdGEoKSk7CiAgICAgICAgICAgICBpZiAodmVydGljYWxEYXRhKQogICAgICAgICAgICAgICAg
IHZlcnRpY2FsRGF0YS0+bV9pbkZvbnRDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
VmVjdG9yPEZvbnRGaWxlS2V5PiBrZXlzVG9SZW1vdmU7CiAgICAgICAgIGtleXNUb1JlbW92ZS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZvbnRWZXJ0aWNhbERhdGFDYWNoZS5zaXplKCkpOwogICAg
ICAgICBmb3IgKEZvbnRWZXJ0aWNhbERhdGFDYWNoZTo6aXRlcmF0b3IgdmVydGljYWxEYXRhID0g
Zm9udFZlcnRpY2FsRGF0YUNhY2hlLmJlZ2luKCk7IHZlcnRpY2FsRGF0YSAhPSB2ZXJ0aWNhbERh
dGFFbmQ7ICsrdmVydGljYWxEYXRhKSB7Ci0gICAgICAgICAgICBpZiAoIXZlcnRpY2FsRGF0YS0+
dmFsdWUgfHwgIXZlcnRpY2FsRGF0YS0+dmFsdWUtPm1faW5Gb250Q2FjaGUpCi0gICAgICAgICAg
ICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZCh2ZXJ0aWNhbERhdGEtPmtleSk7CisgICAgICAgICAg
ICBpZiAoIXZlcnRpY2FsRGF0YS0+c2Vjb25kIHx8ICF2ZXJ0aWNhbERhdGEtPnNlY29uZC0+bV9p
bkZvbnRDYWNoZSkKKyAgICAgICAgICAgICAgICBrZXlzVG9SZW1vdmUuYXBwZW5kKHZlcnRpY2Fs
RGF0YS0+Zmlyc3QpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3Vu
dCA9IGtleXNUb1JlbW92ZS5zaXplKCk7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgZm9u
dFZlcnRpY2FsRGF0YUNhY2hlLnRha2Uoa2V5c1RvUmVtb3ZlW2ldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAppbmRl
eCA0Yzk2NDBkOTljYjQzMWI0ZmQzNmM4ZDRkNmUzZTZlYzI5YTg2YzI0Li5hMmYwZDA0NGFhNjVm
ZWFlODUyYThhOGJkNzE1MzA4NTRhZTQzOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHNpemVfdCBHbHlwaFBhZ2VUcmVlTm9kZTo6dHJlZUdseXBoUGFnZUNvdW50KCkKICAgICBp
ZiAocm9vdHMpIHsKICAgICAgICAgSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRyZWVOb2RlKj46Oml0
ZXJhdG9yIGVuZCA9IHJvb3RzLT5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPGludCwgR2x5
cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgaXQgPSByb290cy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICAgICAgY291bnQgKz0gaXQtPnZhbHVlLT5wYWdlQ291bnQoKTsKKyAg
ICAgICAgICAgIGNvdW50ICs9IGl0LT5zZWNvbmQtPnBhZ2VDb3VudCgpOwogICAgIH0KICAgICAK
ICAgICBpZiAocGFnZVplcm9Sb290KQpAQCAtODksNyArODksNyBAQCBzaXplX3QgR2x5cGhQYWdl
VHJlZU5vZGU6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgc2l6ZV90IGNvdW50ID0gbV9wYWdlICYm
IG1fcGFnZS0+b3duZXIoKSA9PSB0aGlzID8gMSA6IDA7CiAgICAgSGFzaE1hcDxjb25zdCBGb250
RGF0YSosIEdseXBoUGFnZVRyZWVOb2RlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hpbGRy
ZW4uZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPGNvbnN0IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJl
ZU5vZGUqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgY291bnQgKz0gaXQtPnZhbHVlLT5wYWdlQ291bnQoKTsKKyAgICAg
ICAgY291bnQgKz0gaXQtPnNlY29uZC0+cGFnZUNvdW50KCk7CiAKICAgICByZXR1cm4gY291bnQ7
CiB9CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVUcmVl
Q3VzdG9tRm9udERhdGEoY29uc3QgRm9udERhdGEqIGZvbnREYXRhKQogICAgIGlmIChyb290cykg
ewogICAgICAgICBIYXNoTWFwPGludCwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgZW5k
ID0gcm9vdHMtPmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8aW50LCBHbHlwaFBhZ2VUcmVl
Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJvb3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICBpdC0+dmFsdWUtPnBydW5lQ3VzdG9tRm9udERhdGEoZm9udERhdGEpOworICAg
ICAgICAgICAgaXQtPnNlY29uZC0+cHJ1bmVDdXN0b21Gb250RGF0YShmb250RGF0YSk7CiAgICAg
fQogICAgIAogICAgIGlmIChwYWdlWmVyb1Jvb3QpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBH
bHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVUcmVlRm9udERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhKQogICAgIGlmIChyb290cykgewogICAgICAgICBIYXNoTWFwPGludCwgR2x5cGhQ
YWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgZW5kID0gcm9vdHMtPmVuZCgpOwogICAgICAgICBmb3Ig
KEhhc2hNYXA8aW50LCBHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9IHJvb3RzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnBydW5lRm9u
dERhdGEoZm9udERhdGEpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+cHJ1bmVGb250RGF0YShm
b250RGF0YSk7CiAgICAgfQogICAgIAogICAgIGlmIChwYWdlWmVyb1Jvb3QpCkBAIC0zNjgsNyAr
MzY4LDcgQEAgdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVDdXN0b21Gb250RGF0YShjb25z
dCBGb250RGF0YSogZm9udERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBIYXNoTWFwPGNvbnN0
IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJl
bi5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBHbHlwaFBhZ2VUcmVl
Tm9kZSo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBpdC0+dmFsdWUtPnBydW5lQ3VzdG9tRm9udERhdGEoZm9udERhdGEpOworICAg
ICAgICBpdC0+c2Vjb25kLT5wcnVuZUN1c3RvbUZvbnREYXRhKGZvbnREYXRhKTsKIH0KIAogdm9p
ZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVGb250RGF0YShjb25zdCBTaW1wbGVGb250RGF0YSog
Zm9udERhdGEsIHVuc2lnbmVkIGxldmVsKQpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgR2x5cGhQ
YWdlVHJlZU5vZGU6OnBydW5lRm9udERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRh
LCB1bnNpZ25lZCBsCiAgICAgLy8gUHJ1bmUgYW55IGJyYW5jaCB0aGF0IGNvbnRhaW5zIHRoaXMg
Rm9udERhdGEuCiAgICAgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIEdseXBoUGFnZVRyZWVOb2Rl
Kj46Oml0ZXJhdG9yIGNoaWxkID0gbV9jaGlsZHJlbi5maW5kKGZvbnREYXRhKTsKICAgICBpZiAo
Y2hpbGQgIT0gbV9jaGlsZHJlbi5lbmQoKSkgewotICAgICAgICBHbHlwaFBhZ2VUcmVlTm9kZSog
bm9kZSA9IGNoaWxkLT52YWx1ZTsKKyAgICAgICAgR2x5cGhQYWdlVHJlZU5vZGUqIG5vZGUgPSBj
aGlsZC0+c2Vjb25kOwogICAgICAgICBtX2NoaWxkcmVuLnJlbW92ZShmb250RGF0YSk7CiAgICAg
ICAgIHVuc2lnbmVkIGN1c3RvbUZvbnRDb3VudCA9IG5vZGUtPm1fY3VzdG9tRm9udENvdW50Owog
ICAgICAgICBkZWxldGUgbm9kZTsKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEdseXBoUGFnZVRy
ZWVOb2RlOjpwcnVuZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgdW5z
aWduZWQgbAogCiAgICAgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIEdseXBoUGFnZVRyZWVOb2Rl
Kj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPGNv
bnN0IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxk
cmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5wcnVuZUZv
bnREYXRhKGZvbnREYXRhLCBsZXZlbCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnBydW5lRm9udERh
dGEoZm9udERhdGEsIGxldmVsKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTQxMiw4ICs0MTIs
OCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBmb250RGF0YSwgdW5zaWduZWQgbAogCiAgICAgICAgIEhhc2hNYXA8Y29uc3QgRm9u
dERhdGEqLCBHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVu
ZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBHbHlwaFBhZ2VUcmVl
Tm9kZSo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBwcmludGYoIiVzXHQlcCAlc1xuIiwgaW5kZW50LmRhdGEoKSwgaXQt
PmtleSwgaXQtPmtleS0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGl0LT52YWx1ZS0+c2hvd1N1YnRyZWUoKTsKKyAgICAgICAgICAgIHByaW50ZigiJXNcdCVwICVz
XG4iLCBpbmRlbnQuZGF0YSgpLCBpdC0+Zmlyc3QsIGl0LT5maXJzdC0+ZGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNob3dTdWJ0cmVlKCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fc3lzdGVtRmFsbGJhY2tDaGlsZCkgewogICAgICAgICAg
ICAgcHJpbnRmKCIlc1x0KiBmYWxsYmFja1xuIiwgaW5kZW50LmRhdGEoKSk7CkBAIC00MzEsOCAr
NDMxLDggQEAgdm9pZCBzaG93R2x5cGhQYWdlVHJlZXMoKQogICAgIHNob3dHbHlwaFBhZ2VUcmVl
KDApOwogICAgIEhhc2hNYXA8aW50LCBXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVy
YXRvciBlbmQgPSBXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6cm9vdHMtPmVuZCgpOwogICAg
IGZvciAoSGFzaE1hcDxpbnQsIFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlKj46Oml0ZXJhdG9y
IGl0ID0gV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnJvb3RzLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgcHJpbnRmKCJcblBhZ2UgJWQ6XG4iLCBpdC0+a2V5KTsKLSAg
ICAgICAgc2hvd0dseXBoUGFnZVRyZWUoaXQtPmtleSk7CisgICAgICAgIHByaW50ZigiXG5QYWdl
ICVkOlxuIiwgaXQtPmZpcnN0KTsKKyAgICAgICAgc2hvd0dseXBoUGFnZVRyZWUoaXQtPmZpcnN0
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBkZjdmYTdkY2IzYjk5YWZhZjJhYmU2ZGNl
MWUyZmQxYTdlNTc5ZGM1Li5iNDg1ZGNmMTdmNWViZWYyOWE5NjZlY2M2M2Q2YTE5MDgzMmQ3MzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogICAgIFZlY3RvcjxSZWZQdHI8VGlsZT4gPiBkaXJ0eVRp
bGVzOwogICAgIFRpbGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CiAgICAgZm9y
IChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIGlmICghaXQtPnZhbHVlLT5pc0RpcnR5KCkpCisgICAgICAgIGlmICghaXQt
PnNlY29uZC0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRpcnR5
VGlsZXMuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgIGRpcnR5VGlsZXMuYXBwZW5kKGl0LT5z
ZWNvbmQpOwogICAgIH0KIAogICAgIGlmIChkaXJ0eVRpbGVzLmlzRW1wdHkoKSkgewpAQCAtNDAx
LDEzICs0MDEsMTMgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKCkK
ICAgICBWZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdGlsZXNUb1JlbW92ZTsKICAgICBUaWxlTWFw
OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBUaWxl
OjpDb29yZGluYXRlIHRpbGVDb29yZGluYXRlID0gaXQtPnZhbHVlLT5jb29yZGluYXRlKCk7Ci0g
ICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBpdC0+dmFsdWUtPnJlY3QoKTsKKyAgICAgICAgVGls
ZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IGl0LT5zZWNvbmQtPmNvb3JkaW5hdGUoKTsK
KyAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IGl0LT5zZWNvbmQtPnJlY3QoKTsKICAgICAgICAg
SW50UmVjdCBleHBlY3RlZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRlKHRpbGVDb29y
ZGluYXRlKTsKICAgICAgICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgdGlsZXNUb1JlbW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOwogICAgICAgICBlbHNl
IGlmIChleHBlY3RlZFRpbGVSZWN0ICE9IHRpbGVSZWN0KSB7Ci0gICAgICAgICAgICBpdC0+dmFs
dWUtPnJlc2l6ZShleHBlY3RlZFRpbGVSZWN0LnNpemUoKSk7CisgICAgICAgICAgICBpdC0+c2Vj
b25kLT5yZXNpemUoZXhwZWN0ZWRUaWxlUmVjdC5zaXplKCkpOwogICAgICAgICAgICAgd2FzUmVz
aXplZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC00MjYsOCArNDI2LDggQEAgdm9pZCBU
aWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJlY3QoY29uc3QgSW50UmVjdCYga2VlcFJlY3QpCiAg
ICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRvUmVtb3ZlOwogICAgIFRpbGVNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9
IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFRpbGU6OkNvb3Jk
aW5hdGUgY29vcmRpbmF0ZSA9IGl0LT52YWx1ZS0+Y29vcmRpbmF0ZSgpOwotICAgICAgICBGbG9h
dFJlY3QgdGlsZVJlY3QgPSBpdC0+dmFsdWUtPnJlY3QoKTsKKyAgICAgICAgVGlsZTo6Q29vcmRp
bmF0ZSBjb29yZGluYXRlID0gaXQtPnNlY29uZC0+Y29vcmRpbmF0ZSgpOworICAgICAgICBGbG9h
dFJlY3QgdGlsZVJlY3QgPSBpdC0+c2Vjb25kLT5yZWN0KCk7CiAgICAgICAgIGlmICghdGlsZVJl
Y3QuaW50ZXJzZWN0cyhrZWVwUmVjdEYpKQogICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGNv
b3JkaW5hdGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDc4Y2FjNjcyZTQxOGMxNTkw
MzNjMGExZmY4OGRmZjJkNmExMTk1NzcuLjgxZDg2Mjk4MTUyOWRjYjVlNGFiMmQwYzAwNjY3MmRl
NzZhODgyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtOTE1LDcgKzkxNSw3IEBAIEFWRldyYXBw
ZXIqIEFWRldyYXBwZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9pZCogY29udGV4
dCkKICAgICBpZiAoaXQgPT0gbWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogdm9pZCBBVkZX
cmFwcGVyOjpzY2hlZHVsZURpc2Nvbm5lY3RBbmREZWxldGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAK
aW5kZXggNzRjZjhhMTljNDlkM2JhODllZDgxYjIzZWUzNTcwY2MzMzNlYTNhNS4uNjA2NDY1MDMw
MDQxZjFiNWJiMzg0NzcwNzJmMmNlYTliMmJhNjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBA
IC0zNjksOCArMzY5LDggQEAgdm9pZCBMYXllclRpbGVyOjpsYXllclZpc2liaWxpdHlDaGFuZ2Vk
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2libGUpCiAgICAgfQogCiAgICAgZm9y
IChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gbV90aWxlcy5l
bmQoKTsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggaW5kZXggPSAoKml0KS5rZXk7Ci0gICAg
ICAgIExheWVyVGlsZSogdGlsZSA9ICgqaXQpLnZhbHVlOworICAgICAgICBUaWxlSW5kZXggaW5k
ZXggPSAoKml0KS5maXJzdDsKKyAgICAgICAgTGF5ZXJUaWxlKiB0aWxlID0gKCppdCkuc2Vjb25k
OwogICAgICAgICB0aWxlLT5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICB9CiB9CkBAIC0zODQsMjEg
KzM4NCwyMSBAQCB2b2lkIExheWVyVGlsZXI6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZCopCiAKICAgICBUaWxlSm9ic01hcDo6Y29uc3RfaXRlcmF0b3IgdGls
ZUpvYnNJdGVyRW5kID0gdGlsZUpvYnNNYXAuZW5kKCk7CiAgICAgZm9yIChUaWxlSm9ic01hcDo6
Y29uc3RfaXRlcmF0b3IgdGlsZUpvYnNJdGVyID0gdGlsZUpvYnNNYXAuYmVnaW4oKTsgdGlsZUpv
YnNJdGVyICE9IHRpbGVKb2JzSXRlckVuZDsgKyt0aWxlSm9ic0l0ZXIpIHsKLSAgICAgICAgSW50
UG9pbnQgb3JpZ2luID0gb3JpZ2luT2ZUaWxlKHRpbGVKb2JzSXRlci0+a2V5KTsKKyAgICAgICAg
SW50UG9pbnQgb3JpZ2luID0gb3JpZ2luT2ZUaWxlKHRpbGVKb2JzSXRlci0+Zmlyc3QpOwogCi0g
ICAgICAgIExheWVyVGlsZSogdGlsZSA9IG1fdGlsZXMuZ2V0KHRpbGVKb2JzSXRlci0+a2V5KTsK
KyAgICAgICAgTGF5ZXJUaWxlKiB0aWxlID0gbV90aWxlcy5nZXQodGlsZUpvYnNJdGVyLT5maXJz
dCk7CiAgICAgICAgIGlmICghdGlsZSkgewogICAgICAgICAgICAgaWYgKG9yaWdpbi54KCkgPj0g
bV9yZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgfHwgb3JpZ2luLnkoKSA+PSBtX3JlcXVpcmVk
VGV4dHVyZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB0aWxlID0gbmV3IExheWVyVGlsZSgpOwotICAgICAgICAgICAgbV90aWxlcy5hZGQodGls
ZUpvYnNJdGVyLT5rZXksIHRpbGUpOworICAgICAgICAgICAgbV90aWxlcy5hZGQodGlsZUpvYnNJ
dGVyLT5maXJzdCwgdGlsZSk7CiAgICAgICAgIH0KIAogICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
KG9yaWdpbiwgdGlsZVNpemUoKSk7CiAgICAgICAgIHRpbGVSZWN0LnNldFdpZHRoKG1pbihtX3Jl
cXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSAtIHRpbGVSZWN0LngoKSwgdGlsZVJlY3Qud2lkdGgo
KSkpOwogICAgICAgICB0aWxlUmVjdC5zZXRIZWlnaHQobWluKG1fcmVxdWlyZWRUZXh0dXJlU2l6
ZS5oZWlnaHQoKSAtIHRpbGVSZWN0LnkoKSwgdGlsZVJlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAg
ICBwZXJmb3JtVGlsZUpvYih0aWxlLCAqdGlsZUpvYnNJdGVyLT52YWx1ZSwgdGlsZVJlY3QpOwor
ICAgICAgICBwZXJmb3JtVGlsZUpvYih0aWxlLCAqdGlsZUpvYnNJdGVyLT5zZWNvbmQsIHRpbGVS
ZWN0KTsKICAgICB9CiAKICAgICBtX3RleHR1cmVKb2JzLmNsZWFyKCk7CkBAIC00NDEsMTEgKzQ0
MSwxMSBAQCB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRl
eCwgY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSgogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBJbiB0aGlzIGNhc2Ugd2UgbGVhdmUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICBpZiAoam9iLm1f
dHlwZSA9PSBUZXh0dXJlSm9iOjpEaXJ0eUNvbnRlbnRzICYmIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5t
X3R5cGUgPT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZC0+bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gJmpvYjsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9ICZqb2I7
CiB9CiAKIHZvaWQgTGF5ZXJUaWxlcjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxlKiB0aWxlLCBj
b25zdCBUZXh0dXJlSm9iJiBqb2IsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQpAQCAtNjMwLDcg
KzYzMCw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6ZGVsZXRlVGV4dHVyZXMoTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCopCiAgICAgLy8gdG91Y2hpbmcgc29tZSBXZWJLaXQgdGhyZWFkIHN0YXRlLgogICAg
IGlmIChtX3RpbGVzLnNpemUoKSkgewogICAgICAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBtX3RpbGVzLmVuZCgpOyArK2l0KQotICAgICAgICAg
ICAgKCppdCkudmFsdWUtPmRpc2NhcmRDb250ZW50cygpOworICAgICAgICAgICAgKCppdCkuc2Vj
b25kLT5kaXNjYXJkQ29udGVudHMoKTsKICAgICAgICAgbV90aWxlcy5jbGVhcigpOwogCiAgICAg
ICAgIG1fY29udGVudHNEaXJ0eSA9IHRydWU7CkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBMYXll
clRpbGVyOjpwcnVuZVRleHR1cmVzKCkKICAgICAvLyBQcnVuZSB0aWxlcyB0aGF0IGFyZSBubyBs
b25nZXIgbmVlZGVkLgogICAgIFZlY3RvcjxUaWxlSW5kZXg+IHRpbGVzVG9EZWxldGU7CiAgICAg
Zm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gbV90aWxl
cy5lbmQoKTsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggaW5kZXggPSAoKml0KS5rZXk7Cisg
ICAgICAgIFRpbGVJbmRleCBpbmRleCA9ICgqaXQpLmZpcnN0OwogCiAgICAgICAgIEludFBvaW50
IG9yaWdpbiA9IG9yaWdpbk9mVGlsZShpbmRleCk7CiAgICAgICAgIGlmIChvcmlnaW4ueCgpID49
IG1fcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpIHx8IG9yaWdpbi55KCkgPj0gbV9yZXF1aXJl
ZFRleHR1cmVTaXplLmhlaWdodCgpKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQgTGF5ZXJUaWxl
cjo6YmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKICAgICBpZiAo
bV90aWxlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgTGF5ZXJU
aWxlKiB0aWxlID0gbV90aWxlcy5iZWdpbigpLT52YWx1ZTsKKyAgICBjb25zdCBMYXllclRpbGUq
IHRpbGUgPSBtX3RpbGVzLmJlZ2luKCktPnNlY29uZDsKIAogICAgIEFTU0VSVCh0aWxlLT5oYXNU
ZXh0dXJlKCkpOwogICAgIGlmICghdGlsZS0+aGFzVGV4dHVyZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21w
b3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBkNjVjNGRhZGRi
YmIyNTk4ZWIwZmEyNDE3MWM0ZTZhZjE0ZGQ3NGM4Li41YjZiYjg3MzY0OWY5YTg4YmNiNzhlMjBi
MTdhMThlYzM1NGNiNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZDo6c2V0TWVtb3J5VXNhZ2Uoc2l6ZV90IG1lbW9yeVVzYWdlKQog
UGFzc1JlZlB0cjxUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVy
ZUZvclRpbGVkQ29udGVudHMoY29uc3QgU2tCaXRtYXAmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBpc09wYXF1ZSkKIHsKICAg
ICBIYXNoTWFwPENvbnRlbnRzS2V5LCBUZXh0dXJlTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2NhY2hl
LmFkZChrZXkoY29udGVudHMpLCBUZXh0dXJlTWFwKCkpLml0ZXJhdG9yOwotICAgIFRleHR1cmVN
YXAmIG1hcCA9ICgqaXQpLnZhbHVlOworICAgIFRleHR1cmVNYXAmIG1hcCA9ICgqaXQpLnNlY29u
ZDsKIAogICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGp0ID0gbWFwLmFkZChpbmRleCwgUmVmUHRy
PFRleHR1cmU+KCkpLml0ZXJhdG9yOwotICAgIFJlZlB0cjxUZXh0dXJlPiB0ZXh0dXJlID0gKCpq
dCkudmFsdWU7CisgICAgUmVmUHRyPFRleHR1cmU+IHRleHR1cmUgPSAoKmp0KS5zZWNvbmQ7CiAg
ICAgaWYgKCF0ZXh0dXJlKSB7CiAgICAgICAgIHRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKCk7CiAj
aWYgREVCVUdfVEVYVFVSRV9NRU1PUllfVVNBR0UKQEAgLTI0NCw3ICsyNDQsNyBAQCBQYXNzUmVm
UHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29s
b3IoY29uc3QgQ29sb3ImCiAjZW5kaWYKICAgICAgICAgbV9jb2xvcnMuc2V0KGNvbG9yLCB0ZXh0
dXJlKTsKICAgICB9IGVsc2UKLSAgICAgICAgdGV4dHVyZSA9ICgqaXQpLnZhbHVlOworICAgICAg
ICB0ZXh0dXJlID0gKCppdCkuc2Vjb25kOwogCiAgICAgLy8gQ29sb3IgdGV4dHVyZXMgY2FuJ3Qg
YmUgZXZpY3RlZCwgc28gbm8gbmVlZCBmb3IgVGV4dHVyZVByb3RlY3Rvci4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKaW5kZXggNTBkMzNhMDc5YTJiZmQ1ZGY5YjhkNmZiNjZiZDkxMWE3MGQyZmRkYy4uZGNkYjU4
NmQwY2JmYjMyOTM2MWQ2ZWRiNTlmY2NhYzBlYjMwYjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC00
NzcsNyArNDc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlBbmltYXRpb25z
KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBQbGF0Zm9ybUNBTGF5ZXIKICAgICAvLyBMb29rIGZvciBy
dW5uaW5nIGFuaW1hdGlvbnMgYWZmZWN0aW5nIHRoaXMgcHJvcGVydHkuCiAgICAgQW5pbWF0aW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKICAg
ICBmb3IgKEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0
aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPExh
eWVyUHJvcGVydHlBbmltYXRpb24+JiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC0+dmFsdWU7Cisg
ICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVydHlBbmlt
YXRpb25zID0gaXQtPnNlY29uZDsKICAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9w
ZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUFuaW1hdGlvbnM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKQEAgLTcxOSw3ICs3
MTksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZgogCiAgICAgQW5pbWF0aW9uc1RvUHJvY2Vz
c01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChhbmltYXRpb25O
YW1lKTsKICAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpKSB7Ci0gICAg
ICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnZhbHVl
OworICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0
LT5zZWNvbmQ7CiAgICAgICAgIC8vIElmIGFuIGFuaW1hdGlvbiBpcyBzY2hlZHVsZWQgdG8gYmUg
cmVtb3ZlZCwgZG9uJ3QgY2hhbmdlIHRoZSByZW1vdmUgdG8gYSBwYXVzZS4KICAgICAgICAgaWYg
KHByb2Nlc3NpbmdJbmZvLmFjdGlvbiAhPSBSZW1vdmUpCiAgICAgICAgICAgICBwcm9jZXNzaW5n
SW5mby5hY3Rpb24gPSBQYXVzZTsKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6bGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogICAgIGlmIChsYXll
ckNsb25lTWFwKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckNsb25lID0gaXQtPnZhbHVlLmdldCgpOworICAgICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyQ2xvbmUgPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTExOTYsMTAgKzExOTYsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUdlb21ldHJ5
KGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgcG8KICAgICAgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkp
IHsKICAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyKiBjbG9uZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAg
ICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNsb25lID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAg
ICAgICAgICAgICBGbG9hdFBvaW50IGNsb25lUG9zaXRpb24gPSBsYXllclBvc2l0aW9uOwogCi0g
ICAgICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShpdC0+a2V5KSkgeworICAgICAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1Jl
cGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBN
YWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHBvc2l0aW9uIGZvciB0aGUgcm9vdCBvZiBhIGNsb25l
IHN1YnRyZWUsCiAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBs
aWNhdGVkTGF5ZXJSb290KCkuCiAgICAgICAgICAgICAgICAgICAgIGNsb25lUG9zaXRpb24gPSBw
b3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CkBAIC0xMjIzLDEwICsxMjIzLDEwIEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVHZW9tZXRyeShmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9s
YXllckNsb25lcy5nZXQoKSkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNsb25lID0gaXQtPnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjbG9uZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAg
ICAgICAgICBGbG9hdFBvaW50IGNsb25lUG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0aW9uOwogCi0g
ICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyICYmIG1fcmVwbGljYUxheWVyICYmIGlz
UmVwbGljYXRlZFJvb3RDbG9uZShpdC0+a2V5KSkgeworICAgICAgICAgICAgaWYgKCFtX3N0cnVj
dHVyYWxMYXllciAmJiBtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQt
PmZpcnN0KSkgewogICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2Ug
cG9zaXRpb24gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKICAgICAgICAgICAgICAg
ICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgogICAgICAgICAg
ICAgICAgIGNsb25lUG9zaXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CkBAIC0x
MjQ2LDggKzEyNDYsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJhbnNmb3JtKCkK
ICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkg
ewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+
ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJD
bG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGN1cnJMYXllciA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIGlmICht
X3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmtleSkpIHsKKyAgICAg
ICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQt
PmZpcnN0KSkgewogICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2Ug
dHJhbnNmb3JtIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCiAgICAgICAgICAgICAg
ICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KICAgICAgICAg
ICAgICAgICBjdXJyTGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsK
QEAgLTEyNjQsNyArMTI2NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDaGlsZHJl
blRyYW5zZm9ybSgpCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxh
eWVyQ2xvbmVzKCkpIHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
eWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ICAgIGl0LT52YWx1ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRyYW5zZm9ybSk7
CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVu
VHJhbnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVy
Q2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNr
c1RvQm91bmRzKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE1hc2tzVG9Cb3VuZHMobV9t
YXNrc1RvQm91bmRzKTsKICAgICB9CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKQEAg
LTEyOTMsNyArMTI5Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1Zp
c2liaWxpdHkoKQogICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVy
Q2xvbmVzLmdldCgpKSB7CiAgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgICAgICAgICBpdC0+dmFsdWUtPnNldENvbnRlbnRzKDApOworICAgICAgICAgICAg
ICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKDApOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
MTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzT3Bh
cXVlKCkKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+
dmFsdWUtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKICAgICB9CiB9CiAKQEAgLTEzMTcsNyAr
MTMxNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHko
KQogICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxMYXll
ckNsb25lcy5nZXQoKSkgewogICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlz
aWJpbGl0eSk7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RG91YmxlU2lkZWQobV9i
YWNrZmFjZVZpc2liaWxpdHkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzI2LDcgKzEzMjYs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKICAg
ICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQo
KTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25l
TWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnNl
dERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKICAgICB9CiB9CiAKQEAg
LTEzMzgsMTAgKzEzMzgsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUZpbHRlcnMo
KQogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygp
KSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICht
X3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmtleSkpCisgICAgICAg
ICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJz
dCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+
c2V0RmlsdGVycyhtX2ZpbHRlcnMpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RmlsdGVy
cyhtX2ZpbHRlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQzMCw3ICsxNDMwLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5
ZXJQdXJwb3NlIHB1cnBvc2UsIGZsb2EKICAgICBpZiAobV9sYXllckNsb25lcykgewogICAgICAg
ICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9sYXllckNsb25lcy0+ZW5kKCk7CiAg
ICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9sYXllckNsb25lcy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIq
IGN1cnJMYXllciA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXll
ciogY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGN1cnJMYXllci0+
c2V0UG9zaXRpb24ocG9pbnQpOwogICAgICAgICAgICAgY3VyckxheWVyLT5zZXRBbmNob3JQb2lu
dChhbmNob3JQb2ludCk7CiAgICAgICAgICAgICBjdXJyTGF5ZXItPnNldFRyYW5zZm9ybShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKTsKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjp1cGRhdGVMYXllckRyYXdzQ29udGVudChmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNv
bnN0IEZsb2F0CiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CiAgICAgICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9sYXllckNsb25lcy0+ZW5kKCk7CiAgICAgICAg
ICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbGF5ZXJDbG9uZXMtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBpdC0+dmFsdWUtPnNldENv
bnRlbnRzKDApOworICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKDApOwog
ICAgICAgICB9CiAgICAgfQogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwpAQCAtMTUyNiw3
ICsxNTI2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQog
ICAgICAgICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7CiAgICAgICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKICAg
ICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xh
eWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgaXQt
PnZhbHVlLT5zZXRDb250ZW50cyhtX2NvbnRlbnRzTGF5ZXItPmNvbnRlbnRzKCkpOworICAgICAg
ICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKG1fY29udGVudHNMYXllci0+Y29udGVu
dHMoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgp
OwpAQCAtMTU3MCw4ICsxNTcwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzUmVjdCgpCiAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykgewogICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsK
ICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5
ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaXQtPnZh
bHVlLT5zZXRQb3NpdGlvbihwb2ludCk7Ci0gICAgICAgICAgICBpdC0+dmFsdWUtPnNldEJvdW5k
cyhyZWN0KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFBvc2l0aW9uKHBvaW50KTsKKyAg
ICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0KTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTE1ODYsOCArMTU4Niw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNr
TGF5ZXIoKQogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMu
Z2V0KCkpIHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgICAgICAgICAgIAot
ICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1h
cCA/IG1hc2tMYXllckNsb25lTWFwLT5nZXQoaXQtPmtleSkuZ2V0KCkgOiAwOwotICAgICAgICAg
ICAgaXQtPnZhbHVlLT5zZXRNYXNrKG1hc2tDbG9uZSk7CisgICAgICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXIqIG1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xheWVyQ2xvbmVNYXAt
PmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE1h
c2sobWFza0Nsb25lKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE2NTEsMTMgKzE2NTEsMTMg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygpCiAgICAgaWYg
KG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKICAgICAgICAgQW5pbWF0aW9uc1RvUHJv
Y2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgp
OwogICAgICAgICBmb3IgKEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBjdXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5rZXk7CisgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZpcnN0OwogICAg
ICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBtX3J1bm5pbmdB
bmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOwogICAgICAgICAgICAgaWYgKGFuaW1h
dGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHBy
b2Nlc3NpbmdJbmZvID0gaXQtPnZhbHVlOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXQtPnZhbHVlOworICAg
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8g
PSBpdC0+c2Vjb25kOworICAgICAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmlt
YXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXQtPnNlY29uZDsKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBhbmlt
YXRpb25zW2ldOwogICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9u
KSB7CkBAIC0xNjg5LDcgKzE2ODksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5
ZXJBbmltYXRpb25zKCkKICAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5n
QW5pbWF0aW9uKTsKICAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFkZChwZW5k
aW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CiAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9u
cyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4mIGFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgICAgIGFuaW1hdGlv
bnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0xNzE0LDExICsxNzE0LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25P
bkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qIGNhQW5pbSwgQW5pbWF0ZWRQCiAgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJl
cGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBp
ZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5rZXkpKQorICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+
Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpdC0+dmFs
dWUtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7Ci0gICAgICAgICAgICBpdC0+
dmFsdWUtPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgY2FBbmltKTsKKyAgICAgICAg
ICAgIGl0LT5zZWNvbmQtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAg
ICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIGNhQW5p
bSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNzUzLDEwICsxNzUzLDEwIEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHksIGNvCiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0
aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNh
dGVkUm9vdENsb25lKGl0LT5rZXkpKQorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYm
IGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmlt
YXRpb25JRCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kIC0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5
KGFuaW1hdGlvbklEKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3
ODUsOSArMTc4NSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUNBQW5pbWF0aW9uT25M
YXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0CiAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2Fz
LCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9y
ZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5rZXkpKQorICAgICAgICAg
ICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3Qp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaXQtPnZhbHVlLT5hZGRB
bmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIG5ld0FuaW0uZ2V0KCkpOworICAgICAgICAgICAg
aXQtPnNlY29uZC0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBuZXdBbmltLmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIzMTEsOCArMjMxMSw4IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICBpZiAoTGF5ZXJN
YXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewogICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpdC0+dmFsdWUtPnNldFNwZWVkKDAp
OwotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRUaW1lT2Zmc2V0KHQpOworICAgICAgICAgICAg
aXQtPnNlY29uZC0+c2V0U3BlZWQoMCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRUaW1l
T2Zmc2V0KHQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjMyNiw4ICsyMzI2LDggQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnJlc3VtZUFuaW1hdGlvbnMoKQogICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CiAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0U3BlZWQoMSk7Ci0g
ICAgICAgICAgICBpdC0+dmFsdWUtPnNldFRpbWVPZmZzZXQoMCk7CisgICAgICAgICAgICBpdC0+
c2Vjb25kLT5zZXRTcGVlZCgxKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFRpbWVPZmZz
ZXQoMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNTM3LDEzICsyNTM3LDEzIEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShD
bG9uZUlEIGNsb25lSUQsIFBsCiAgICAgTGF5ZXJNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBj
bG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFk
eS4KLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3VyY2VM
YXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRMYXllci0+
c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlEWzBV
XSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSByZXN1bHRMYXllcjsKKyAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSByZXN1bHRMYXllcjsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
TGF5ZXI7CkBAIC0yNzM1LDkgKzI3MzUsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3Bh
Y2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKICAgICBpZiAobGF5ZXJDbG9u
ZU1hcCkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBp
ZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5rZXkpKQorICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+
Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaXQtPnZhbHVl
LT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFj
aXR5KG1fb3BhY2l0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNzQ5LDEwICsyNzQ5LDEw
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVPcGFjaXR5T25MYXllcigpCiAgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKICAgICAg
ICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwog
ICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxh
eWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+a2V5KSkKKyAgICAgICAgICAgIGlmICht
X3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRPcGFjaXR5
KG1fb3BhY2l0eSk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFjaXR5KG1fb3BhY2l0
eSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0KaW5kZXggMWRlNTQzMjRhNDQ4
MTYzZTcwNDY5MWQ3YzM4YTY4NzllMmNjZmU5NC4uYThlZDRhYWNhMGIwNjhlNGU3NjAzNjg0NjJh
YzFhZDUyMmZkZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBAIC03Niw3ICs3Niw3IEBAIFRpbGVDYWNoZTo6flRp
bGVDYWNoZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGZvciAoVGlsZU1h
cDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJUaWxlTGF5ZXIqIHRpbGVMYXllciA9IGl0LT52
YWx1ZS5nZXQoKTsKKyAgICAgICAgV2ViVGlsZUxheWVyKiB0aWxlTGF5ZXIgPSBpdC0+c2Vjb25k
LmdldCgpOwogICAgICAgICBbdGlsZUxheWVyIHNldFRpbGVDYWNoZTowXTsKICAgICB9CiB9CkBA
IC05Niw3ICs5Niw3IEBAIHZvaWQgVGlsZUNhY2hlOjp0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5n
ZWQoKQogdm9pZCBUaWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgZm9yIChUaWxl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNldE5lZWRz
RGlzcGxheV07CisgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldE5lZWRzRGlzcGxheV07CiB9
CiAKIHZvaWQgVGlsZUNhY2hlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lkIFRpbGVDYWNoZTo6c2V0U2NhbGUoQ0dGbG9h
dCBzY2FsZSkKICAgICByZXZhbGlkYXRlVGlsZXMoKTsKIAogICAgIGZvciAoVGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNldENvbnRlbnRzU2Nh
bGU6ZGV2aWNlU2NhbGVGYWN0b3JdOworICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRDb250
ZW50c1NjYWxlOmRldmljZVNjYWxlRmFjdG9yXTsKIAotICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gcmVjdEZvclRpbGVJbmRleChpdC0+a2V5KTsKKyAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9
IHJlY3RGb3JUaWxlSW5kZXgoaXQtPmZpcnN0KTsKICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZFRp
bGVSZWN0ID0gdGlsZVJlY3Q7CiAKICAgICAgICAgc2NhbGVkVGlsZVJlY3Quc2NhbGUoMSAvIG1f
c2NhbGUpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgVGlsZUNhY2hlOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcoYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiAgICAgbV9hY2NlbGVyYXRlc0RyYXdp
bmcgPSBhY2NlbGVyYXRlc0RyYXdpbmc7CiAKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIFtpdC0+dmFsdWUuZ2V0KCkgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nOm1f
YWNjZWxlcmF0ZXNEcmF3aW5nXTsKKyAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0QWNjZWxl
cmF0ZXNEcmF3aW5nOm1fYWNjZWxlcmF0ZXNEcmF3aW5nXTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGFjY2VsZXJhdGVzRHJhd2luZyk7CiAjZW5kaWYKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lk
IFRpbGVDYWNoZTo6c2V0VGlsZURlYnVnQm9yZGVyV2lkdGgoZmxvYXQgYm9yZGVyV2lkdGgpCiAK
ICAgICBtX3RpbGVEZWJ1Z0JvcmRlcldpZHRoID0gYm9yZGVyV2lkdGg7CiAgICAgZm9yIChUaWxl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNldEJvcmRl
cldpZHRoOm1fdGlsZURlYnVnQm9yZGVyV2lkdGhdOworICAgICAgICBbaXQtPnNlY29uZC5nZXQo
KSBzZXRCb3JkZXJXaWR0aDptX3RpbGVEZWJ1Z0JvcmRlcldpZHRoXTsKIH0KIAogdm9pZCBUaWxl
Q2FjaGU6OnNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENHQ29sb3JSZWYgYm9yZGVyQ29sb3IpCkBA
IC0yNTUsNyArMjU1LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnNldFRpbGVEZWJ1Z0JvcmRlckNvbG9y
KENHQ29sb3JSZWYgYm9yZGVyQ29sb3IpCiAKICAgICBtX3RpbGVEZWJ1Z0JvcmRlckNvbG9yID0g
Ym9yZGVyQ29sb3I7CiAgICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGls
ZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICBbaXQtPnZhbHVlLmdldCgpIHNldEJvcmRlckNvbG9yOm1fdGlsZURlYnVnQm9yZGVyQ29sb3Iu
Z2V0KCldOworICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3JkZXJDb2xvcjptX3RpbGVE
ZWJ1Z0JvcmRlckNvbG9yLmdldCgpXTsKIH0KIAogSW50UmVjdCBUaWxlQ2FjaGU6OmJvdW5kcygp
IGNvbnN0CkBAIC0zNjEsOSArMzYxLDkgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxl
cygpCiAgICAgVmVjdG9yPFRpbGVJbmRleD4gdGlsZXNUb1JlbW92ZTsKIAogICAgIGZvciAoVGls
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25zdCBUaWxlSW5kZXgmIHRpbGVJbmRleCA9
IGl0LT5rZXk7CisgICAgICAgIGNvbnN0IFRpbGVJbmRleCYgdGlsZUluZGV4ID0gaXQtPmZpcnN0
OwogCi0gICAgICAgIFdlYlRpbGVMYXllciogdGlsZUxheWVyID0gaXQtPnZhbHVlLmdldCgpOwor
ICAgICAgICBXZWJUaWxlTGF5ZXIqIHRpbGVMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAKICAg
ICAgICAgaWYgKCFyZWN0Rm9yVGlsZUluZGV4KHRpbGVJbmRleCkuaW50ZXJzZWN0cyh0aWxlQ292
ZXJhZ2VSZWN0KSkgewogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgbGF5ZXIuCkBAIC0zOTEs
NyArMzkxLDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAgICAgICAgICAg
ICBUaWxlSW5kZXggdGlsZUluZGV4KHgsIHkpOwogCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVS
ZWN0ID0gcmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpOwotICAgICAgICAgICAgUmV0YWluUHRy
PFdlYlRpbGVMYXllcj4mIHRpbGVMYXllciA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwgMCkuaXRl
cmF0b3ItPnZhbHVlOworICAgICAgICAgICAgUmV0YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVM
YXllciA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAg
ICAgICAgIGlmICghdGlsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgdGlsZUxheWVyID0gY3Jl
YXRlVGlsZUxheWVyKHRpbGVSZWN0KTsKICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVy
TGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6dGlsZUxheWVyLmdldCgpXTsKQEAgLTQxMSw3ICs0MTEs
NyBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKCkKIAogICAgIG1fdGlsZUNvdmVy
YWdlUmVjdCA9IEludFJlY3QoKTsKICAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90
aWxlcy5iZWdpbigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgY29uc3QgVGlsZUluZGV4JiB0aWxlSW5kZXggPSBpdC0+a2V5OworICAgICAgICBjb25z
dCBUaWxlSW5kZXgmIHRpbGVJbmRleCA9IGl0LT5maXJzdDsKIAogICAgICAgICBtX3RpbGVDb3Zl
cmFnZVJlY3QudW5pdGUocmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2ExMTQ0NjIy
MTExYmMzMDYxZjAuLjQ4YjIwZDBiOGJkMjQyYWI1NDliOGZlNDQyZGY0NGFiMzY3MmViODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPFN0
cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9hbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5zZXRBY3R1YWxTdGFydFRpbWVJZk5lZWRlZChjYWNmQmVnaW5UaW1lKTsKKyAgICAgICAgaXQt
PnNlY29uZC0+c2V0QWN0dWFsU3RhcnRUaW1lSWZOZWVkZWQoY2FjZkJlZ2luVGltZSk7CiAKICAg
ICBpZiAobV9vd25lcikKICAgICAgICAgbV9vd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9u
U3RhcnRlZChiZWdpblRpbWUpOwpAQCAtMTc3LDggKzE3Nyw4IEBAIHN0YXRpYyB2b2lkIHJlc3Vi
bWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+
YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVyLT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0
KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcyhBZG9wdENGLCBpdC0+Zmlyc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
ICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxhdGZvcm1MYXllcigpLCBzLmdldCgp
LCBpdC0+c2Vjb25kLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKICAgICB9CiB9CiAKQEAgLTMyOCw3
ICszMjgsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FMYXll
cjo6YW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYgawogICAgIGlmIChpdCA9PSBtX2FuaW1h
dGlvbnMuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGl0LT52YWx1ZTsK
KyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNB
TGF5ZXI6Om1hc2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCmlu
ZGV4IDBjODY1NTAwZGU4OGMzZDhkYzYxZmI1YzgzMWQ5ZWMzNGU0MTBmNzAuLjlmODk5OGNkYWZk
ODEyZTE4OWU2NWEyODVmYjZjNDc1MzBhNDZlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJv
bWl1bVdpbi5jcHAKQEAgLTIyMywxMCArMjIzLDEwIEBAIHN0YXRpYyBib29sIExvb2t1cEFsdE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGFsdE5hbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN0YXRpYyBpbnQgc3lzdGVtQ3AgPSA6OkdldEFDUCgpOwotICAgIGludCBm
b250Q3AgPSBpdGVyLT52YWx1ZS0+Y29kZVBhZ2U7CisgICAgaW50IGZvbnRDcCA9IGl0ZXItPnNl
Y29uZC0+Y29kZVBhZ2U7CiAKICAgICBpZiAoKGlzQXNjaWkgJiYgc3lzdGVtQ3AgPT0gZm9udENw
KSB8fCAoIWlzQXNjaWkgJiYgc3lzdGVtQ3AgIT0gZm9udENwKSkgewotICAgICAgICBhbHROYW1l
ID0gU3RyaW5nKGl0ZXItPnZhbHVlLT5uYW1lKTsKKyAgICAgICAgYWx0TmFtZSA9IFN0cmluZyhp
dGVyLT5zZWNvbmQtPm5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBzdGF0aWMgYm9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSogZm9udERhdGEsCiAKICAgICBIYXNoTWFwPGNvbnN0IHdjaGFyX3QqLCBp
Y3U6OlVuaWNvZGVTZXQqPjo6aXRlcmF0b3IgaXQgPSBmb250Q21hcENhY2hlLT5maW5kKGZhbWls
eSk7CiAgICAgaWYgKGl0ICE9IGZvbnRDbWFwQ2FjaGUtPmVuZCgpKQotICAgICAgICByZXR1cm4g
aXQtPnZhbHVlLT5jb250YWlucyhjaGFyYWN0ZXIpOworICAgICAgICByZXR1cm4gaXQtPnNlY29u
ZC0+Y29udGFpbnMoY2hhcmFjdGVyKTsKIAogICAgIEhGT05UIGhmb250ID0gZm9udERhdGEtPmhm
b250KCk7CiAgICAgSFduZERDIGhkYygwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2lu
LmNwcAppbmRleCAyZmZhYmJiNzY4MmRlYThhMGUxZmM5ZmRhZWU5YzcxODA1YTQyYTA4Li5jYzUy
YzUyZWI3MDU3ODJkZTFmOTY4ZGM4MDNjNDVlNGYyYWUyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0
aWxzQ2hyb21pdW1XaW4uY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgYm9vbCBnZXREZXJpdmVkRm9u
dERhdGEoY29uc3QgVUNoYXIqIGZhbWlseSwKICAgICAgICAgLy8gY2hlY2sgaXQgYWdhaW5zdCB3
aGF0IHdlIGFjdHVhbGx5IHdhbnQgKGFzIGlzIGRvbmUgaW4KICAgICAgICAgLy8gRm9udENhY2hl
V2luLmNwcCkKICAgICAgICAgRm9udERhdGFDYWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gZm9udERh
dGFDYWNoZS5hZGQoZm9udEtleSwgRm9udERhdGEoKSk7Ci0gICAgICAgIGRlcml2ZWQgPSAmZW50
cnkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBkZXJpdmVkID0gJmVudHJ5Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgICAgIGRlcml2ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2Zv
bnQpOwogICAgICAgICAvLyBHZXRBc2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBi
dXQgd2Ugc3RpbGwgd2FudCB0bwogICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0
IGhhdmUgdG8gY2FsbCBDcmVhdGVGb250SW5kaXJlY3Qgb25jZQpAQCAtNDIzLDcgKzQyMyw3IEBA
IGJvb2wgZ2V0RGVyaXZlZEZvbnREYXRhKGNvbnN0IFVDaGFyKiBmYW1pbHksCiAgICAgICAgIGRl
cml2ZWQtPmFzY2VudCA9IGdldEFzY2VudChkZXJpdmVkLT5oZm9udCk7CiAgICAgICAgIGRlcml2
ZWQtPnNwYWNlR2x5cGggPSBnZXRTcGFjZUdseXBoKGRlcml2ZWQtPmhmb250KTsKICAgICB9IGVs
c2UgewotICAgICAgICBkZXJpdmVkID0gJml0ZXItPnZhbHVlOworICAgICAgICBkZXJpdmVkID0g
Jml0ZXItPnNlY29uZDsKICAgICAgICAgLy8gTGFzdCB0aW1lLCBHZXRBc2NlbnQgZmFpbGVkIHNv
IHRoYXQgb25seSBIRk9OVCB3YXMKICAgICAgICAgLy8gY2FjaGVkLiBUcnkgb25jZSBtb3JlIGFz
c3VtaW5nIHRoYXQgVHJ5UHJlbG9hZEZvbnQKICAgICAgICAgLy8gd2FzIGNhbGxlZCBieSBhIGNh
bGxlciBiZXR3ZWVuIGNhbGxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MmMzZDBjZDRlZGMyY2E4MTM4NzJiM2JiOTkyMzNhZjgxMzZhMDVhYi4uNWRjNjVlYzVhMjA4MWFh
ZDQ0NzdkMzI4MjkzOTRhMzYyZDAzNzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0yMjUsOSArMjI1LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIFZlY3RvcjxVcGRhdGFibGVUaWxlKj4g
aW52YWxpZFRpbGVzOwogCiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3Rp
bGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaW50IGkgPSBpdGVyLT5rZXku
Zmlyc3Q7Ci0gICAgICAgIGludCBqID0gaXRlci0+a2V5LnNlY29uZDsKLSAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT52YWx1ZS5n
ZXQoKSk7CisgICAgICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7CisgICAgICAgIGludCBq
ID0gaXRlci0+Zmlyc3Quc2Vjb25kOworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3Rh
dGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBub3QgZXZlciBiZSBudWxsLgogICAgICAgICBpZiAoIXRpbGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAg
ICAgaWYgKGhvc3QgJiYgaG9zdCAhPSBsYXllclRyZWVIb3N0KCkpIHsKICAgICAgICAgZm9yIChD
Q0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXIt
PnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFi
bGVUaWxlKj4oaXRlci0+dmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSog
dGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBldmVyIGJlIG51bGwuCiAgICAg
ICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMjUsNyAr
MzI1LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVDb250ZW50UmVjdChj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChD
Q0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXIt
PnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRp
bGUqPihpdGVyLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBz
dGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAg
QVNTRVJUKHRpbGUpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGV2ZXIgYmUg
bnVsbC4KICAgICAgICAgaWYgKCF0aWxlKQpAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5Q2FsY3Vs
YXRvciYgcHJpb3JpCiAKICAgICAvLyBOb3cgdXBkYXRlIHByaW9yaXRpZXMgb24gYWxsIHRpbGVz
IHdlIGhhdmUgaW4gdGhlIGxheWVyLCBubyBtYXR0ZXIgd2hlcmUgdGhleSBhcmUuCiAgICAgZm9y
IChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGls
ZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0
ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJs
ZVRpbGUqPihpdGVyLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUg
PSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBldmVyIGJlIG51bGwuCiAgICAgICAgIGlmICgh
dGlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKIAogICAgIENDTGF5ZXJUaWxpbmdE
YXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RpbGVyLT50aWxlcygpLmVuZCgp
OwogICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAg
ICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihp
dGVyLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNf
Y2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIG5vdCBldmVyIGJlIG51bGwuCiAgICAgICAgIGlmICghdGlsZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXgg
NzVhMTU2NDgxZTNlMjE3NzlmZjk3ZTdmNjRlN2QwOTkyMjQ5ZDUzYi4uMTE0NDk5YmExN2VkNGZm
MTVkZTA4ZTBjZDQwZmEzMzY3MWE2MTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIu
Y3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgRmxvYXRSZWN0IENDRGFtYWdlVHJhY2tlcjo6dHJhY2tE
YW1hZ2VGcm9tTGVmdG92ZXJSZWN0cygpCiAgICAgRmxvYXRSZWN0IGRhbWFnZVJlY3QgPSBGbG9h
dFJlY3QoKTsKIAogICAgIGZvciAoUmVjdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRSZWN0
SGlzdG9yeS0+YmVnaW4oKTsgaXQgIT0gbV9jdXJyZW50UmVjdEhpc3RvcnktPmVuZCgpOyArK2l0
KQotICAgICAgICBkYW1hZ2VSZWN0LnVuaXRlKGl0LT52YWx1ZSk7CisgICAgICAgIGRhbWFnZVJl
Y3QudW5pdGUoaXQtPnNlY29uZCk7CiAKICAgICBtX2N1cnJlbnRSZWN0SGlzdG9yeS0+Y2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmNwcAppbmRleCBmYjhhYzFkMjEzNjI3
M2EwYjY4ODYxODlkYjI2NmIwZmUyYTQ2MDZkLi40Njg4YmVkMTliZmM0ZTgzNWJhZGYzNzkyNmQ5
MDNkMjZhMGVkMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmNwcApAQCAtMTE5
LDE1ICsxMTksMTUgQEAgdm9pZCBDQ0RpcmVjdFJlbmRlcmVyOjpkZWNpZGVSZW5kZXJQYXNzQWxs
b2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXMKICAgICBWZWN0b3I8aW50PiBw
YXNzZXNUb0RlbGV0ZTsKICAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46
OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKICAgICBmb3IgKHBhc3NJdGVyYXRvciA9IG1f
cmVuZGVyUGFzc1RleHR1cmVzLmJlZ2luKCk7IHBhc3NJdGVyYXRvciAhPSBtX3JlbmRlclBhc3NU
ZXh0dXJlcy5lbmQoKTsgKytwYXNzSXRlcmF0b3IpIHsKLSAgICAgICAgY29uc3QgQ0NSZW5kZXJQ
YXNzKiByZW5kZXJQYXNzSW5GcmFtZSA9IHJlbmRlclBhc3Nlc0luRnJhbWUuZ2V0KHBhc3NJdGVy
YXRvci0+a2V5KTsKKyAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5GcmFt
ZSA9IHJlbmRlclBhc3Nlc0luRnJhbWUuZ2V0KHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAg
ICBpZiAoIXJlbmRlclBhc3NJbkZyYW1lKSB7Ci0gICAgICAgICAgICBwYXNzZXNUb0RlbGV0ZS5h
cHBlbmQocGFzc0l0ZXJhdG9yLT5rZXkpOworICAgICAgICAgICAgcGFzc2VzVG9EZWxldGUuYXBw
ZW5kKHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBJbnRTaXplJiByZXF1aXJlZFNpemUgPSByZW5kZXJQYXNzVGV4
dHVyZVNpemUocmVuZGVyUGFzc0luRnJhbWUpOwogICAgICAgICBHQzNEZW51bSByZXF1aXJlZEZv
cm1hdCA9IHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3NJbkZyYW1lKTsKLSAgICAg
ICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IHBhc3NJdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cisg
ICAgICAgIENhY2hlZFRleHR1cmUqIHRleHR1cmUgPSBwYXNzSXRlcmF0b3ItPnNlY29uZC5nZXQo
KTsKICAgICAgICAgQVNTRVJUKHRleHR1cmUpOwogCiAgICAgICAgIGlmICh0ZXh0dXJlLT5pZCgp
ICYmICh0ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRTaXplIHx8IHRleHR1cmUtPmZvcm1hdCgp
ICE9IHJlcXVpcmVkRm9ybWF0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcApp
bmRleCBhODFlMDZjMDUwOTJiMTNmOWE2YmYwMDQ2OTI1ZGYzZDU0YTI3ZjNmLi45YjU1MTU2ZDk1
YmEzNDMzZmY2YzE2YzZlYjU1MDlhYjcxMDI5ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRp
bGluZ0RhdGEuY3BwCkBAIC0xNTMsOCArMTUzLDggQEAgdm9pZCBDQ0xheWVyVGlsaW5nRGF0YTo6
c2V0Qm91bmRzKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRp
Y2VzKEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7
CiAgICAgVmVjdG9yPFRpbGVNYXBLZXk+IGludmFsaWRUaWxlS2V5czsKICAgICBmb3IgKFRpbGVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBtX3RpbGVzLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+a2V5LmZpcnN0ID4gcmlnaHQgfHwgaXQtPmtl
eS5zZWNvbmQgPiBib3R0b20pCi0gICAgICAgICAgICBpbnZhbGlkVGlsZUtleXMuYXBwZW5kKGl0
LT5rZXkpOworICAgICAgICBpZiAoaXQtPmZpcnN0LmZpcnN0ID4gcmlnaHQgfHwgaXQtPmZpcnN0
LnNlY29uZCA+IGJvdHRvbSkKKyAgICAgICAgICAgIGludmFsaWRUaWxlS2V5cy5hcHBlbmQoaXQt
PmZpcnN0KTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnZhbGlkVGlsZUtl
eXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fdGlsZXMucmVtb3ZlKGludmFsaWRUaWxlS2V5c1tp
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA0OGRiYjZjZTk0ZTAxNjMx
OTFkY2YyMmRkYmYzY2Q2OWQ5ZWYzNWEyLi4yNGEzMzRjM2ZjNzEyNDdhZjFjMjNiMzJjZmMyMmU5
OGFmMjI3YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAgIG51bUxheWVy
VHJlZUluc3RhbmNlcy0tOwogICAgIFJhdGVMaW1pdGVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmF0
ZUxpbWl0ZXJzLmJlZ2luKCk7CiAgICAgaWYgKGl0ICE9IG1fcmF0ZUxpbWl0ZXJzLmVuZCgpKQot
ICAgICAgICBpdC0+dmFsdWUtPnN0b3AoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+c3RvcCgpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0U3VyZmFjZVJlYWR5KCkKQEAgLTY2OSw3ICs2
NjksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcihXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBS
YXRlTGltaXRlck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JhdGVMaW1pdGVycy5maW5kKGNvbnRleHQp
OwogICAgIGlmIChpdCAhPSBtX3JhdGVMaW1pdGVycy5lbmQoKSkKLSAgICAgICAgaXQtPnZhbHVl
LT5zdGFydCgpOworICAgICAgICBpdC0+c2Vjb25kLT5zdGFydCgpOwogICAgIGVsc2UgewogICAg
ICAgICBSZWZQdHI8UmF0ZUxpbWl0ZXI+IHJhdGVMaW1pdGVyID0gUmF0ZUxpbWl0ZXI6OmNyZWF0
ZShjb250ZXh0LCB0aGlzKTsKICAgICAgICAgbV9yYXRlTGltaXRlcnMuc2V0KGNvbnRleHQsIHJh
dGVMaW1pdGVyKTsKQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3Rv
cFJhdGVMaW1pdGVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAg
ICAgUmF0ZUxpbWl0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yYXRlTGltaXRlcnMuZmluZChjb250
ZXh0KTsKICAgICBpZiAoaXQgIT0gbV9yYXRlTGltaXRlcnMuZW5kKCkpIHsKLSAgICAgICAgaXQt
PnZhbHVlLT5zdG9wKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnN0b3AoKTsKICAgICAgICAgbV9y
YXRlTGltaXRlcnMucmVtb3ZlKGl0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDdiMDA0MTUxZDk4MGZhOTVlMDUwY2I4YTNjMWFlYTA5MDVm
NzMzNmIuLjkxODMzYWYxZjQzMzkzMmRmMjUwMGJkNDVkYmQxZThhYjdhYTM5ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgc3Rh
dGljIGlubGluZSBDQ1JlbmRlclBhc3MqIGZpbmRSZW5kZXJQYXNzQnlJZChpbnQgcmVuZGVyUGFz
c0lkLCBjb25zdCBDQ0xheWVyVHIKIHsKICAgICBDQ1JlbmRlclBhc3NJZEhhc2hNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5maW5kKHJlbmRlclBhc3NJZCk7
CiAgICAgQVNTRVJUKGl0ICE9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZW5kKCkpOwotICAgIHJl
dHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShpbnQgcmVtb3ZlUmVuZGVy
UGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKaW5kZXggMDMwMDA5OWZiZTU4NzcxMzY0NmY5YjI2
ZjMyNzQwMTkyNjdjYWU5MC4uZmMzYmZlN2UxNWYwYTdiYjAzYWY1N2RlNTY4YmZhY2Q2YTk0NTE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIGJvb2wgQ0NSZXNvdXJjZVByb3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIoUmVzb3VyY2VJZCBp
ZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBt
X3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgcmV0dXJuICEhaXQtPnZhbHVlLmxvY2tGb3JSZWFkQ291
bnQgfHwgaXQtPnZhbHVlLmV4cG9ydGVkOworICAgIHJldHVybiAhIWl0LT5zZWNvbmQubG9ja0Zv
clJlYWRDb3VudCB8fCBpdC0+c2Vjb25kLmV4cG9ydGVkOwogfQogCiBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9v
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50
IGhpbnQpCkBAIC0xNTUsMTYgKzE1NSwxNiBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVs
ZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCBpZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQo
aWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgQVNTRVJUKCFp
dC0+dmFsdWUubG9ja2VkRm9yV3JpdGUpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlLmxvY2tGb3JS
ZWFkQ291bnQpOworICAgIEFTU0VSVCghaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7CisgICAg
QVNTRVJUKCFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwogCi0gICAgaWYgKGl0LT52YWx1
ZS5nbElkICYmICFpdC0+dmFsdWUuZXh0ZXJuYWwpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5nbElk
ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKSB7CiAgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwogICAgICAgICBBU1NFUlQoY29u
dGV4dDNkKTsKLSAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5kZWxldGVUZXh0dXJl
KGl0LT52YWx1ZS5nbElkKSk7CisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVs
ZXRlVGV4dHVyZShpdC0+c2Vjb25kLmdsSWQpKTsKICAgICB9Ci0gICAgaWYgKGl0LT52YWx1ZS5w
aXhlbHMpCi0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWUucGl4ZWxzOworICAgIGlmIChpdC0+c2Vj
b25kLnBpeGVscykKKyAgICAgICAgZGVsZXRlIGl0LT5zZWNvbmQucGl4ZWxzOwogCiAgICAgbV9y
ZXNvdXJjZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6ZGVsZXRlT3duZWRSZXNvdXJjZXMoaW50IHBvb2wpCiAgICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZUlkQXJyYXkgdG9EZWxldGU7CiAg
ICAgZm9yIChSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBp
dCAhPSBtX3Jlc291cmNlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLnBv
b2wgPT0gcG9vbCAmJiAhaXQtPnZhbHVlLmV4dGVybmFsKQotICAgICAgICAgICAgdG9EZWxldGUu
YXBwZW5kKGl0LT5rZXkpOworICAgICAgICBpZiAoaXQtPnNlY29uZC5wb29sID09IHBvb2wgJiYg
IWl0LT5zZWNvbmQuZXh0ZXJuYWwpCisgICAgICAgICAgICB0b0RlbGV0ZS5hcHBlbmQoaXQtPmZp
cnN0KTsKICAgICB9CiAgICAgZm9yIChSZXNvdXJjZUlkQXJyYXk6Oml0ZXJhdG9yIGl0ID0gdG9E
ZWxldGUuYmVnaW4oKTsgaXQgIT0gdG9EZWxldGUuZW5kKCk7ICsraXQpCiAgICAgICAgIGRlbGV0
ZVJlc291cmNlKCppdCk7CkBAIC0xODUsNyArMTg1LDcgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZVR5cGUgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZXNvdXJjZVR5cGUoUmVzb3VyY2VJZCBp
ZCkKIHsKICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlk
KTsKICAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkpOwotICAgIHJldHVybiBpdC0+
dmFsdWUudHlwZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC50eXBlOwogfQogCiB2b2lkIENDUmVz
b3VyY2VQcm92aWRlcjo6dXBsb2FkKFJlc291cmNlSWQgaWQsIGNvbnN0IHVpbnQ4X3QqIGltYWdl
LCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFNpemUmIGRlc3RPZmZzZXQpCkBAIC0xOTMsMTkgKzE5MywxOSBAQCB2b2lkIENDUmVz
b3VyY2VQcm92aWRlcjo6dXBsb2FkKFJlc291cmNlSWQgaWQsIGNvbnN0IHVpbnQ4X3QqIGltYWdl
LCBjb25zdCBJbnRSZQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAg
UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNT
RVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKLSAgICBBU1NFUlQoIWl0LT52YWx1ZS5sb2Nr
ZWRGb3JXcml0ZSk7Ci0gICAgQVNTRVJUKCFpdC0+dmFsdWUubG9ja0ZvclJlYWRDb3VudCk7Ci0g
ICAgQVNTRVJUKCFpdC0+dmFsdWUuZXh0ZXJuYWwpOworICAgIEFTU0VSVCghaXQtPnNlY29uZC5s
b2NrZWRGb3JXcml0ZSk7CisgICAgQVNTRVJUKCFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQp
OworICAgIEFTU0VSVCghaXQtPnNlY29uZC5leHRlcm5hbCk7CiAKLSAgICBpZiAoaXQtPnZhbHVl
LmdsSWQpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5nbElkKSB7CiAgICAgICAgIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwogICAgICAgICBB
U1NFUlQoY29udGV4dDNkKTsKICAgICAgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOwot
ICAgICAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBpdC0+dmFsdWUuZ2xJZCk7Ci0gICAgICAgIG1fdGV4U3ViSW1hZ2UtPnVwbG9hZChpbWFn
ZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0T2Zmc2V0LCBpdC0+dmFsdWUuZm9ybWF0LCBj
b250ZXh0M2QpOworICAgICAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmdsSWQpOworICAgICAgICBtX3RleFN1YkltYWdl
LT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdE9mZnNldCwgaXQtPnNl
Y29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CiAgICAgfQogCi0gICAgaWYgKGl0LT52YWx1ZS5waXhl
bHMpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhlbHMpIHsKICAgICAgICAgU2tCaXRtYXAgc3Jj
RnVsbDsKICAgICAgICAgc3JjRnVsbC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29u
ZmlnLCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VSZWN0LmhlaWdodCgpKTsKICAgICAgICAgc3Jj
RnVsbC5zZXRQaXhlbHMoY29uc3RfY2FzdDx1aW50OF90Kj4oaW1hZ2UpKTsKQEAgLTI0NCw5ICsy
NDQsOSBAQCBjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlKiBDQ1Jlc291cmNlUHJv
dmlkZXI6OmxvY2tGb3JSZWFkKFJlc291cmNlSWQgaQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0lt
cGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMu
ZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKLSAgICBBU1NF
UlQoIWl0LT52YWx1ZS5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgaXQtPnZhbHVlLmxvY2tGb3JSZWFk
Q291bnQrKzsKLSAgICByZXR1cm4gJml0LT52YWx1ZTsKKyAgICBBU1NFUlQoIWl0LT5zZWNvbmQu
bG9ja2VkRm9yV3JpdGUpOworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCsrOworICAg
IHJldHVybiAmaXQtPnNlY29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9j
a0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKQEAgLTI1NCw4ICsyNTQsOCBAQCB2b2lkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQogICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
ZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsK
LSAgICBBU1NFUlQoaXQtPnZhbHVlLmxvY2tGb3JSZWFkQ291bnQgPiAwKTsKLSAgICBpdC0+dmFs
dWUubG9ja0ZvclJlYWRDb3VudC0tOworICAgIEFTU0VSVChpdC0+c2Vjb25kLmxvY2tGb3JSZWFk
Q291bnQgPiAwKTsKKyAgICBpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQtLTsKIH0KIAogY29u
c3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZSogQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2Nr
Rm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKQEAgLTI2MywxMSArMjYzLDExIEBAIGNvbnN0IENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRl
KFJlc291cmNlSWQKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgQVNTRVJUKCFpdC0+dmFsdWUubG9ja2Vk
Rm9yV3JpdGUpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlLmxvY2tGb3JSZWFkQ291bnQpOwotICAg
IEFTU0VSVCghaXQtPnZhbHVlLmV4dGVybmFsKTsKLSAgICBpdC0+dmFsdWUubG9ja2VkRm9yV3Jp
dGUgPSB0cnVlOwotICAgIHJldHVybiAmaXQtPnZhbHVlOworICAgIEFTU0VSVCghaXQtPnNlY29u
ZC5sb2NrZWRGb3JXcml0ZSk7CisgICAgQVNTRVJUKCFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291
bnQpOworICAgIEFTU0VSVCghaXQtPnNlY29uZC5leHRlcm5hbCk7CisgICAgaXQtPnNlY29uZC5s
b2NrZWRGb3JXcml0ZSA9IHRydWU7CisgICAgcmV0dXJuICZpdC0+c2Vjb25kOwogfQogCiB2b2lk
IENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUoUmVzb3VyY2VJZCBpZCkKQEAgLTI3
NSw5ICsyNzUsOSBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yV3JpdGUoUmVz
b3VyY2VJZCBpZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgQVNTRVJUKGl0LT52YWx1ZS5sb2NrZWRG
b3JXcml0ZSk7Ci0gICAgQVNTRVJUKCFpdC0+dmFsdWUuZXh0ZXJuYWwpOwotICAgIGl0LT52YWx1
ZS5sb2NrZWRGb3JXcml0ZSA9IGZhbHNlOworICAgIEFTU0VSVChpdC0+c2Vjb25kLmxvY2tlZEZv
cldyaXRlKTsKKyAgICBBU1NFUlQoIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNv
bmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKIH0KIAogQ0NSZXNvdXJjZVByb3ZpZGVyOjpTY29w
ZWRSZWFkTG9ja0dMOjpTY29wZWRSZWFkTG9ja0dMKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQpCkBA
IC00MDAsNyArNDAwLDcgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlc3Ryb3lDaGlsZChp
bnQgY2hpbGQpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBDaGls
ZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmZpbmQoY2hpbGQpOwogICAgIEFTU0VSVChp
dCAhPSBtX2NoaWxkcmVuLmVuZCgpKTsKLSAgICBkZWxldGVPd25lZFJlc291cmNlcyhpdC0+dmFs
dWUucG9vbCk7CisgICAgZGVsZXRlT3duZWRSZXNvdXJjZXMoaXQtPnNlY29uZC5wb29sKTsKICAg
ICBtX2NoaWxkcmVuLnJlbW92ZShpdCk7CiAgICAgdHJpbU1haWxib3hEZXF1ZSgpOwogfQpAQCAt
NDEwLDcgKzQxMCw3IEBAIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZE1hcCYg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpnZXRDaGlsZFRvUGFyZW50TWFwCiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBDaGlsZE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2NoaWxkcmVuLmZpbmQoY2hpbGQpOwogICAgIEFTU0VSVChpdCAhPSBtX2NoaWxkcmVuLmVuZCgp
KTsKLSAgICByZXR1cm4gaXQtPnZhbHVlLmNoaWxkVG9QYXJlbnRNYXA7CisgICAgcmV0dXJuIGl0
LT5zZWNvbmQuY2hpbGRUb1BhcmVudE1hcDsKIH0KIAogQ0NSZXNvdXJjZVByb3ZpZGVyOjpUcmFu
c2ZlcmFibGVSZXNvdXJjZUxpc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwcmVwYXJlU2VuZFRvUGFy
ZW50KGNvbnN0IFJlc291cmNlSWRBcnJheSYgcmVzb3VyY2VzKQpAQCAtNDI2LDcgKzQyNiw3IEBA
IENDUmVzb3VyY2VQcm92aWRlcjo6VHJhbnNmZXJhYmxlUmVzb3VyY2VMaXN0IENDUmVzb3VyY2VQ
cm92aWRlcjo6cHJlcGFyZVNlbmRUb1BhCiAgICAgZm9yIChSZXNvdXJjZUlkQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlcy5lbmQoKTsg
KytpdCkgewogICAgICAgICBUcmFuc2ZlcmFibGVSZXNvdXJjZSByZXNvdXJjZTsKICAgICAgICAg
aWYgKHRyYW5zZmVyUmVzb3VyY2UoY29udGV4dDNkLCAqaXQsICZyZXNvdXJjZSkpIHsKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2VzLmZpbmQoKml0KS0+dmFsdWUuZXhwb3J0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgbV9yZXNvdXJjZXMuZmluZCgqaXQpLT5zZWNvbmQuZXhwb3J0ZWQgPSB0cnVlOwog
ICAgICAgICAgICAgbGlzdC5yZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0NSw3ICs0NDUsNyBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRyYW5zZmVyYWJs
ZVJlc291cmNlTGlzdCBDQ1Jlc291cmNlUHJvdmlkZXI6OnByZXBhcmVTZW5kVG9DaAogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KLSAgICBDaGlsZCYgY2hpbGRJbmZvID0gbV9j
aGlsZHJlbi5maW5kKGNoaWxkKS0+dmFsdWU7CisgICAgQ2hpbGQmIGNoaWxkSW5mbyA9IG1fY2hp
bGRyZW4uZmluZChjaGlsZCktPnNlY29uZDsKICAgICBmb3IgKFJlc291cmNlSWRBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSByZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIFRyYW5zZmVyYWJsZVJlc291cmNlIHJlc291cmNlOwogICAgICAg
ICBpZiAoIXRyYW5zZmVyUmVzb3VyY2UoY29udGV4dDNkLCAqaXQsICZyZXNvdXJjZSkpCkBAIC00
NzgsNyArNDc4LDcgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnJlY2VpdmVGcm9tQ2hpbGQo
aW50IGNoaWxkLCBjb25zdCBUcmFuc2ZlcmFibGVSZXNvdXJjZUwKICAgICAgICAgLy8gKGFuZCBp
cyBzaW1wbGVyKSB0byB3YWl0LgogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPndh
aXRTeW5jUG9pbnQocmVzb3VyY2VzLnN5bmNQb2ludCkpOwogICAgIH0KLSAgICBDaGlsZCYgY2hp
bGRJbmZvID0gbV9jaGlsZHJlbi5maW5kKGNoaWxkKS0+dmFsdWU7CisgICAgQ2hpbGQmIGNoaWxk
SW5mbyA9IG1fY2hpbGRyZW4uZmluZChjaGlsZCktPnNlY29uZDsKICAgICBmb3IgKFZlY3RvcjxU
cmFuc2ZlcmFibGVSZXNvdXJjZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLnJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSByZXNvdXJjZXMucmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7CiAg
ICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKICAgICAgICAgR0xDKGNvbnRleHQzZCwgdGV4dHVy
ZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCkpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZv
aWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpyZWNlaXZlRnJvbVBhcmVudChjb25zdCBUcmFuc2ZlcmFi
bGVSZXNvdXJjZUxpc3QmIHJlc291CiAgICAgaWYgKHJlc291cmNlcy5zeW5jUG9pbnQpCiAgICAg
ICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+d2FpdFN5bmNQb2ludChyZXNvdXJjZXMuc3lu
Y1BvaW50KSk7CiAgICAgZm9yIChWZWN0b3I8VHJhbnNmZXJhYmxlUmVzb3VyY2U+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IHJlc291cmNlcy5yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2Vz
LnJlc291cmNlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBSZXNvdXJjZSYgcmVzb3VyY2UgPSBt
X3Jlc291cmNlcy5maW5kKGl0LT5pZCktPnZhbHVlOworICAgICAgICBSZXNvdXJjZSYgcmVzb3Vy
Y2UgPSBtX3Jlc291cmNlcy5maW5kKGl0LT5pZCktPnNlY29uZDsKICAgICAgICAgQVNTRVJUKHJl
c291cmNlLmV4cG9ydGVkKTsKICAgICAgICAgcmVzb3VyY2UuZXhwb3J0ZWQgPSBmYWxzZTsKICAg
ICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgcmVzb3VyY2UuZ2xJZCkpOwpAQCAtNTE4LDE5ICs1MTgsMTkgQEAg
Ym9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OnRyYW5zZmVyUmVzb3VyY2UoV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFJlc291cmMKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZp
bmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgQVNTRVJU
KCFpdC0+dmFsdWUubG9ja2VkRm9yV3JpdGUpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlLmxvY2tG
b3JSZWFkQ291bnQpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlLmV4dGVybmFsKTsKLSAgICBpZiAo
aXQtPnZhbHVlLmV4cG9ydGVkKQorICAgIEFTU0VSVCghaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0
ZSk7CisgICAgQVNTRVJUKCFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOworICAgIEFTU0VS
VCghaXQtPnNlY29uZC5leHRlcm5hbCk7CisgICAgaWYgKGl0LT5zZWNvbmQuZXhwb3J0ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNvdXJjZS0+aWQgPSBpZDsKLSAgICByZXNvdXJj
ZS0+Zm9ybWF0ID0gaXQtPnZhbHVlLmZvcm1hdDsKLSAgICByZXNvdXJjZS0+c2l6ZSA9IGl0LT52
YWx1ZS5zaXplOworICAgIHJlc291cmNlLT5mb3JtYXQgPSBpdC0+c2Vjb25kLmZvcm1hdDsKKyAg
ICByZXNvdXJjZS0+c2l6ZSA9IGl0LT5zZWNvbmQuc2l6ZTsKICAgICBpZiAoIW1fbWFpbGJveGVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmVzb3VyY2UtPm1haWxib3ggPSBtX21haWxib3hlcy50YWtl
Rmlyc3QoKTsKICAgICBlbHNlCiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZW5NYWls
Ym94Q0hST01JVU0ocmVzb3VyY2UtPm1haWxib3gubmFtZSkpOwotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnZh
bHVlLmdsSWQpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNvbmQuZ2xJZCkpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5wcm9kdWNlVGV4dHVyZUNIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCByZXNvdXJjZS0+bWFpbGJveC5uYW1lKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC01NDUsMTUgKzU0NSwxNSBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dHJpbU1haWxi
b3hEZXF1ZSgpCiAgICAgc2l6ZV90IG1heE1haWxib3hDb3VudCA9IDA7CiAgICAgaWYgKG1fY29u
dGV4dC0+Y2FwYWJpbGl0aWVzKCkuaGFzUGFyZW50Q29tcG9zaXRvcikgewogICAgICAgICBmb3Ig
KFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1f
cmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIWl0LT52YWx1ZS5leHBv
cnRlZCAmJiAhaXQtPnZhbHVlLmV4dGVybmFsKQorICAgICAgICAgICAgaWYgKCFpdC0+c2Vjb25k
LmV4cG9ydGVkICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKQogICAgICAgICAgICAgICAgICsrbWF4
TWFpbGJveENvdW50OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgSGFzaFNldDxp
bnQ+IGNoaWxkUG9vbFNldDsKICAgICAgICAgZm9yIChDaGlsZE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IG1fY2hpbGRyZW4uZW5kKCk7ICsraXQpCi0gICAgICAg
ICAgICBjaGlsZFBvb2xTZXQuYWRkKGl0LT52YWx1ZS5wb29sKTsKKyAgICAgICAgICAgIGNoaWxk
UG9vbFNldC5hZGQoaXQtPnNlY29uZC5wb29sKTsKICAgICAgICAgZm9yIChSZXNvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBtX3Jlc291cmNlcy5lbmQo
KTsgKytpdCkgewotICAgICAgICAgICAgaWYgKGNoaWxkUG9vbFNldC5jb250YWlucyhpdC0+dmFs
dWUucG9vbCkpCisgICAgICAgICAgICBpZiAoY2hpbGRQb29sU2V0LmNvbnRhaW5zKGl0LT5zZWNv
bmQucG9vbCkpCiAgICAgICAgICAgICAgICAgKyttYXhNYWlsYm94Q291bnQ7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCA5
NTEyOGZjMDU2ZDc5NTM5ZmRjNmI2ZDZjZjU1OTg2NzY1NWEwZWRhLi4zODJjMjc4ZWEyMWQxMzVm
MDljNzc2YzgzZjA1MjE2YmE2ZThlZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dDo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCgpCiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
Ojp+Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCgpCiB7CiAgICAgZm9yIChDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5iZWdpbigpOyBp
dGVyICE9IG1fcHJvZ3JhbXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgaXRlci0+dmFsdWUtPmRl
dGFjaEZyb21HbG9iYWxDb250ZXh0KCk7CisgICAgICAgIGl0ZXItPnNlY29uZC0+ZGV0YWNoRnJv
bUdsb2JhbENvbnRleHQoKTsKIH0KIAogdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojpw
cmVwYXJlQ29udGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCkBAIC02OSw3ICs2
OSw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0OjpnZXRDb21waWxlZFByCiAKICAgICBDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZv
KTsKICAgICBpZiAoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAKICAgICBSZWZQdHI8Q3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW06OmNyZWF0ZSh0aGlzLCBwcm9ncmFtSW5mbyk7CiAgICAgbV9wcm9ncmFt
cy5zZXQocHJvZ3JhbUluZm8sIGNvbXBpbGVkUHJvZ3JhbS5nZXQoKSk7CkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cmVtb3ZlQ29tcGlsZWRQcm9ncmFt
KGNvbnN0IEN1c3RvbUZpbHRlckNvbXBpbGVkCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIENoZWNr
IHRoYXQgdGhlcmUncyBubyB3YXkgd2UgY291bGQgaGF2ZSB0aGUgc2FtZSBwcm9ncmFtIHVuZGVy
IGEgZGlmZmVyZW50IGtleS4KICAgICBmb3IgKGl0ZXIgPSBtX3Byb2dyYW1zLmJlZ2luKCk7IGl0
ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKTsgKytpdGVyKQotICAgICAgICBBU1NFUlQoaXRlci0+dmFs
dWUgIT0gcHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChpdGVyLT5zZWNvbmQgIT0gcHJvZ3JhbSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKaW5kZXggOTRlODNk
ZjliODNiMmI1YjU0ZmU3NDdhN2UyYWZjYjQyMjVlOWNmZC4uZDFjZjYxMzRmNzBhZThhYmY1MmZj
NjIzYTdkNjk2NTM0ODc5ZjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6cmVtb3ZlQ2xpZW50KEN1
c3RvbUZpbHRlclByb2dyYW1DbGllbnQqIGNsaWVudCkKIHZvaWQgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTo6bm90aWZ5Q2xpZW50cygpCiB7CiAgICAgZm9yIChDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50
TGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fY2xpZW50cy5iZWdpbigpLCBlbmQgPSBtX2NsaWVudHMu
ZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPmtleS0+bm90aWZ5Q3Vz
dG9tRmlsdGVyUHJvZ3JhbUxvYWRlZCh0aGlzKTsKKyAgICAgICAgaXRlci0+Zmlyc3QtPm5vdGlm
eUN1c3RvbUZpbHRlclByb2dyYW1Mb2FkZWQodGhpcyk7CiB9CiAKIEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1JbmZvKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2tp
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6
elNraWEuY3BwCmluZGV4IDFlODg2N2JiNzU3ZjIyNDJlOGY0OTYyZjg3NWIxYmRmN2FlOTkxMmUu
LmY2OGVhNjE5MjQ1Zjg2NmU1YmQwZDU3OGQwMTA0ODQ0NTI1ODRjMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpT
a2lhLmNwcApAQCAtMjQ0LDE4ICsyNDQsMTggQEAgc3RhdGljIEhCX0ZhY2VSZWNfKiBnZXRDYWNo
ZWRIYXJmYnV6ekZhY2UoRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhKQogICAgICAgICBn
SGFyZmJ1enpGYWNlQ2FjaGUtPnNldCh1bmlxdWVJRCwgZW50cnkpOwogICAgICAgICByZXR1cm4g
ZW50cnkuZmlyc3Q7CiAgICAgfQotICAgICsrKHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKTsK
LSAgICByZXR1cm4gcmVzdWx0LmdldCgpLT52YWx1ZS5maXJzdDsKKyAgICArKyhyZXN1bHQuZ2V0
KCktPnNlY29uZC5zZWNvbmQpOworICAgIHJldHVybiByZXN1bHQuZ2V0KCktPnNlY29uZC5maXJz
dDsKIH0KIAogc3RhdGljIHZvaWQgcmVsZWFzZUNhY2hlZEhhcmZidXp6RmFjZShTa0ZvbnRJRCB1
bmlxdWVJRCkKIHsKICAgICBIYXJmYnV6ekZhY2VDYWNoZTo6aXRlcmF0b3IgcmVzdWx0ID0gZ0hh
cmZidXp6RmFjZUNhY2hlLT5maW5kKHVuaXF1ZUlEKTsKICAgICBBU1NFUlQocmVzdWx0ICE9IGdI
YXJmYnV6ekZhY2VDYWNoZS0+ZW5kKCkpOwotICAgIEFTU0VSVChyZXN1bHQuZ2V0KCktPnZhbHVl
LnNlY29uZCA+IDApOwotICAgIC0tKHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKTsKLSAgICBp
ZiAoIShyZXN1bHQuZ2V0KCktPnZhbHVlLnNlY29uZCkpIHsKLSAgICAgICAgSEJfRnJlZUZhY2Uo
cmVzdWx0LmdldCgpLT52YWx1ZS5maXJzdCk7CisgICAgQVNTRVJUKHJlc3VsdC5nZXQoKS0+c2Vj
b25kLnNlY29uZCA+IDApOworICAgIC0tKHJlc3VsdC5nZXQoKS0+c2Vjb25kLnNlY29uZCk7Cisg
ICAgaWYgKCEocmVzdWx0LmdldCgpLT5zZWNvbmQuc2Vjb25kKSkgeworICAgICAgICBIQl9GcmVl
RmFjZShyZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdCk7CiAgICAgICAgIGdIYXJmYnV6ekZhY2VD
YWNoZS0+cmVtb3ZlKHVuaXF1ZUlEKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFj
ZS5jcHAKaW5kZXggNjA0NzU5YjhjYmRlZDNjOGI4NDFkYzY2ODc3ZTNkZWEzNDYxZjc2OC4uN2Rk
MDQ4YjNiNDNmZjU5Mzg4ZWFmNGU3MjEwZWUyY2NiZDU1NDIyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZC
dXp6TkdGYWNlLmNwcApAQCAtNjAsOCArNjAsOCBAQCBIYXJmQnV6ek5HRmFjZTo6SGFyZkJ1enpO
R0ZhY2UoRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhLCB1aW50NjRfdCB1bmlxdWVJRAog
ICAgICAgICBBU1NFUlQobV9mYWNlKTsKICAgICAgICAgaGFyZmJ1enpGYWNlQ2FjaGUoKS0+c2V0
KG1fdW5pcXVlSUQsIEZhY2VDYWNoZUVudHJ5KG1fZmFjZSwgMSkpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgICsrKHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKTsKLSAgICAgICAgbV9mYWNlID0g
cmVzdWx0LmdldCgpLT52YWx1ZS5maXJzdDsKKyAgICAgICAgKysocmVzdWx0LmdldCgpLT5zZWNv
bmQuc2Vjb25kKTsKKyAgICAgICAgbV9mYWNlID0gcmVzdWx0LmdldCgpLT5zZWNvbmQuZmlyc3Q7
CiAgICAgfQogfQogCkBAIC02OSwxMCArNjksMTAgQEAgSGFyZkJ1enpOR0ZhY2U6On5IYXJmQnV6
ek5HRmFjZSgpCiB7CiAgICAgSGFyZkJ1enpOR0ZhY2VDYWNoZTo6aXRlcmF0b3IgcmVzdWx0ID0g
aGFyZmJ1enpGYWNlQ2FjaGUoKS0+ZmluZChtX3VuaXF1ZUlEKTsKICAgICBBU1NFUlQocmVzdWx0
ICE9IGhhcmZidXp6RmFjZUNhY2hlKCktPmVuZCgpKTsKLSAgICBBU1NFUlQocmVzdWx0LmdldCgp
LT52YWx1ZS5zZWNvbmQgPiAwKTsKLSAgICAtLShyZXN1bHQuZ2V0KCktPnZhbHVlLnNlY29uZCk7
Ci0gICAgaWYgKCEocmVzdWx0LmdldCgpLT52YWx1ZS5zZWNvbmQpKSB7Ci0gICAgICAgIGhiX2Zh
Y2VfZGVzdHJveShyZXN1bHQuZ2V0KCktPnZhbHVlLmZpcnN0KTsKKyAgICBBU1NFUlQocmVzdWx0
LmdldCgpLT5zZWNvbmQuc2Vjb25kID4gMCk7CisgICAgLS0ocmVzdWx0LmdldCgpLT5zZWNvbmQu
c2Vjb25kKTsKKyAgICBpZiAoIShyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQpKSB7CisgICAg
ICAgIGhiX2ZhY2VfZGVzdHJveShyZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdCk7CiAgICAgICAg
IGhhcmZidXp6RmFjZUNhY2hlKCktPnJlbW92ZShtX3VuaXF1ZUlEKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2lt
cGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggMGI3MTMzNDdmNjA0NjM1NTQ5ZTUwZDU2MzY1
MjE4YjIzNDQyNmFjZi4uMDUxOTM3NDJjNTg1MmRiZTljOWNlZDY0YjlhMDdhYWQyYzFlYTQ3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZv
bnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBDRkRpY3Rp
b25hcnlSZWYgU2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmlidXRlcyhUeXBlc2V0dGlu
Z0ZlYXR1cmVzIHR5cGVzZQogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0aW5nRmVhdHVy
ZXMgKyAxOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
ID46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX0NGU3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5LCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0
YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250
RGF0YU1hYy5tbQppbmRleCA5N2ViYmY5OWMzZDJlNWU3MWNhNjBkYWNiM2RlODI1YTQxYjY3MTdk
Li42NmZlOTBhNTkzOTBlNGNkMjJmNjE4MzhmOGM2YTlkYmZiNTJhYzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
TWFjLm1tCkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVy
Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMKIAogICAg
IFdURjo6SGFzaE1hcDxTdHJpbmcsIGJvb2w+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9jb21i
aW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQtPmFkZChTdHJpbmcoY2hhcmFjdGVycywgbGVu
Z3RoKSwgZmFsc2UpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICByZXR1cm4gYWRkUmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRv
cHRDRiwgQ1RGb250Q29weUdyYXBoaWNzRm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkp
OwogCkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29t
YmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gdHJ1ZTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHRydWU7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggOGJlOTM4NjI1YjQwZTUzY2VkNjZkYjU2ZmEwZjk5YTRhMDA0ZTZmOS4uYTNjMDU2NTkxMjBm
YWQ4MmNkMTJiNGE1NWE4ZjQ3NGIyM2MyYmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTENvbW1vbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uczNET3Bl
bkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm0zRE9iamVj
dAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclNvdXJj
ZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNo
YWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+c2Vjb25kOwogCiAgICAgU3RyaW5nIHRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiAgICAgU3RyaW5nIHNoYWRlckluZm9Mb2c7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBkZjljY2I1NzQz
MjI2MGJmYTViYjM1Nzk2MjNhOGYyMmIyMGEwYmQ1Li43NzJjYTgxYTBhMTU4M2YzYTI4ZGQ4ZDY5
MWViMDM5Y2MwYzUxODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpj
b21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogCiAgICAgaWYgKGxlbmd0aCkg
ewogICAgICAgICBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIEdyYXBoaWNzQ29udGV4dDNEOjpT
aGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZp
bmQoc2hhZGVyKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclNvdXJjZUVudHJ5
JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTaGFk
ZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnNlY29uZDsKIAogICAgICAgICBHTHNpemVp
IHNpemUgPSAwOwogICAgICAgICBPd25BcnJheVB0cjxHTGNoYXI+IGluZm8gPSBhZG9wdEFycmF5
UHRyKG5ldyBHTGNoYXJbbGVuZ3RoXSk7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVu
dW0gcG5hbWUsIEdDMwogICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihmYWxz
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKnZhbHVlID0gc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQtPnZhbHVlLmlzVmFsaWQpOworICAgICAgICAqdmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC0+c2Vjb25kLmlzVmFsaWQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIElORk9fTE9HX0xFTkdUSDoKICAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRl
clNvdXJjZU1hcC5lbmQoKSkgewpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAg
IGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsgCiAKLSAgICBTaGFkZXJTb3VyY2VFbnRyeSBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7
CisgICAgU2hhZGVyU291cmNlRW50cnkgZW50cnkgPSByZXN1bHQtPnNlY29uZDsKICAgICBpZiAo
IWVudHJ5LmlzVmFsaWQpCiAgICAgICAgIHJldHVybiBlbnRyeS5sb2c7CiAKQEAgLTExOTgsNyAr
MTE5OCw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKLSAgICByZXR1cm4gcmVzdWx0LT52
YWx1ZS5zb3VyY2U7CisgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kLnNvdXJjZTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvRUdMRGlz
cGxheU9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcv
RUdMRGlzcGxheU9wZW5WRy5jcHAKaW5kZXggMWE2OGFlZmY4Y2M4YzlmNTQ3NmI0ZjA1MzU2NjIw
ZmUxOTE0MWM0Yy4uZDY4MWQ3NTgxZmIzZmJmMjlkODhlMTI2ZTUzODM4NzgyMzBiNTIyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0VHTERpc3Bs
YXlPcGVuVkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9FR0xEaXNwbGF5T3BlblZHLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIEVHTERpc3BsYXlPcGVu
Vkc6On5FR0xEaXNwbGF5T3BlblZHKCkKIAogICAgIEhhc2hNYXA8RUdMU3VyZmFjZSwgRUdMaW50
Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdXJmYWNlQ29uZmlnSWRzLmVuZCgpOwogICAgIGZv
ciAoSGFzaE1hcDxFR0xTdXJmYWNlLCBFR0xpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3Vy
ZmFjZUNvbmZpZ0lkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRlc3Ryb3lT
dXJmYWNlKCgqaXQpLmtleSk7CisgICAgICAgIGRlc3Ryb3lTdXJmYWNlKCgqaXQpLmZpcnN0KTsK
IAogICAgIGVnbFRlcm1pbmF0ZShtX2Rpc3BsYXkpOwogICAgIEFTU0VSVF9FR0xfTk9fRVJST1Io
KTsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEVHTERpc3BsYXlPcGVuVkc6OmRlc3Ryb3lTdXJm
YWNlKGNvbnN0IEVHTFN1cmZhY2UmIHN1cmZhY2UpCiAKICAgICAgICAgLy8gLi4uYnV0IG9ubHkg
aWYgdGhlcmUncyBubyBvdGhlciBzdXJmYWNlcyBhc3NvY2lhdGVkIHRvIHRoYXQgY29udGV4dC4K
ICAgICAgICAgZm9yIChIYXNoTWFwPEVHTFN1cmZhY2UsIEVHTGludD46Oml0ZXJhdG9yIGl0ID0g
bV9zdXJmYWNlQ29uZmlnSWRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaWYgKCgqaXQpLnZhbHVlID09IHN1cmZhY2VDb25maWdJZCkgeworICAgICAgICAgICAgaWYg
KCgqaXQpLnNlY29uZCA9PSBzdXJmYWNlQ29uZmlnSWQpIHsKICAgICAgICAgICAgICAgICBpc0Nv
bnRleHRSZWZlcmVuY2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEVHTERpc3BsYXlPcGVuVkc6OmRlc3Ryb3lT
dXJmYWNlKGNvbnN0IEVHTFN1cmZhY2UmIHN1cmZhY2UpCiAKICAgICBIYXNoTWFwPEVHTE5hdGl2
ZVdpbmRvd1R5cGUsIEVHTFN1cmZhY2U+OjppdGVyYXRvciBlbmQgPSBtX3dpbmRvd1N1cmZhY2Vz
LmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxFR0xOYXRpdmVXaW5kb3dUeXBlLCBFR0xTdXJmYWNl
Pjo6aXRlcmF0b3IgaXQgPSBtX3dpbmRvd1N1cmZhY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBpZiAoKCppdCkudmFsdWUgPT0gc3VyZmFjZSkgeworICAgICAgICBpZiAo
KCppdCkuc2Vjb25kID09IHN1cmZhY2UpIHsKICAgICAgICAgICAgIG1fd2luZG93U3VyZmFjZXMu
cmVtb3ZlKGl0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MDksNyArNDA5
LDcgQEAgRUdMQ29udGV4dCBFR0xEaXNwbGF5T3BlblZHOjpjb250ZXh0Rm9yU3VyZmFjZShjb25z
dCBFR0xTdXJmYWNlJiBzdXJmYWNlKQogICAgIEhhc2hNYXA8RUdMaW50LCBFR0xDb250ZXh0Pjo6
aXRlcmF0b3IgZW5kID0gbV9jb250ZXh0cy5lbmQoKTsKIAogICAgIGZvciAoSGFzaE1hcDxFR0xp
bnQsIEVHTENvbnRleHQ+OjppdGVyYXRvciBpdCA9IG1fY29udGV4dHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KG1fZGlzcGxheSwgc3VyZmFjZSwg
c3VyZmFjZSwgKCppdCkudmFsdWUpOworICAgICAgICBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXks
IHN1cmZhY2UsIHN1cmZhY2UsICgqaXQpLnNlY29uZCk7CiAgICAgICAgIGlmIChlZ2xHZXRFcnJv
cigpID09IEVHTF9TVUNDRVNTKSB7CiAgICAgICAgICAgICAvLyBSZXN0b3JlIHByZXZpb3VzIHN1
cmZhY2UvY29udGV4dC4KICAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAhPSBFR0xfTk9f
Q09OVEVYVCkgewpAQCAtNDE3LDggKzQxNyw4IEBAIEVHTENvbnRleHQgRUdMRGlzcGxheU9wZW5W
Rzo6Y29udGV4dEZvclN1cmZhY2UoY29uc3QgRUdMU3VyZmFjZSYgc3VyZmFjZSkKICAgICAgICAg
ICAgICAgICBBU1NFUlRfRUdMX05PX0VSUk9SKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBDb29sLCBzdXJmYWNlIGlzIGNvbXBhdGlibGUgdG8gb25lIG9mIG91ciBleGlzdGluZyBj
b250ZXh0cy4KLSAgICAgICAgICAgIG1fY29tcGF0aWJsZUNvbmZpZ0lkcy5zZXQoc3VyZmFjZUNv
bmZpZ0lkLCAoKml0KS5rZXkpOwotICAgICAgICAgICAgcmV0dXJuICgqaXQpLnZhbHVlOworICAg
ICAgICAgICAgbV9jb21wYXRpYmxlQ29uZmlnSWRzLnNldChzdXJmYWNlQ29uZmlnSWQsICgqaXQp
LmZpcnN0KTsKKyAgICAgICAgICAgIHJldHVybiAoKml0KS5zZWNvbmQ7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBzdXJmYWNlL2NvbnRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IDAxNjIxNGE4YTdkMTk0ZTQ2N2VjMTgxOGNjYzEyN2QxNjIyZWU0ODYu
LmEyMmU3MjBlMTY1MGEwZjNiY2Y4MWU0ZjNjZGZmNzgxNzBkOGFhZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IFRleHR1cmVNYXBwZXJHTERhdGEg
ewogICAgICAgICAgICAgR0xDb250ZXh0IGN1cnJlbnRHTENvbmV4dCA9IGdldEN1cnJlbnRHTENv
bnRleHQoKTsKICAgICAgICAgICAgIEdMQ29udGV4dERhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gZ2xD
b250ZXh0RGF0YU1hcCgpLmZpbmQoY3VycmVudEdMQ29uZXh0KTsKICAgICAgICAgICAgIGlmIChp
dCAhPSBnbENvbnRleHREYXRhTWFwKCkuZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHTERhdGEoZ2V0Q3VycmVudEdMQ29udGV4dCgp
KSk7CiAgICAgICAgIH0KQEAgLTEyNCw3ICsxMjQsNyBAQCBzdHJ1Y3QgVGV4dHVyZU1hcHBlckdM
RGF0YSB7CiAgICAgICAgICAgICBHTENvbnRleHREYXRhTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBnbENvbnRleHREYXRhTWFwKCkuZW5kKCk7CiAgICAgICAgICAgICBHTENvbnRleHREYXRhTWFw
OjppdGVyYXRvciBpdDsKICAgICAgICAgICAgIGZvciAoaXQgPSBnbENvbnRleHREYXRhTWFwKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT52YWx1
ZSA9PSB0aGlzKQorICAgICAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kID09IHRoaXMpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAppbmRleCA0NjQ5ZjRiNjJkOGUxOWFhM2M1M2JhYWM5
Zjc1MjJjZjEzOWYzMjM1Li4wZmJkYmU5NWNhZjE2NDcwZGQwNjMyZjA0YzE0NGI4MjBiNmU4YmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKQEAgLTIwOCw3
ICsyMDgsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyUHJvZwogCiAgICAgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1NYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bU1hcC5maW5kKHNoYWRlclR5cGUpOwogICAgIGlmIChpdCAhPSBtX3RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIHN3aXRjaCAoc2hhZGVyVHlwZSkgewogICAgIGNhc2Ug
U2ltcGxlOgpAQCAtNzY1LDcgKzc2NSw3IEBAIFBhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9n
cmFtPiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyRm9yRmlsdGVyCiAKICAg
ICAgICAgbV9maWx0ZXJNYXAuYWRkKGtleSwgcHJvZ3JhbSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IHByb2dyYW0gPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHByb2dyYW0gPSBpdGVyYXRvci0+
c2Vjb25kOwogCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCmlu
ZGV4IDE5ZjUyNDU1ZDExYjM1NGNjNGQ0M2U2ODM5OWNlNzlhYzk5YmMwYjIuLjE5NzkwYWQ0OWIz
MzAzZGQ3YjYyYzdlN2EwYTgyMzY3N2I0Y2ZmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCkBA
IC0yODcsOSArMjg3LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IGNy
ZWF0ZUZpeGVkU2l6ZUZvbnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYKICAgICBGaXhlZFNpemVG
b250RGF0YUtleSBrZXkoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7CiAgICAgRml4ZWRTaXplRm9u
dENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZ19maXhlZFNpemVGb250Q2FjaGUuYWRkKGtleSwg
UmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPigpKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBGaXhlZFNpemVGb250RGF0YTo6Y3Jl
YXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7
CiAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIHN0YXRpYyBMT05HIHRvR0RJRm9udFdlaWdodChGb250
V2VpZ2h0IGZvbnRXZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRGF0YU9iamVjdEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9i
amVjdEd0ay5jcHAKaW5kZXggYWRmYzY2ZTAxNWU1MDIyNjc4OGMyMTQ3NjhhMTViMjkxMzY4NDNi
OC4uMWE4NGY4YmQzMTk1MmIyOGUyNjgyNzFkZDJhNWY1N2Y0NGQ4MjdkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtMTcxLDcgKzE3MSw3
IEBAIERhdGFPYmplY3RHdGsqIERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChHdGtDbGlwYm9h
cmQqIGNsaXBib2FyZCkKICAgICB9CiAKICAgICBIYXNoTWFwPEd0a0NsaXBib2FyZCosIFJlZlB0
cjxEYXRhT2JqZWN0R3RrPiA+OjppdGVyYXRvciBpdCA9IG9iamVjdE1hcC5maW5kKGNsaXBib2Fy
ZCk7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5n
ZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a0RyYWdBbmREcm9wSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtE
cmFnQW5kRHJvcEhlbHBlci5jcHAKaW5kZXggZmMyZjU2ZTYxNjZlYjFhYWNkYmFkYThmNTJmZWYz
YzZkZDg4NjRjYS4uNzYzZDEyMGQwOTQxNjIyNzI2NjBjNjA2MzJhMTkyOTg2ZjU0MmVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxw
ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRs
ZUdldERyYWdEYXRhKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3RpCiAgICAgRHJh
Z2dpbmdEYXRhT2JqZWN0c01hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2RyYWdnaW5nRGF0YU9i
amVjdHMuZmluZChjb250ZXh0KTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9kcmFnZ2luZ0RhdGFP
YmplY3RzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVm
YXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwg
aW5mbywgaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZh
dWx0UGFzdGVib2FyZEhlbHBlcigpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBp
bmZvLCBpdGVyYXRvci0+c2Vjb25kLmdldCgpKTsKIH0KIAogc3RydWN0IEhhbmRsZURyYWdMYXRl
ckRhdGEgewpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgR3RrRHJhZ0FuZERyb3BIZWxwZXI6Omhh
bmRsZURyYWdMZWF2ZShHZGtEcmFnQ29udGV4dCogZ2RrQ29udGV4dCwgRHJhZ0V4aXRlCiAgICAg
Ly8gdGhlIGRyYWctZHJvcCBzaWduYWwuIFdlIHdhbnQgdGhlIGFjdGlvbnMgZm9yIGRyYWctbGVh
dmUgdG8gaGFwcGVuIGFmdGVyCiAgICAgLy8gdGhvc2UgZm9yIGRyYWctZHJvcCwgc28gc2NoZWR1
bGUgdGhlbSB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgaGVyZS4KICAgICBIYW5kbGVEcmFnTGF0
ZXJEYXRhKiBkYXRhID0gbmV3IEhhbmRsZURyYWdMYXRlckRhdGE7Ci0gICAgZGF0YS0+Y29udGV4
dCA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBkYXRhLT5jb250ZXh0ID0gaXRlcmF0b3ItPnNlY29u
ZDsKICAgICBkYXRhLT5jb250ZXh0LT5leGl0ZWRDYWxsYmFjayA9IGV4aXRlZENhbGxiYWNrOwog
ICAgIGRhdGEtPmdsdWUgPSB0aGlzOwogICAgIGdfdGltZW91dF9hZGQoMCwgcmVpbnRlcnByZXRf
Y2FzdDxHU291cmNlRnVuYz4oaGFuZGxlRHJhZ0xlYXZlTGF0ZXJDYWxsYmFjayksIGRhdGEpOwpA
QCAtMTQwLDcgKzE0MCw3IEBAIFBhc3NPd25QdHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9wSGVs
cGVyOjpoYW5kbGVEcmFnTW90aW9uKEdka0RyYWdDb250ZXh0KiBjb250CiAgICAgICAgIG1fZHJv
cHBpbmdDb250ZXh0cy5zZXQoY29udGV4dCwgZHJvcHBpbmdDb250ZXh0KTsKICAgICAgICAgcXVl
cnlOZXdEcm9wQ29udGV4dERhdGEoZHJvcHBpbmdDb250ZXh0LCBtX3dpZGdldCwgdGltZSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBpdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBkcm9w
cGluZ0NvbnRleHQtPmxhc3RNb3Rpb25Qb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIH0KIApAQCAt
MTYyLDcgKzE2Miw3IEBAIFBhc3NPd25QdHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9wSGVscGVy
OjpoYW5kbGVEcmFnRGF0YVJlY2VpdmVkKEdka0RyYWdDb250ZXh0CiAgICAgaWYgKGl0ZXJhdG9y
ID09IG1fZHJvcHBpbmdDb250ZXh0cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKHN0
YXRpY19jYXN0PERyYWdEYXRhKj4oMCkpOwogCi0gICAgRHJvcHBpbmdDb250ZXh0KiBkcm9wcGlu
Z0NvbnRleHQgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgRHJvcHBpbmdDb250ZXh0KiBkcm9wcGlu
Z0NvbnRleHQgPSBpdGVyYXRvci0+c2Vjb25kOwogICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGlu
Z0RhdGFSZXF1ZXN0cy0tOwogICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJk
SGVscGVyKCktPmZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKHNlbGVjdGlvbkRhdGEsIGluZm8s
IGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKSk7CiAKQEAgLTE4NSw3ICsxODUsNyBA
QCBQYXNzT3duUHRyPERyYWdEYXRhPiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0Ry
b3AoR2RrRHJhZ0NvbnRleHQqIGNvbnRleAogICAgIGlmIChpdGVyYXRvciA9PSBtX2Ryb3BwaW5n
Q29udGV4dHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBhZG9wdFB0cihzdGF0aWNfY2FzdDxEcmFn
RGF0YSo+KDApKTsKIAotICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0gaXRl
cmF0b3ItPnZhbHVlOworICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0gaXRl
cmF0b3ItPnNlY29uZDsKICAgICBkcm9wcGluZ0NvbnRleHQtPmRyb3BIYXBwZW5lZCA9IHRydWU7
CiAKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERyYWdEYXRhKGRyb3BwaW5nQ29udGV4dC0+ZGF0
YU9iamVjdC5nZXQoKSwgcG9zaXRpb24sIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCAwYTgzODI3YzdmZWJjYmU0MDU0OGZhZDU2MmI1
NDExNzFlYzE2OWY2Li43NzQ5MzkxNTE3MTNkZjAxMTM0ZDZjZWE0ZWQ5ZDcwNGI0ZGNmYzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBndGtTdHlsZUNoYW5nZWRDYWxsYmFjayhHT2Jq
ZWN0KiwgR1BhcmFtU3BlYyopCiB7CiAgICAgU3R5bGVDb250ZXh0TWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBzdHlsZUNvbnRleHRNYXAoKS5lbmQoKTsKICAgICBmb3IgKFN0eWxlQ29udGV4dE1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHN0eWxlQ29udGV4dE1hcCgpLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2ludmFsaWRhdGUoaXRl
ci0+dmFsdWUuZ2V0KCkpOworICAgICAgICBndGtfc3R5bGVfY29udGV4dF9pbnZhbGlkYXRlKGl0
ZXItPnNlY29uZC5nZXQoKSk7CiAKICAgICBQYWdlOjpzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxj
Rm9yQWxsUGFnZXMoKTsKIH0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIEd0a1N0eWxlQ29udGV4
dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiB7CiAgICAgU3R5bGVDb250ZXh0
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3R5bGVDb250ZXh0TWFwKCkuYWRkKHdpZGdldFR5cGUs
IDApOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQuZ2V0KCk7CiAKICAgICBHdGtXaWRnZXRQYXRoKiBwYXRoID0gZ3RrX3dpZGdldF9wYXRo
X25ldygpOwogICAgIGd0a193aWRnZXRfcGF0aF9hcHBlbmRfdHlwZShwYXRoLCB3aWRnZXRUeXBl
KTsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNv
bnRleHQoR1R5cGUgd2lkZ2V0VHlwZSkKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfcGF0aChj
b250ZXh0LmdldCgpLCBwYXRoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfZnJlZShwYXRoKTsKIAot
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjb250ZXh0OworICAgIHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kID0gY29udGV4dDsKICAgICByZXR1cm4gY29udGV4dC5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4
IGZkOWI3MjRhNGQ5YzRiNDcxMTRlZGY3ZGJiYzg4ZmM1ODUyZjE2ZDQuLjk2YWExMmEyNjkxNDdm
NzY4ZWUzZjY0NTFkZmViNTI3M2Y5NGVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIFNj
cm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiAgICAgICAgIHJldHVybjsKICAgICBT
Y3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBlbmQgPSBzY3JvbGxiYXJNYXAoKS0+ZW5kKCk7
CiAgICAgZm9yIChTY3JvbGxiYXJQYWludGVyTWFwOjppdGVyYXRvciBpdCA9IHNjcm9sbGJhck1h
cCgpLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaXQtPmtleS0+c3R5bGVD
aGFuZ2VkKCk7Ci0gICAgICAgIGl0LT5rZXktPmludmFsaWRhdGUoKTsKKyAgICAgICAgaXQtPmZp
cnN0LT5zdHlsZUNoYW5nZWQoKTsKKyAgICAgICAgaXQtPmZpcnN0LT5pbnZhbGlkYXRlKCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuY3BwCmluZGV4IDhiNWFjNDc4YjIxMzUwNmNkOWNlYWNhOWJhNTg1MWJj
ZDI5M2E1YzkuLmY2MjRkNGZjYjI5MmNjNDBjNWI2OWVlZGYzZTVjODc1MTUyZjAxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0IEtVUkwmIHVybCkKICAgICBpZiAoaXRl
ciA9PSBwYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBBU1NFUlQob3JpZ2luc1dpdGhDcmVkZW50aWFscygpLmNvbnRhaW5z
KG9yaWdpblN0cmluZ0Zyb21VUkwodXJsKSkpOwotICAgIHByb3RlY3Rpb25TcGFjZVRvQ3JlZGVu
dGlhbE1hcCgpLnNldChpdGVyLT52YWx1ZSwgY3JlZGVudGlhbCk7CisgICAgcHJvdGVjdGlvblNw
YWNlVG9DcmVkZW50aWFsTWFwKCkuc2V0KGl0ZXItPnNlY29uZCwgY3JlZGVudGlhbCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBDcmVkZW50aWFsIENyZWRlbnRp
YWxTdG9yYWdlOjpnZXQoY29uc3QgS1VSTCYgdXJsKQogICAgIFBhdGhUb0RlZmF1bHRQcm90ZWN0
aW9uU3BhY2VNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZv
clVSTCh1cmwpOwogICAgIGlmIChpdGVyID09IHBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VN
YXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIENyZWRlbnRpYWwoKTsKLSAgICByZXR1cm4gcHJv
dGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkuZ2V0KGl0ZXItPnZhbHVlKTsKKyAgICByZXR1
cm4gcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkuZ2V0KGl0ZXItPnNlY29uZCk7CiB9
CiAKIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldFByaXZhdGVNb2RlKGJvb2wgbW9kZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmlu
ZGV4IGRlZmUxYWU4NGJmMGFkZjA3Nzk0OTU1YjExYTVkYzczZWEwMjNlMjYuLjUwMDkxZTE5ZDNh
ZjU2ZmY0YThkZjE3NWJmODk3ODcwMDc2MTQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQYXNz
T3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IEhUVFBIZWFkZXJNYXA6OmNvcHlE
YXRhKCkgY29uc3QKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZF9pdCA9
IGVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBiZWdp
bigpOyBpdCAhPSBlbmRfaXQ7ICsraXQpIHsKLSAgICAgICAgZGF0YS0+YXBwZW5kKG1ha2VfcGFp
cihpdC0+a2V5LnN0cmluZygpLmlzb2xhdGVkQ29weSgpLCBpdC0+dmFsdWUuaXNvbGF0ZWRDb3B5
KCkpKTsKKyAgICAgICAgZGF0YS0+YXBwZW5kKG1ha2VfcGFpcihpdC0+Zmlyc3Quc3RyaW5nKCku
aXNvbGF0ZWRDb3B5KCksIGl0LT5zZWNvbmQuaXNvbGF0ZWRDb3B5KCkpKTsKICAgICB9CiAgICAg
cmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIFN0cmluZyBIVFRQ
SGVhZGVyTWFwOjpnZXQoY29uc3QgY2hhciogbmFtZSkgY29uc3QKICAgICBjb25zdF9pdGVyYXRv
ciBpID0gZmluZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvcj4obmFt
ZSk7CiAgICAgaWYgKGkgPT0gZW5kKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gaS0+dmFsdWU7CisgICAgcmV0dXJuIGktPnNlY29uZDsKIH0KICAgICAKIGJvb2wgSFRU
UEhlYWRlck1hcDo6Y29udGFpbnMoY29uc3QgY2hhciogbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGY0ZTNlYmY2NzRk
ZTZiZDFkMjRhOTU5MGE0ODE4YmViNmZkOGRlNjMuLjVkNmI4NThmNDZlNDM4M2ZjYjJmZWE2Mjg1
OGFmNzUzMmQ0M2E1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPE1JTUVIZWFkZXI+IE1J
TUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKiBidWZmZXIpCiAg
ICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1
ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSIpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJh
dG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2UgQ29u
dGVudFR5cGVQYXJzZXIgbW9yZSBmbGV4aWJsZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHN5bnRoZXNp
emUgdGhlICJDb250ZW50LVR5cGU6Ii4KLSAgICAgICAgQ29udGVudFR5cGVQYXJzZXIgY29udGVu
dFR5cGVQYXJzZXIobWFrZVN0cmluZygiQ29udGVudC1UeXBlOiIsIG1pbWVQYXJhbWV0ZXJzSXRl
cmF0b3ItPnZhbHVlKSk7CisgICAgICAgIENvbnRlbnRUeXBlUGFyc2VyIGNvbnRlbnRUeXBlUGFy
c2VyKG1ha2VTdHJpbmcoIkNvbnRlbnQtVHlwZToiLCBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT5z
ZWNvbmQpKTsKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
UGFyc2VyLm1pbWVUeXBlKCk7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBhcnQo
KSkKICAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IGNvbnRlbnRUeXBlUGFyc2Vy
LmNoYXJzZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKQEAgLTEwNSwxMSArMTA1LDExIEBAIFBhc3NS
ZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIqIGJ1ZmZlcikKIAogICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1
ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciKTsKICAgICBpZiAobWltZVBh
cmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQotICAgICAgICBtaW1lSGVh
ZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNmZXJFbmNv
ZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIG1pbWVIZWFkZXIt
Pm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBtaW1lUGFyYW1ldGVyc0l0
ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7CiAgICAgaWYg
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKLSAgICAgICAg
bWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBtaW1lUGFyYW1l
dGVyc0l0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICByZXR1cm4gbWltZUhlYWRlci5yZWxlYXNlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwCmluZGV4IDZkMTJmOWQ4OWIwMjQ3NzQ2YTU3ZTFiYmNhZmIyYzIxN2Q1OTEwMzUuLjdk
ZGM0N2U0ZWE3OTlhNDZkZWU2ZjMyY2ZkMDc4ZWY3NTE1NGYxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IFJlc291cmNlSGFuZGxlOjpjcmVhdGUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgQnVpbHRpblJlc291cmNlSGFuZGxl
Q29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIHByb3RvY29sTWFwSXRlbSA9IGJ1aWx0aW5SZXNvdXJj
ZUhhbmRsZUNvbnN0cnVjdG9yTWFwKCkuZmluZChyZXF1ZXN0LnVybCgpLnByb3RvY29sKCkpOwog
CiAgICAgaWYgKHByb3RvY29sTWFwSXRlbSAhPSBidWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1
Y3Rvck1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcHJvdG9jb2xNYXBJdGVtLT52YWx1ZShy
ZXF1ZXN0LCBjbGllbnQpOworICAgICAgICByZXR1cm4gcHJvdG9jb2xNYXBJdGVtLT5zZWNvbmQo
cmVxdWVzdCwgY2xpZW50KTsKIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFuZGxl
KGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRp
bmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggZjZjMGUxM2U3
OWNmMTQ3OWY4ZmViYTY1N2MwYWZiZDI1NjY3ZGJmOS4uNjRlYmMxOGM4YTc0NTBkZjY0YTYyMGE2
NmQzZTM2ODMxN2UxYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHIKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKICAgICBI
VFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChu
YW1lLCB2YWx1ZSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSArPSAiLCIgKyB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKQogICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKQEAg
LTM4NCw3ICszODQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKQogewogICAgIEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlckZpZWxkcy5lbmQoKTsKICAgICBmb3Ig
KEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgYWRkSFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0
LT52YWx1ZSk7CisgICAgICAgIGFkZEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNv
bmQpOwogfQogCiBib29sIGVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0QmFzZSYgYSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVl
c3RCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9SZXNvdXJjZVJlcXVlc3RCbGFja0JlcnJ5LmNwcAppbmRleCAwYzgxMjczOGQ1YzU1ZDg3
ZDI1NzViM2Y3ODZiMDA0ODZiOTE4NTI0Li45ZjZmZmFiYTU1NmQyMzAzZjZmYTlkMWFiOTRiYzZl
YWM4ZGNhYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdEJsYWNrQmVycnku
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIFJlc291
cmNlUmVxdWVzdDo6dGFyZ2V0VHlwZUZyb21NaW1lVHlwZShjb25zdCBTdHJpbmcKICAgICBpZiAo
aXRlciA9PSBtYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdl
dElzVW5zcGVjaWZpZWQ7CiAKLSAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgcmV0dXJuIGl0
ZXItPnNlY29uZDsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmluaXRpYWxpemVQbGF0Zm9y
bVJlcXVlc3QoTmV0d29ya1JlcXVlc3QmIHBsYXRmb3JtUmVxdWVzdCwgYm9vbCBjb29raWVzRW5h
YmxlZCwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNSZWRpcmVjdCkgY29uc3QKQEAgLTE5OCw4ICsx
OTgsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChO
ZXR3b3JrUmVxdWVzdCYgcGxhdGZvcm1SZXF1ZXN0LAogICAgICAgICBib29sIGNvb2tpZUhlYWRl
ck1heUJlRGlydHkgPSBpc1JlZGlyZWN0IHx8IGNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgfHwgY2FjaGVQb2xpY3koKSA9PSBXZWJDb3JlOjpSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZDsKIAogICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7IGl0ICE9IGh0dHBIZWFkZXJG
aWVsZHMoKS5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGl0LT5rZXk7
Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBTdHJp
bmcga2V5ID0gaXQtPmZpcnN0OworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gaXQtPnNlY29u
ZDsKICAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShrZXksICJDb29raWUiKSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBXZSB3b24ndCB1c2UgdGhlIG9sZCBjb29raWVzIG9mIHJlc291cmNlUmVxdWVzdCBmb3Ig
bmV3IGxvY2F0aW9uIGJlY2F1c2UgdGhlc2UgY29va2llcyBtYXkgYmUgY2hhbmdlZCBieSByZWRp
cmVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDAxZThiOGFlNWMwZDFjNmE2YThmMDMz
MDg1ZTkwZjAxMGJjMWY3YzYuLmY2ZDFmMzgyMTI2MmYxOTUwNDE1NTlhMjU2YzAyYmQ2YmQ3ODI5
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBDRlVS
TFJlcXVlc3RSZWYgbWFrZUZpbmFsUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgc2hvCiAgICAgICAgIGlmICghc3NsUHJvcHMpCiAgICAgICAgICAgICBzc2xQcm9w
cy5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgd2tTZXRDbGllbnRDZXJ0
aWZpY2F0ZUluU1NMUHJvcGVydGllcyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVl
KS5nZXQoKSk7CisgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMo
c3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT5zZWNvbmQpLmdldCgpKTsKICNlbmRpZgogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCA4Y2ZmODdjYTBkNThlYTJlNTIzZjM3MzBk
NmI0YTc3MzBiMDZiZTRiLi41N2E2ZmIyYzhhNGMwOGY3OWZiZDRiOWJjNTViODVhOTM0MjY3YTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMTIwLDggKzEyMCw4IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBj
b25zdCBIVFRQSGVhCiAKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBy
ZXF1ZXN0SGVhZGVycy5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIENGU3RyaW5nUmVmIGtleSA9IGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAg
Q0ZTdHJpbmdSZWYgdmFsdWUgPSBpdC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAg
Q0ZTdHJpbmdSZWYga2V5ID0gaXQtPmZpcnN0LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIENG
U3RyaW5nUmVmIHZhbHVlID0gaXQtPnNlY29uZC5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBD
RlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXksIHZhbHVlKTsK
ICAgICAgICAgQ0ZSZWxlYXNlKGtleSk7CiAgICAgICAgIENGUmVsZWFzZSh2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDY1YmNjMTBhZDNkMjAwNWQ2ODlkNzNlOGRkNjc5
ODhiOWM1Y2I1ZDUuLmFmMDc1ZWY5ZTMyMTg4ZTc3MTQ5N2ViZjdjNzRkYzFhYTE1ZTIxN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC03MDMsOCArNzAzLDggQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGpvYikK
ICAgICAgICAgSFRUUEhlYWRlck1hcCBjdXN0b21IZWFkZXJzID0gam9iLT5maXJzdFJlcXVlc3Qo
KS5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGN1c3RvbUhlYWRlcnMuZW5kKCk7CiAgICAgICAgIGZvciAoSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXN0b21IZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICAgICAgU3RyaW5nIGtleSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBT
dHJpbmcgdmFsdWUgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gaXQtPmZp
cnN0OworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gaXQtPnNlY29uZDsKICAgICAgICAgICAg
IFN0cmluZyBoZWFkZXJTdHJpbmcoa2V5KTsKICAgICAgICAgICAgIGhlYWRlclN0cmluZy5hcHBl
bmQoIjogIik7CiAgICAgICAgICAgICBoZWFkZXJTdHJpbmcuYXBwZW5kKHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVz
dE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVx
dWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdjZTZmYjU1NmUwNmQy
Li45NmM0OTdkNTAzYjU0N2UzYjAxYTlhMjUyYTU4ZmMyZWVmM2Y5NDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgW25zUmVxdWVzdCBzZXRWYWx1ZTpuaWwgZm9ySFRU
UEhlYWRlckZpZWxkOltvbGRIZWFkZXJGaWVsZE5hbWVzIG9iamVjdEF0SW5kZXg6aSAtIDFdXTsK
ICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBodHRwSGVhZGVyRmllbGRz
KCkuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGh0
dHBIZWFkZXJGaWVsZHMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIFtuc1Jl
cXVlc3Qgc2V0VmFsdWU6aXQtPnZhbHVlIGZvckhUVFBIZWFkZXJGaWVsZDppdC0+a2V5XTsKKyAg
ICAgICAgW25zUmVxdWVzdCBzZXRWYWx1ZTppdC0+c2Vjb25kIGZvckhUVFBIZWFkZXJGaWVsZDpp
dC0+Zmlyc3RdOwogCiAgICAgLy8gVGhlIGJlbG93IGNoZWNrIGNhbiBiZSByZW1vdmVkIG9uY2Ug
d2UgcmVxdWlyZSBhIHZlcnNpb24gb2YgRm91bmRhdGlvbiB3aXRoIC1bTlNNdXRhYmxlVVJMUmVx
dWVzdCBzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk6XSBtZXRob2Qu
CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Oild
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJj
ZVJlcXVlc3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlUmVxdWVzdFF0LmNwcAppbmRleCBlODRlNjc3YTVmNzJjNzFlODljNjAwZmQ3NzcwMGJiNjgy
MjE0YzJjLi5kYmI3Yjc0ZGQ1OWM0ZjRkMGYyZWNlY2ZkYmUwODEzZDI4Yjc0YTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx
dWVzdFF0LmNwcApAQCAtNDksOCArNDksOCBAQCBRTmV0d29ya1JlcXVlc3QgUmVzb3VyY2VSZXF1
ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KE5ldHdvcmtpbmdDb250ZXh0ICpjb250ZXh0KSBjbwogICAg
IGNvbnN0IEhUVFBIZWFkZXJNYXAgJmhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCk7CiAgICAg
Zm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKSwg
ZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICAgICAgIGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBRQnl0ZUFycmF5IG5hbWUgPSBRU3RyaW5nKGl0LT5rZXkpLnRvTGF0aW4xKCk7Ci0gICAgICAg
IFFCeXRlQXJyYXkgdmFsdWUgPSBRU3RyaW5nKGl0LT52YWx1ZSkudG9MYXRpbjEoKTsKKyAgICAg
ICAgUUJ5dGVBcnJheSBuYW1lID0gUVN0cmluZyhpdC0+Zmlyc3QpLnRvTGF0aW4xKCk7CisgICAg
ICAgIFFCeXRlQXJyYXkgdmFsdWUgPSBRU3RyaW5nKGl0LT5zZWNvbmQpLnRvTGF0aW4xKCk7CiAg
ICAgICAgIC8vIFFOZXR3b3JrUmVxdWVzdDo6c2V0UmF3SGVhZGVyKCkgd291bGQgcmVtb3ZlIHRo
ZSBoZWFkZXIgaWYgdGhlIHZhbHVlIGlzIG51bGwKICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHNl
dCBhbiBlbXB0eSBoZWFkZXIgaW5zdGVhZCBvZiBudWxsIGhlYWRlci4KICAgICAgICAgaWYgKCF2
YWx1ZS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggZGMzYjJlMmM1ZmVlMDg0
MDY1OThhNGY5ZjkxZmE3NDZlZTY4NjBmOS4uMzBhMmRlNDU1ZTQyZGJjM2JhYWZhYjM0OWE1NGQw
OGM1YjljOWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBz
dGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVz
dWx0KiByZXMsIGdwb2ludGVyIGRhdAogCiAgICAgICAgIGlmIChoYXNVbmlnbm9yZWRUTFNFcnJv
cnMoaGFuZGxlLmdldCgpKSkgewogICAgICAgICAgICAgQ2VydGlmaWNhdGVzTWFwOjppdGVyYXRv
ciBpdGVyID0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZmluZChoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLmhvc3QoKS5sb3dlcigpKTsKLSAgICAgICAgICAgIGlmIChpdGVyID09IGNsaWVudENl
cnRpZmljYXRlcygpLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5jb250YWlucyhkLT5tX3Jlc3BvbnNl
LnNvdXBNZXNzYWdlQ2VydGlmaWNhdGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChpdGVyID09IGNs
aWVudENlcnRpZmljYXRlcygpLmVuZCgpIHx8ICFpdGVyLT5zZWNvbmQuY29udGFpbnMoZC0+bV9y
ZXNwb25zZS5zb3VwTWVzc2FnZUNlcnRpZmljYXRlKCkpKSB7CiAgICAgICAgICAgICAgICAgR093
blB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKGQt
Pm1fc291cFJlcXVlc3QuZ2V0KCkpLCBGQUxTRSkpOwogICAgICAgICAgICAgICAgIGNsaWVudC0+
ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09V
UF9IVFRQX0VSUk9SKSwgU09VUF9TVEFUVVNfU1NMX0ZBSUxFRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5nZXQoKSwgdW5h
Y2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKSwKQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzZXRIb3N0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IGhvc3QpCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlKGNvbnN0
IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBjbGll
bnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2VydGlmaWNhdGVTZXQo
KSkuaXRlcmF0b3ItPnZhbHVlLmFkZChjZXJ0aWZpY2F0ZSk7CisgICAgY2xpZW50Q2VydGlmaWNh
dGVzKCkuYWRkKGhvc3QubG93ZXIoKSwgSG9zdFRMU0NlcnRpZmljYXRlU2V0KCkpLml0ZXJhdG9y
LT5zZWNvbmQuYWRkKGNlcnRpZmljYXRlKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0
SWdub3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCmluZGV4IDU3YWI0ZDY0N2IzYmZmYzI1YmE5MjM3NzhjNzFkNGY0YmVlMTVjYjkuLmQ3MTI3
YjRiNWI4ZTQ1OWE0Y2FlYzU1YTU1MjdiYmNmM2M4Mzc3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBN
ZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICBpZiAoIWhlYWRlcnMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGhlYWRlcnMuZW5kKCk7CiAgICAgICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHNv
dXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwSGVhZGVycywgaXQtPmtleS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzb3Vw
X21lc3NhZ2VfaGVhZGVyc19hcHBlbmQoc291cEhlYWRlcnMsIGl0LT5maXJzdC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpdC0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIFN0
cmluZyBmaXJzdFBhcnR5U3RyaW5nID0gZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKTsK
QEAgLTY2LDcgKzY2LDcgQEAgU291cE1lc3NhZ2UqIFJlc291cmNlUmVxdWVzdDo6dG9Tb3VwTWVz
c2FnZSgpIGNvbnN0CiAgICAgaWYgKCFoZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBIVFRQ
SGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJzLmVuZCgpOwogICAgICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQo
c291cEhlYWRlcnMsIGl0LT5rZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXQtPnZhbHVlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHNv
dXBIZWFkZXJzLCBpdC0+Zmlyc3Quc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXQtPnNlY29uZC51
dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICBTdHJpbmcgZmlyc3RQYXJ0eVN0cmluZyA9IGZp
cnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApp
bmRleCA3MzlkNDRiMjg1ZDNkOWQyOTFlOGQ1YjI3YWFiZTdlNjlkZTY1YTFmLi5kZGFhODkzYjYz
YTlmM2YxMDM1M2YwZGVkNWVmNjNiYTRlMGZhY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU291cE1lc3NhZ2UqIFJlc291cmNlUmVzcG9uc2U6OnRvU291
cE1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghaGVhZGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAg
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICAg
ICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBw
ZW5kKHNvdXBIZWFkZXJzLCBpdC0+a2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0LT52YWx1
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVu
ZChzb3VwSGVhZGVycywgaXQtPmZpcnN0LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0LT5zZWNv
bmQudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgc291cF9tZXNzYWdlX3NldF9mbGFncyhz
b3VwTWVzc2FnZSwgbV9zb3VwRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCmluZGV4IGYyNTA1Mjc3
NWIwZGVkZmUyMWM3NTVkM2Y4Mzk5ODUzZTdhMGYzOTcuLjAyMTJkMGNkYTk4YzlmMTM3OTI4ZTYx
MmZkZjk1MDM2NWEwMWQwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAKQEAgLTMyMywxNSArMzIzLDE1
IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
KQogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMgPSBmaXJzdFJlcXVl
c3QoKS5odHRwSGVhZGVyRmllbGRzKCk7CiAKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gaHR0cEhlYWRlckZpZWxkcy5iZWdpbigpOyBpdCAhPSBodHRwSGVhZGVy
RmllbGRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+
a2V5LCAiQWNjZXB0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoaXQtPmtleSwgIlJlZmVyZXIiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShpdC0+a2V5LCAiVXNlci1BZ2VudCIpKQorICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoaXQtPmZpcnN0LCAiQWNjZXB0IikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoaXQtPmZpcnN0LCAiUmVmZXJlciIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwg
IlVzZXItQWdlbnQiKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICghaHR0
cEhlYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKCdcbicp
OwogCi0gICAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChpdC0+a2V5LmNoYXJhY3RlcnMoKSwgaXQt
PmtleS5sZW5ndGgoKSk7CisgICAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChpdC0+Zmlyc3QuY2hh
cmFjdGVycygpLCBpdC0+Zmlyc3QubGVuZ3RoKCkpOwogICAgICAgICBodHRwSGVhZGVycy5hcHBl
bmQoJzonKTsKLSAgICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGl0LT52YWx1ZS5jaGFyYWN0ZXJz
KCksIGl0LT52YWx1ZS5sZW5ndGgoKSk7CisgICAgICAgIGh0dHBIZWFkZXJzLmFwcGVuZChpdC0+
c2Vjb25kLmNoYXJhY3RlcnMoKSwgaXQtPnNlY29uZC5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAg
SU5URVJORVRfQlVGRkVSU1cgaW50ZXJuZXRCdWZmZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUnVuTG9vcFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1J1bkxvb3BRdC5jcHAKaW5kZXggNTAxYmQ1YzEyM2IwZjAzY2U5YTBjZjkwZTE3MjY5MWY1
MDZkOWExYi4uMmE4N2UyZmM4ZjY2Nzc3NjlmNzMxNDNlNTcxZTA5YzVhNTRjNmViYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUnVuTG9vcFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SdW5Mb29wUXQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQoUnVuTG9vcCogcnVuTG9vcCwgaW50
IElEKQogewogICAgIFRpbWVyTWFwOjppdGVyYXRvciBpdCA9IHJ1bkxvb3AtPm1fYWN0aXZlVGlt
ZXJzLmZpbmQoSUQpOwogICAgIEFTU0VSVChpdCAhPSBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5l
bmQoKSk7Ci0gICAgVGltZXJCYXNlKiB0aW1lciA9IGl0LT52YWx1ZTsKKyAgICBUaW1lckJhc2Uq
IHRpbWVyID0gaXQtPnNlY29uZDsKIAogICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsK
ICAgICAgICAgLy8gU3RvcCB0aGUgdGltZXIgKGNhbGxpbmcgc3RvcCB3b3VsZCBuZWVkIGFub3Ro
ZXIgaGFzaCB0YWJsZSBsb29rdXApLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAKaW5kZXggNTgy
NjQ5MDdkNWU0MGEwMDliNDBmZDY5OTE4MGYzM2VmN2Q1MTdjMy4uOTA5NDczODQ5Njk2YjRjMjky
ZDZiOWFjMjg1YmM3ZDlmNGFjMjg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwCkBAIC0x
NjYsNyArMTY2LDcgQEAgVVNjcmlwdENvZGUgc2NyaXB0TmFtZVRvQ29kZShjb25zdCBTdHJpbmcm
IHNjcmlwdE5hbWUpCiAKICAgICBIYXNoTWFwPFN0cmluZywgVVNjcmlwdENvZGU+OjppdGVyYXRv
ciBpdCA9IHNjcmlwdE5hbWVDb2RlTWFwLmZpbmQoc2NyaXB0TmFtZS5sb3dlcigpKTsKICAgICBp
ZiAoaXQgIT0gc2NyaXB0TmFtZUNvZGVNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFs
dWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogICAgIHJldHVybiBVU0NSSVBUX0lOVkFM
SURfQ09ERTsKIH0KIApAQCAtMzg5LDcgKzM4OSw3IEBAIFVTY3JpcHRDb2RlIGxvY2FsZVRvU2Ny
aXB0Q29kZUZvckZvbnRTZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgd2hpbGUg
KCFjYW5vbmljYWxMb2NhbGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBV
U2NyaXB0Q29kZT46Oml0ZXJhdG9yIGl0ID0gbG9jYWxlU2NyaXB0TWFwLmZpbmQoY2Fub25pY2Fs
TG9jYWxlKTsKICAgICAgICAgaWYgKGl0ICE9IGxvY2FsZVNjcmlwdE1hcC5lbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsK
ICAgICAgICAgc2l6ZV90IHBvcyA9IGNhbm9uaWNhbExvY2FsZS5yZXZlcnNlRmluZCgnXycpOwog
ICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3Bw
CmluZGV4IGQyMjkyZTRlZDVmMWYwMmQ0NDQxM2M3OWY4MzU5YWFjY2M4MDY3MzYuLjQ3NjNiZjgz
NGMwZTAxZTYxODY3N2I4YTExNDE0ODAzNjE1MjlhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC0xOTYsOCAr
MTk2LDggQEAgc3RhdGljIHZvaWQgcHJ1bmVCbGFja2xpc3RlZENvZGVjcygpCiAgICAgICAgIFRl
eHRFbmNvZGluZ05hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGV4dEVuY29kaW5nTmFtZU1h
cC0+YmVnaW4oKTsKICAgICAgICAgVGV4dEVuY29kaW5nTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+dmFsdWUgPT0gYXRvbWljTmFtZSkKLSAg
ICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgICAgICBpZiAoaXQt
PnNlY29uZCA9PSBhdG9taWNOYW1lKQorICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChpdC0+
Zmlyc3QpOwogICAgICAgICB9CiAKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUo
KTsKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIGR1bXBUZXh0RW5jb2RpbmdOYW1lTWFwKCkKICAg
ICBUZXh0RW5jb2RpbmdOYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHRleHRFbmNvZGluZ05h
bWVNYXAtPmJlZ2luKCk7CiAgICAgVGV4dEVuY29kaW5nTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+ZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICInJXMnID0+ICclcydcbiIsIGl0LT5rZXks
IGl0LT52YWx1ZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJyVzJyA9PiAnJXMnXG4iLCBp
dC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwCmlu
ZGV4IDQ4NDIyOGNhYThlNzYwNzFiMzdhOWQyMGE5OTJkNTBhMWQ0MWY0MGMuLjRlMDdmNTBmYmRi
MGM1N2MzZWVjYTZmOGJlNzFmNzUwNWRiNTNiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcApAQCAt
NjYsNyArNjYsNyBAQCBGb250VHJhbnNjb2Rlcjo6Q29udmVydGVyVHlwZSBGb250VHJhbnNjb2Rl
cjo6Y29udmVydGVyVHlwZShjb25zdCBGb250RGVzY3JpcHRpbwogICAgIGlmICghZm9udEZhbWls
eS5pc051bGwoKSkgewogICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQ29udmVydGVyVHlw
ZT46OmNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gbV9jb252ZXJ0ZXJUeXBlcy5maW5kKGZvbnRGYW1p
bHkpOwogICAgICAgICBpZiAoZm91bmQgIT0gbV9jb252ZXJ0ZXJUeXBlcy5lbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmb3VuZC0+dmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZm91bmQtPnNl
Y29uZDsKICAgICB9CiAKICAgICAvLyBJRSdzIGRlZmF1bHQgZm9udHMgZm9yIEphcGFuZXNlIGVu
Y29kaW5ncyBjaGFuZ2UgYmFja3NsYXNoZXMgaW50byB5ZW4gc2lnbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCA4NzlhZjc2
OTc3MmZmNTE1ZjM1NGFhOGIxOTcxNjk5YjYyYWJhNjYzLi5lMTkyMzdkNjhkOTBkZjJmNTAzYWY0
MjM5YWEzNjdiNmYxNGYyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEwNSwxNyArMTA1LDE3IEBAIExhbmd1YWdlTWFu
YWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgIGkgPSBjb2RlUGFnZUNoYXJzZXRz
KCkuc2V0KGNwSW5mby51aUNvZGVQYWdlLCBuYW1lKS5pdGVyYXRvcjsKICAgICAgICAgfQogICAg
ICAgICBpZiAoaSAhPSBjb2RlUGFnZUNoYXJzZXRzKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBrbm93bkNoYXJzZXRzKCku
ZmluZChTdHJpbmcoaS0+dmFsdWUuZGF0YSgpLCBpLT52YWx1ZS5sZW5ndGgoKSkpOworICAgICAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3duQ2hh
cnNldHMoKS5maW5kKFN0cmluZyhpLT5zZWNvbmQuZGF0YSgpLCBpLT5zZWNvbmQubGVuZ3RoKCkp
KTsKICAgICAgICAgICAgIEFTU0VSVChqICE9IGtub3duQ2hhcnNldHMoKS5lbmQoKSk7Ci0gICAg
ICAgICAgICBDaGFyc2V0SW5mbyYgaW5mbyA9IGotPnZhbHVlOwotICAgICAgICAgICAgaW5mby5t
X25hbWUgPSBpLT52YWx1ZS5kYXRhKCk7CisgICAgICAgICAgICBDaGFyc2V0SW5mbyYgaW5mbyA9
IGotPnNlY29uZDsKKyAgICAgICAgICAgIGluZm8ubV9uYW1lID0gaS0+c2Vjb25kLmRhdGEoKTsK
ICAgICAgICAgICAgIGluZm8ubV9mcmllbmRseU5hbWUgPSBjcEluZm8ud3N6RGVzY3JpcHRpb247
CiAgICAgICAgICAgICBpbmZvLm1fYWxpYXNlcy5hcHBlbmQobmFtZSk7CiAgICAgICAgICAgICBp
bmZvLm1fYWxpYXNlcy5hcHBlbmQoU3RyaW5nKGNwSW5mby53c3pIZWFkZXJDaGFyc2V0KS5sYXRp
bjEoKSk7CiAgICAgICAgICAgICBpbmZvLm1fYWxpYXNlcy5hcHBlbmQoU3RyaW5nKGNwSW5mby53
c3pCb2R5Q2hhcnNldCkubGF0aW4xKCkpOwogICAgICAgICAgICAgU3RyaW5nIGNwTmFtZSA9ICJj
cCIgKyBTdHJpbmc6Om51bWJlcihjcEluZm8udWlDb2RlUGFnZSk7CiAgICAgICAgICAgICBpbmZv
Lm1fYWxpYXNlcy5hcHBlbmQoY3BOYW1lLmxhdGluMSgpKTsKLSAgICAgICAgICAgIHN1cHBvcnRl
ZENoYXJzZXRzKCkuYWRkKGktPnZhbHVlLmRhdGEoKSk7CisgICAgICAgICAgICBzdXBwb3J0ZWRD
aGFyc2V0cygpLmFkZChpLT5zZWNvbmQuZGF0YSgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1l
KQogICAgIC8vIHNheWluZyAiPT0iIGlzIG5vdCBmb3VuZCBmb3IgY29uc3RfaXRlcmF0b3IgYW5k
IGl0ZXJhdG9yCiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPiYgY2hhcnNl
dHMgPSBrbm93bkNoYXJzZXRzKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6
Y29uc3RfaXRlcmF0b3IgaSA9IGNoYXJzZXRzLmZpbmQobmFtZSk7Ci0gICAgcmV0dXJuIGkgPT0g
Y2hhcnNldHMuZW5kKCkgPyBDUF9BQ1AgOiBpLT52YWx1ZS5tX2NvZGVQYWdlOworICAgIHJldHVy
biBpID09IGNoYXJzZXRzLmVuZCgpID8gQ1BfQUNQIDogaS0+c2Vjb25kLm1fY29kZVBhZ2U7CiB9
CiAKIHN0YXRpYyBQYXNzT3duUHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQpAQCAtMTQ5LDkgKzE0OSw5IEBAIHZv
aWQgVGV4dENvZGVjV2luOjpyZWdpc3RlckV4dGVuZGVkRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05h
bWVSZWdpc3RyYXIgcmVnaXN0cmFyCiAgICAgZm9yIChDaGFyc2V0U2V0OjppdGVyYXRvciBpID0g
c3VwcG9ydGVkQ2hhcnNldHMoKS5iZWdpbigpOyBpICE9IHN1cHBvcnRlZENoYXJzZXRzKCkuZW5k
KCk7ICsraSkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgQ2hhcnNldEluZm8+OjppdGVyYXRv
ciBqID0ga25vd25DaGFyc2V0cygpLmZpbmQoKmkpOwogICAgICAgICBpZiAoaiAhPSBrbm93bkNo
YXJzZXRzKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIHJlZ2lzdHJhcihqLT52YWx1ZS5tX25hbWUu
ZGF0YSgpLCBqLT52YWx1ZS5tX25hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgIGZvciAoVmVjdG9y
PENTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBhbGlhcyA9IGotPnZhbHVlLm1fYWxpYXNlcy5iZWdp
bigpOyBhbGlhcyAhPSBqLT52YWx1ZS5tX2FsaWFzZXMuZW5kKCk7ICsrYWxpYXMpCi0gICAgICAg
ICAgICAgICAgcmVnaXN0cmFyKGFsaWFzLT5kYXRhKCksIGotPnZhbHVlLm1fbmFtZS5kYXRhKCkp
OworICAgICAgICAgICAgcmVnaXN0cmFyKGotPnNlY29uZC5tX25hbWUuZGF0YSgpLCBqLT5zZWNv
bmQubV9uYW1lLmRhdGEoKSk7CisgICAgICAgICAgICBmb3IgKFZlY3RvcjxDU3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgYWxpYXMgPSBqLT5zZWNvbmQubV9hbGlhc2VzLmJlZ2luKCk7IGFsaWFzICE9
IGotPnNlY29uZC5tX2FsaWFzZXMuZW5kKCk7ICsrYWxpYXMpCisgICAgICAgICAgICAgICAgcmVn
aXN0cmFyKGFsaWFzLT5kYXRhKCksIGotPnNlY29uZC5tX25hbWUuZGF0YSgpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFRleHRDb2RlY1dpbjo6cmVnaXN0
ZXJFeHRlbmRlZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgIGZvciAo
Q2hhcnNldFNldDo6aXRlcmF0b3IgaSA9IHN1cHBvcnRlZENoYXJzZXRzKCkuYmVnaW4oKTsgaSAh
PSBzdXBwb3J0ZWRDaGFyc2V0cygpLmVuZCgpOyArK2kpIHsKICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKCppKTsK
ICAgICAgICAgaWYgKGogIT0ga25vd25DaGFyc2V0cygpLmVuZCgpKQotICAgICAgICAgICAgcmVn
aXN0cmFyKGotPnZhbHVlLm1fbmFtZS5kYXRhKCksIG5ld1RleHRDb2RlY1dpbiwgMCk7CisgICAg
ICAgICAgICByZWdpc3RyYXIoai0+c2Vjb25kLm1fbmFtZS5kYXRhKCksIG5ld1RleHRDb2RlY1dp
biwgMCk7CiAgICAgfQogfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBUZXh0Q29kZWNXaW46
OmVudW1lcmF0ZVN1cHBvcnRlZEVuY29kaW5ncyhFbmNvZGluZ1JlY2VpdmVyJiByZWNlaXZlcikK
ICAgICBsYW5ndWFnZU1hbmFnZXIoKTsKICAgICBmb3IgKENoYXJzZXRTZXQ6Oml0ZXJhdG9yIGkg
PSBzdXBwb3J0ZWRDaGFyc2V0cygpLmJlZ2luKCk7IGkgIT0gc3VwcG9ydGVkQ2hhcnNldHMoKS5l
bmQoKTsgKytpKSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDaGFyc2V0SW5mbz46Oml0ZXJh
dG9yIGogPSBrbm93bkNoYXJzZXRzKCkuZmluZCgqaSk7Ci0gICAgICAgIGlmIChqICE9IGtub3du
Q2hhcnNldHMoKS5lbmQoKSAmJiAhcmVjZWl2ZXIucmVjZWl2ZShqLT52YWx1ZS5tX25hbWUuZGF0
YSgpLCBqLT52YWx1ZS5tX2ZyaWVuZGx5TmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLCBqLT52YWx1ZS5tX2NvZGVQYWdlKSkKKyAgICAgICAgaWYgKGogIT0ga25vd25DaGFyc2V0
cygpLmVuZCgpICYmICFyZWNlaXZlci5yZWNlaXZlKGotPnNlY29uZC5tX25hbWUuZGF0YSgpLCBq
LT5zZWNvbmQubV9mcmllbmRseU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
ai0+c2Vjb25kLm1fY29kZVBhZ2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmNwcAppbmRleCA3NWZmOWRlN2JlMTAyM2Y3ZTEyZmI5OWRkMTZjZTc0NmZiOGVkZjI0Li42MWUz
NjIxYjUzZGM0OTU4NjUxM2FiNzQxNDRkZjVlNjJiYTFjMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBzdGF0aWMgYm9vbCBnZXREYXRhTWFwSXRlbShjb25zdCBEcmFnRGF0YU1hcCog
ZGF0YU9iamVjdCwgRk9STUFURVRDKiBmb3JtYXQsIFN0cgogICAgIERyYWdEYXRhTWFwOjpjb25z
dF9pdGVyYXRvciBmb3VuZCA9IGRhdGFPYmplY3QtPmZpbmQoZm9ybWF0LT5jZkZvcm1hdCk7CiAg
ICAgaWYgKGZvdW5kID09IGRhdGFPYmplY3QtPmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaXRlbSA9IGZvdW5kLT52YWx1ZVswXTsKKyAgICBpdGVtID0gZm91bmQtPnNlY29uZFsw
XTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgZ2V0Q2xp
cGJvYXJkRGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgRk9STUFURVRDKiBmb3JtYXQsIFZl
Y3RvcjxTdHJpbmc+CiAgICAgQ2xpcGJvYXJkRm9ybWF0TWFwOjpjb25zdF9pdGVyYXRvciBmb3Vu
ZCA9IGZvcm1hdE1hcC5maW5kKGZvcm1hdC0+Y2ZGb3JtYXQpOwogICAgIGlmIChmb3VuZCA9PSBm
b3JtYXRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3VuZC0+dmFsdWUtPmdldFN0
cmluZyhkYXRhT2JqZWN0LCBmb3VuZC0+dmFsdWUtPmZvcm1hdCwgZGF0YVN0cmluZ3MpOworICAg
IGZvdW5kLT5zZWNvbmQtPmdldFN0cmluZyhkYXRhT2JqZWN0LCBmb3VuZC0+c2Vjb25kLT5mb3Jt
YXQsIGRhdGFTdHJpbmdzKTsKIH0KIAogdm9pZCBzZXRDbGlwYm9hcmREYXRhKElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0LCBVSU5UIGZvcm1hdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFTdHJp
bmdzKQpAQCAtODM1LDcgKzgzNSw3IEBAIHZvaWQgc2V0Q2xpcGJvYXJkRGF0YShJRGF0YU9iamVj
dCogZGF0YU9iamVjdCwgVUlOVCBmb3JtYXQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgQ2xp
cGJvYXJkRm9ybWF0TWFwOjpjb25zdF9pdGVyYXRvciBmb3VuZCA9IGZvcm1hdE1hcC5maW5kKGZv
cm1hdCk7CiAgICAgaWYgKGZvdW5kID09IGZvcm1hdE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGZvdW5kLT52YWx1ZS0+c2V0U3RyaW5nKGRhdGFPYmplY3QsIGZvdW5kLT52YWx1ZS0+
Zm9ybWF0LCBkYXRhU3RyaW5ncyk7CisgICAgZm91bmQtPnNlY29uZC0+c2V0U3RyaW5nKGRhdGFP
YmplY3QsIGZvdW5kLT5zZWNvbmQtPmZvcm1hdCwgZGF0YVN0cmluZ3MpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRX
aW4uY3BwCmluZGV4IGY5NTBiMDhjZWZiZjZkMGJlMDFiNWU0MGFjZDBkYjY4M2E0MmEzYzMuLmQx
YzEzODZhMTQ1MjA0YzM4ZTE4MWJkNzVhMjhiMjhjOTA1Mzc1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgSGFz
aFNldDxTdHJpbmc+IENsaXBib2FyZFdpbjo6dHlwZXMoKSBjb25zdAogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGZvciAoRHJhZ0RhdGFNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kcmFnRGF0YU1h
cC5iZWdpbigpOyBpdCAhPSBtX2RyYWdEYXRhTWFwLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAg
ICBGT1JNQVRFVEMgZGF0YTsKLSAgICAgICAgICAgIGRhdGEuY2ZGb3JtYXQgPSAoKml0KS5rZXk7
CisgICAgICAgICAgICBkYXRhLmNmRm9ybWF0ID0gKCppdCkuZmlyc3Q7CiAgICAgICAgICAgICBh
ZGRNaW1lVHlwZXNGb3JGb3JtYXQocmVzdWx0cywgZGF0YSk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMDc5
ZjhkNmU4ZDY0NWIwMGZhMjlhMWI0YjVlMTYyYmVmZjYwNWU5NC4uZWUwMjU1ZTEyODU4ZWEzOWIx
YmM5NDY2NTEyOTA3M2M0ZGNhMTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fj
aGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKIAogICAgIEhhc2hNYXA8
RFdPUkQsIFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZGlyZWN0b3JpZXMuZmluZChwYXRoSWRlbnRp
Zmllcik7CiAgICAgaWYgKGl0ICE9IGRpcmVjdG9yaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4g
aXQtPnZhbHVlOworICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIFN0cmluZyBkaXJl
Y3RvcnkgPSBzdG9yYWdlRGlyZWN0b3J5KHBhdGhJZGVudGlmaWVyKTsKICAgICBkaXJlY3Rvcmll
cy5hZGQocGF0aElkZW50aWZpZXIsIGRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUnVuTG9vcFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUnVuTG9vcFdpbi5jcHAKaW5kZXggMTdkNjg0NWU5ZmZkYzM5MjhjMDY3YzdjMTU4ODNh
YWI5MGQyOWE2OC4uMTY2M2I2NjEzM2FiYzJjYjNmZDAwNTdkMTk2NzEyMzdkMGU3OTlkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1J1bkxvb3BXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9SdW5Mb29wV2luLmNwcApAQCAtMTI2LDcgKzEy
Niw3IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKFJ1bkxvb3AqIHJ1bkxv
b3AsIHVpbnQ2NF90IElEKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVGltZXJCYXNl
KiB0aW1lciA9IGl0LT52YWx1ZTsKKyAgICBUaW1lckJhc2UqIHRpbWVyID0gaXQtPnNlY29uZDsK
IAogICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsKICAgICAgICAgcnVuTG9vcC0+bV9h
Y3RpdmVUaW1lcnMucmVtb3ZlKGl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dD
RGF0YU9iamVjdC5jcHAKaW5kZXggZGZiZDAwNWZjNDM2ZjhkNzIxNmEyMTc0NjY5OWI3ZGY4MWI1
ODA0OC4uMGMwM2NlMDBmMjIxYWUwYWM4MWI4ZWU3MmNmZTBkMDU0YTA1NjY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKQEAgLTE2OSw3ICsxNjks
NyBAQCBIUkVTVUxUIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoV0NEYXRhT2JqZWN0Kiog
cmVzdWx0LCBjb25zdCBEcmFnRGF0YU1hcCYgZAogICAgICpyZXN1bHQgPSBuZXcgV0NEYXRhT2Jq
ZWN0OwogCiAgICAgZm9yIChEcmFnRGF0YU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhTWFw
LmJlZ2luKCk7IGl0ICE9IGRhdGFNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIHNldENsaXBib2Fy
ZERhdGEoKnJlc3VsdCwgaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgc2V0Q2xpcGJvYXJk
RGF0YSgqcmVzdWx0LCBpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgIHJldHVybiBTX09LOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9NSU1FVHlwZVJl
Z2lzdHJ5V2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvTUlNRVR5cGVS
ZWdpc3RyeVdpbkNFLmNwcAppbmRleCBlOTZmYjJiYTdkOTk5Y2UyZDNhY2IwZDBmOWM0YzI0ODc0
N2ZlNWVjLi44YTBkM2QyYjYxNjJiNDZkYmI3ZDYyZjIyY2EwMzI2ZGM3ZmNlZGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9NSU1FVHlwZVJlZ2lzdHJ5V2luQ0Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL01JTUVUeXBlUmVnaXN0cnlX
aW5DRS5jcHAKQEAgLTEwMSw4ICsxMDEsOCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlu
aXRNSU1FVHlwZUVudGVuc2lvbk1hcCgpOwogCiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPjo6aXRlcmF0b3IgaSA9IG1pbWV0eXBlTWFwLmJlZ2luKCk7IGkgIT0gbWltZXR5cGVNYXAu
ZW5kKCk7ICsraSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaS0+dmFsdWUsIHR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIGktPmtleTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGktPnNlY29uZCwgdHlwZSkpCisgICAgICAgICAgICByZXR1cm4gaS0+Zmlyc3Q7CiAg
ICAgfQogCiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd3gvQ29udGV4dE1lbnVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9Db250ZXh0TWVudVd4LmNwcAppbmRleCBkZjJlZTUyN2Q5NDhlMTYyYWJiODk0MjM4YmIyYjM4
NGQ4NjlmNjI0Li40MTg5YWE5NTJmZmViNGJjYTIzZGI3MGE5ODA2MWVlZGZmNGYxZGY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcApAQCAtNjcsOCAr
NjcsOCBAQCB2b2lkIENvbnRleHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYgaXRl
bSkKIAogICAgIEl0ZW1BY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNfaXRlbUFjdGlv
bnMuZW5kKCk7CiAgICAgZm9yIChJdGVtQWN0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHNf
aXRlbUFjdGlvbnMuYmVnaW4oKTsgIGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQt
PnZhbHVlID09IGl0ZW1EZXNjcmlwdGlvbi5hY3Rpb24pCi0gICAgICAgICAgICBpZFd4ID0gaXQt
PmtleTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gaXRlbURlc2NyaXB0aW9uLmFjdGlvbikK
KyAgICAgICAgICAgIGlkV3ggPSBpdC0+Zmlyc3Q7CiAgICAgfQogCiAgICAgaWYgKGl0ZW1EZXNj
cmlwdGlvbi5zdWJNZW51KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCmluZGV4IDQ0NTJhZmUxZTRiNjM4YjVmN2RkYTBlYzdiMTc5ZDdhZTNkOWQ2ZTMuLjk2MWM0
NTQ4NWJmMmQ4Nzc0YWEzMDBjNzg2NTBlYWM5ZGFhMDVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBQbHVnaW5E
YXRhYmFzZTo6cmVmcmVzaCgpCiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgbWFwX2l0ID0gKCppdCktPm1pbWVUb0Rlc2NyaXB0aW9ucygpLmJlZ2luKCk7CiAg
ICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWFwX2VuZCA9ICgq
aXQpLT5taW1lVG9EZXNjcmlwdGlvbnMoKS5lbmQoKTsKICAgICAgICAgZm9yICg7IG1hcF9pdCAh
PSBtYXBfZW5kOyArK21hcF9pdCkKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJlZE1JTUVUeXBlcy5h
ZGQobWFwX2l0LT5rZXkpOworICAgICAgICAgICAgbV9yZWdpc3RlcmVkTUlNRVR5cGVzLmFkZCht
YXBfaXQtPmZpcnN0KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI0Nyw5ICsyNDcs
OSBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogICAgICAgICBNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBtaW1lX2VuZCA9ICgqaXQpLT5taW1lVG9FeHRlbnNpb25zKCkuZW5kKCk7CiAK
ICAgICAgICAgZm9yIChNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtaW1lX2l0
ID0gKCppdCktPm1pbWVUb0V4dGVuc2lvbnMoKS5iZWdpbigpOyBtaW1lX2l0ICE9IG1pbWVfZW5k
OyArK21pbWVfaXQpIHsKLSAgICAgICAgICAgIG1pbWVUeXBlID0gbWltZV9pdC0+a2V5OworICAg
ICAgICAgICAgbWltZVR5cGUgPSBtaW1lX2l0LT5maXJzdDsKICAgICAgICAgICAgIFBsdWdpblBh
Y2thZ2UqIHByZWZlcnJlZFBsdWdpbiA9IG1fcHJlZmVycmVkUGx1Z2lucy5nZXQobWltZVR5cGUp
LmdldCgpOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMgPSBt
aW1lX2l0LT52YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNp
b25zID0gbWltZV9pdC0+c2Vjb25kOwogICAgICAgICAgICAgYm9vbCBmb3VuZE1hcHBpbmcgPSBm
YWxzZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGV4dGVu
c2lvbnNbaV0sIGV4dGVuc2lvbikpIHsKQEAgLTMzOSw4ICszMzksOCBAQCB2b2lkIFBsdWdpbkRh
dGFiYXNlOjpyZW1vdmUoUGx1Z2luUGFja2FnZSogcGFja2FnZSkKICAgICBNSU1FVG9FeHRlbnNp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5i
ZWdpbigpOwogICAgIE1JTUVUb0V4dGVuc2lvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBh
Y2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5lbmQoKTsKICAgICBmb3IgKCA7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBQbHVnaW5QYWNrYWdlQnlOYW1lTWFwOjppdGVyYXRvciBwYWNrYWdl
SW5NYXAgPSBtX3ByZWZlcnJlZFBsdWdpbnMuZmluZChpdC0+a2V5KTsKLSAgICAgICAgaWYgKHBh
Y2thZ2VJbk1hcCAhPSBtX3ByZWZlcnJlZFBsdWdpbnMuZW5kKCkgJiYgcGFja2FnZUluTWFwLT52
YWx1ZSA9PSBwYWNrYWdlKQorICAgICAgICBQbHVnaW5QYWNrYWdlQnlOYW1lTWFwOjppdGVyYXRv
ciBwYWNrYWdlSW5NYXAgPSBtX3ByZWZlcnJlZFBsdWdpbnMuZmluZChpdC0+Zmlyc3QpOworICAg
ICAgICBpZiAocGFja2FnZUluTWFwICE9IG1fcHJlZmVycmVkUGx1Z2lucy5lbmQoKSAmJiBwYWNr
YWdlSW5NYXAtPnNlY29uZCA9PSBwYWNrYWdlKQogICAgICAgICAgICAgbV9wcmVmZXJyZWRQbHVn
aW5zLnJlbW92ZShwYWNrYWdlSW5NYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKaW5kZXggMzlhZTc5NGUy
ZmIwOTcyMTlhNTIyM2ViZmJlZWRmNjliNmUyODYyYy4uNzUyODY3NmIxMmFhOGJkYThmMzNiMzJl
ZjQwY2M4NzY1NzY2ZDMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgUGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxsKE5QUCBucHAsIE1haW5UaHJlYWRGdW5j
dGlvbiBmdW5jdGlvCiAgICAgaWYgKGl0ID09IG1fY2FsbFF1ZXVlTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpdC0+dmFsdWUuYXBwZW5kKENhbGwoZnVuY3Rpb24sIHVzZXJEYXRh
KSk7CisgICAgaXQtPnNlY29uZC5hcHBlbmQoQ2FsbChmdW5jdGlvbiwgdXNlckRhdGEpKTsKIAog
ICAgIGlmICghbV9jYWxsUGVuZGluZykgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKG1haW5U
aHJlYWRDYWxsYmFjaywgdGhpcyk7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxscygpCiAgICAgICAgIC8vIEVtcHR5IGFsbCB0aGUg
cXVldWVzIGluIHRoZSBvcmlnaW5hbCBtYXAKICAgICAgICAgQ2FsbFF1ZXVlTWFwOjppdGVyYXRv
ciBlbmQgPSBtX2NhbGxRdWV1ZU1hcC5lbmQoKTsKICAgICAgICAgZm9yIChDYWxsUXVldWVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9jYWxsUXVldWVNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICAgICAgaXQtPnZhbHVlLmNsZWFyKCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLmNs
ZWFyKCk7CiAgICAgfQogCiAgICAgbV9jYWxsUGVuZGluZyA9IGZhbHNlOwpAQCAtMTA1LDcgKzEw
NSw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxscygpCiAK
ICAgICBDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7CiAgICAgZm9yIChD
YWxsUXVldWVNYXA6Oml0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgIGRpc3BhdGNoQ2FsbHNGb3JQbHVnaW4oaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAg
ICAgICAgZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogfQog
CiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6Om1haW5UaHJlYWRDYWxsYmFjayh2b2lk
KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGZk
Yjc4NjAzNWIwZDE2NTQ4MjFmY2I0NjBhZDRlMmQzYTcxYTVhMzUuLjAwMjM4MGY1Zjk1M2Y5YmVl
MmM1NjVlOWNhNWMxMzJhZDRjMGFmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0
cmVhbS5jcHAKQEAgLTE0Nyw5ICsxNDcsOSBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJl
YW0oKQogCiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVz
b3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCk7CiAgICAgICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChpdC0+Zmlyc3QpOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+c2Vjb25kKTsKICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luRGF0YUJsYWNrQmVycnkuY3Bw
CmluZGV4IDQ3NDY2MTZkZTMzNWZhODNjZWM5NmQ5MzBlMjBkOGMyOGU5NGMzYjcuLmQ5MjBkMWZi
ZDVhMTEyNDYwM2E4Y2Q5OGZhMTM0MzU2ZTczMDZiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5EYXRhQmxhY2tCZXJyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpbkRhdGFCbGFja0JlcnJ5LmNwcApA
QCAtNDEsOCArNDEsOCBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2Uq
KQogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1p
bWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwotICAgICAgICAg
ICAgbWltZS50eXBlID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1
ZTsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUu
ZGVzYyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdl
LT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAgICAgICAgICAgICBpbmZvLm1p
bWVzLmFwcGVuZChtaW1lKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93eC9Q
bHVnaW5EYXRhV3guY3BwCmluZGV4IDI3OTUyYzRhZThiZmE0OWU5OGIxMWFlOTk1OWZjNzU0ZTRk
YjIzYmUuLjBlYjg5MGZlZjA1YTExNWVhY2U0MjYzNzY4MGEzZDZhMTJmNTc3MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd3gvUGx1Z2luRGF0YVd4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHAKQEAgLTUxLDggKzUxLDggQEAg
dm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucyhjb25zdCBQYWdlKikKICAgICAgICAgZm9yIChN
SU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRp
b25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgTWltZUNsYXNzSW5m
byBtaW1lOwogCi0gICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+a2V5OwotICAgICAgICAgICAg
bWltZS5kZXNjID0gaXQtPnZhbHVlOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0
OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIG1pbWUu
ZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsK
IAogICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAppbmRleCBhYThjOGRkMTVh
MTVlZWZiNDIxMTNmZDEyNjFmOGYyNWVjMGU4MjU2Li4wMTNlNGEyMGY1ZjhmMTg1YTJlNDAwYWEw
ODlkMmY2MTY2MmY3MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
d1RocmVhZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93
VGhyZWFkQ29udHJvbGxlci5jcHAKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIEZsb3dUaHJlYWRD
b250cm9sbGVyOjp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoTm9kZSogY29udGVudE5v
ZGUpCiAgICAgQVNTRVJUKGNvbnRlbnROb2RlICYmIGNvbnRlbnROb2RlLT5pc0VsZW1lbnROb2Rl
KCkpOwogICAgIEhhc2hNYXA8Tm9kZSosIFJlbmRlck5hbWVkRmxvd1RocmVhZCo+OjppdGVyYXRv
ciBpdCA9IG1fbWFwTmFtZWRGbG93Q29udGVudE5vZGVzLmZpbmQoY29udGVudE5vZGUpOwogICAg
IEFTU0VSVChpdCAhPSBtX21hcE5hbWVkRmxvd0NvbnRlbnROb2Rlcy5lbmQoKSk7Ci0gICAgQVNT
RVJUKGl0LT52YWx1ZSk7Ci0gICAgQVNTRVJUKGl0LT52YWx1ZS0+aGFzQ29udGVudE5vZGUoY29u
dGVudE5vZGUpKTsKLSAgICBpdC0+dmFsdWUtPnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9k
ZShjb250ZW50Tm9kZSk7CisgICAgQVNTRVJUKGl0LT5zZWNvbmQpOworICAgIEFTU0VSVChpdC0+
c2Vjb25kLT5oYXNDb250ZW50Tm9kZShjb250ZW50Tm9kZSkpOworICAgIGl0LT5zZWNvbmQtPnVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShjb250ZW50Tm9kZSk7CiAgICAgbV9tYXBOYW1l
ZEZsb3dDb250ZW50Tm9kZXMucmVtb3ZlKGNvbnRlbnROb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IGZkZDZmYWQyYjRlYmY0NmYxYTRl
MmMxMWJjNWUyNjkzYjk1NmM0NDMuLjYxNWE0YjBiMWRlY2IxNDMwYWJkOTdkNGIyOGJkMTRlM2Nh
NDAyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAg
LTQ1OSw3ICs0NTksNyBAQCBib29sIElubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNC
YXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGbwogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIHVzZWRGb250cyA9IDA7CiAgICAgICAg
ICAgICBpZiAoY3Vyci0+aXNJbmxpbmVUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0ZXh0Qm94
RGF0YU1hcC5maW5kKHRvSW5saW5lVGV4dEJveChjdXJyKSk7Ci0gICAgICAgICAgICAgICAgdXNl
ZEZvbnRzID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyAwIDogJml0LT52YWx1ZS5maXJz
dDsKKyAgICAgICAgICAgICAgICB1c2VkRm9udHMgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQo
KSA/IDAgOiAmaXQtPnNlY29uZC5maXJzdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKHVzZWRGb250cykgewpAQCAtODIzLDcgKzgyMyw3IEBAIGlubGluZSB2b2lkIElubGluZUZs
b3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBH
bHlwCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dEJveC0+cmVuZGVyZXIoKS0+c3R5bGUo
aXNGaXJzdExpbmVTdHlsZSgpKTsKICAgICAKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKHRleHRCb3gpOwotICAg
IEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQo
KSA/IDAgOiAmaXQtPnZhbHVlLnNlY29uZDsKKyAgICBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJm
bG93ID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyAwIDogJml0LT5zZWNvbmQuc2Vjb25k
OwogICAgIGJvb2wgaXNGbGlwcGVkTGluZSA9IHN0eWxlLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdN
b2RlKCk7CiAKICAgICBpbnQgdG9wR2x5cGhFZGdlID0gZ2x5cGhPdmVyZmxvdyA/IChpc0ZsaXBw
ZWRMaW5lID8gZ2x5cGhPdmVyZmxvdy0+Ym90dG9tIDogZ2x5cGhPdmVyZmxvdy0+dG9wKSA6IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBiZTM1MTFlYjdl
NzNmZThiZTMzMjk3NGRjODY5YzhhZmY1ZDM4MmRkLi5kNzlkMWUwZDNkMWQ4NjYyZTZhYmUwMDU1
ZTczNzgxMWRkOTAzMjk1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTQzOTUsNyArNDM5NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkK
IAogICAgICAgICBSZW5kZXJlclRvRmxvYXRJbmZvTWFwOjppdGVyYXRvciBlbmQgPSBmbG9hdE1h
cC5lbmQoKTsKICAgICAgICAgZm9yIChSZW5kZXJlclRvRmxvYXRJbmZvTWFwOjppdGVyYXRvciBp
dCA9IGZsb2F0TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgRmxv
YXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gKCppdCkudmFsdWU7CisgICAgICAgICAgICBG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSAoKml0KS5zZWNvbmQ7CiAgICAgICAgICAg
ICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5pc0Rlc2NlbmRhbnQoKSkgewogICAgICAgICAgICAgICAg
IGNoYW5nZUxvZ2ljYWxUb3AgPSAwOwogICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0
b20gPSBtYXgoY2hhbmdlTG9naWNhbEJvdHRvbSwgbG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCmluZGV4IDI2ZWNlZTFmYTU4ZGM5NDU3MDQzMmQ4MTk4NThjZmZiOTNj
ZDk5MDIuLjhiOTYwZjA1OTFiMDUxZjc0MjhiYzM3ZTIwMjdjZjY5ZTJiMTkxOGQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBA
IC03MDcsMTQgKzcwNywxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9y
VGV4dFJ1bihSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBydQogICAgIGlmICghZmFs
bGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4
dCgpKTsKICAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9y
IGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFr
ZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkp
Lml0ZXJhdG9yOwotICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmZpcnN0LmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0ZvbnRzLCBpdC0+dmFsdWUuZmlyc3QpOworICAg
ICAgICBBU1NFUlQoaXQtPnNlY29uZC5maXJzdC5pc0VtcHR5KCkpOworICAgICAgICBjb3B5VG9W
ZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnNlY29uZC5maXJzdCk7CiAgICAgICAgIHJ1bi0+bV9i
b3gtPnBhcmVudCgpLT5jbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxp
bmUoKTsKICAgICB9CiAgICAgaWYgKChnbHlwaE92ZXJmbG93LnRvcCB8fCBnbHlwaE92ZXJmbG93
LmJvdHRvbSB8fCBnbHlwaE92ZXJmbG93LmxlZnQgfHwgZ2x5cGhPdmVyZmxvdy5yaWdodCkpIHsK
ICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKICAgICAgICAgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRk
KHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1w
bGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwotICAgICAgICBpdC0+
dmFsdWUuc2Vjb25kID0gZ2x5cGhPdmVyZmxvdzsKKyAgICAgICAgaXQtPnNlY29uZC5zZWNvbmQg
PSBnbHlwaE92ZXJmbG93OwogICAgICAgICBydW4tPm1fYm94LT5jbGVhcktub3duVG9IYXZlTm9P
dmVyZmxvdygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDMzZjkzYmRiMTQ2YmQxNTdhZmM2ZmIxNzA3NDFj
YTdjMTJmZmM2ODguLjk5ODkzZmNkNDY2M2I1Njc5MzdlOTZiYzU4ZmFkNjgwMDZiMjVlNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1
YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxJbWFnZVF1YWxpdHlDb250CiAgICAgaWYgKG1f
YW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3Rp
dmUgPSBmYWxzZTsKICAgICAgICAgZm9yIChPYmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9vYmplY3RMYXllclNpemVNYXAuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RMYXllclNpemVN
YXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpdC0+a2V5LT5yZXBhaW50KCk7CisgICAgICAg
ICAgICBpdC0+Zmlyc3QtPnJlcGFpbnQoKTsKICAgICB9CiB9CiAKQEAgLTE2MiwxNCArMTYyLDE0
IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHko
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSCiAKICAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBp
biB0aGUgaGFzaHRhYmxlcy4KICAgICBPYmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGkgPSBt
X29iamVjdExheWVyU2l6ZU1hcC5maW5kKG9iamVjdCk7Ci0gICAgTGF5ZXJTaXplTWFwKiBpbm5l
ck1hcCA9IGkgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCkgPyAmaS0+dmFsdWUgOiAwOwor
ICAgIExheWVyU2l6ZU1hcCogaW5uZXJNYXAgPSBpICE9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmVu
ZCgpID8gJmktPnNlY29uZCA6IDA7CiAgICAgTGF5b3V0U2l6ZSBvbGRTaXplOwogICAgIGJvb2wg
aXNGaXJzdFJlc2l6ZSA9IHRydWU7CiAgICAgaWYgKGlubmVyTWFwKSB7CiAgICAgICAgIExheWVy
U2l6ZU1hcDo6aXRlcmF0b3IgaiA9IGlubmVyTWFwLT5maW5kKGxheWVyKTsKICAgICAgICAgaWYg
KGogIT0gaW5uZXJNYXAtPmVuZCgpKSB7CiAgICAgICAgICAgICBpc0ZpcnN0UmVzaXplID0gZmFs
c2U7Ci0gICAgICAgICAgICBvbGRTaXplID0gai0+dmFsdWU7CisgICAgICAgICAgICBvbGRTaXpl
ID0gai0+c2Vjb25kOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggNTQ1N2EzYTFkZDE2OGI4NmVkM2JhZGE3MDcwYmE0
NjM0NGIzODAyNi4uZGU0NWQ4OTVlMTdlMDlhNzFiNjM5MWRkOThlODIzMDc3YjIxZDEwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNTcxLDExICs1
NzEsMTEgQEAgdm9pZCBSZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRlck5vZGVzKFJlbmRlck9i
amVjdCogb3duZXIpCiAgICAgQ291bnRlck1hcHM6Oml0ZXJhdG9yIG1hcHNJdGVyYXRvciA9IG1h
cHMuZmluZChvd25lcik7CiAgICAgaWYgKG1hcHNJdGVyYXRvciA9PSBtYXBzLmVuZCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgQ291bnRlck1hcCogbWFwID0gbWFwc0l0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKKyAgICBDb3VudGVyTWFwKiBtYXAgPSBtYXBzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsK
ICAgICBDb3VudGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgIGZv
ciAoQ291bnRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmllcihpdC0+a2V5LmdldCgp
KTsKLSAgICAgICAgZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwoaWRlbnRpZmll
ciwgaXQtPnZhbHVlLmdldCgpKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIoaXQt
PmZpcnN0LmdldCgpKTsKKyAgICAgICAgZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92
YWwoaWRlbnRpZmllciwgaXQtPnNlY29uZC5nZXQoKSk7CiAgICAgfQogICAgIG1hcHMucmVtb3Zl
KG1hcHNJdGVyYXRvcik7CiAgICAgb3duZXItPnNldEhhc0NvdW50ZXJOb2RlTWFwKGZhbHNlKTsK
QEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9k
ZShSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgQ291bnRlck1h
cDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtYXAtPmZpbmQoaWRlbnRpZmllci5pbXBsKCkpOwog
ICAgIGlmIChtYXBJdGVyYXRvciA9PSBtYXAtPmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwoaWRlbnRpZmllciwgbWFwSXRlcmF0
b3ItPnZhbHVlLmdldCgpKTsKKyAgICBkZXN0cm95Q291bnRlck5vZGVXaXRob3V0TWFwUmVtb3Zh
bChpZGVudGlmaWVyLCBtYXBJdGVyYXRvci0+c2Vjb25kLmdldCgpKTsKICAgICBtYXAtPnJlbW92
ZShtYXBJdGVyYXRvcik7CiAgICAgLy8gV2UgZG8gbm90IGRlbGV0ZSAibWFwIiBoZXJlIGV2ZW4g
aWYgZW1wdHkgYmVjYXVzZSB3ZSBleHBlY3QgdG8gcmV1c2UKICAgICAvLyBpdCBzb29uLiBJbiBv
cmRlciBmb3IgYSByZW5kZXJlciB0byBsb3NlIGFsbCBpdHMgY291bnRlcnMgcGVybWFuZW50bHks
CkBAIC02MjksMjIgKzYyOSwyMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVDb3VudGVycyhSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgIENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGRpcmVjdGl2ZU1hcC0+ZW5kKCk7CiAgICAgaWYgKCFyZW5kZXJlci0+aGFzQ291bnRl
ck5vZGVNYXAoKSkgewogICAgICAgICBmb3IgKENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gZGlyZWN0aXZlTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIEF0b21pY1N0cmluZyhpdC0+a2V5Lmdl
dCgpKSwgZmFsc2UpOworICAgICAgICAgICAgbWFrZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBBdG9t
aWNTdHJpbmcoaXQtPmZpcnN0LmdldCgpKSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIENvdW50ZXJNYXAqIGNvdW50ZXJNYXAgPSBjb3VudGVyTWFwcygpLmdldChyZW5kZXJl
cik7CiAgICAgQVNTRVJUKGNvdW50ZXJNYXApOwogICAgIGZvciAoQ291bnRlckRpcmVjdGl2ZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkaXJlY3RpdmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5vZGUgPSBjb3VudGVyTWFwLT5n
ZXQoaXQtPmtleS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbm9kZSA9IGNv
dW50ZXJNYXAtPmdldChpdC0+Zmlyc3QuZ2V0KCkpOwogICAgICAgICBpZiAoIW5vZGUpIHsKLSAg
ICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgQXRvbWljU3RyaW5nKGl0LT5rZXku
Z2V0KCkpLCBmYWxzZSk7CisgICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIEF0
b21pY1N0cmluZyhpdC0+Zmlyc3QuZ2V0KCkpLCBmYWxzZSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld1BhcmVudCA9IDA7
CiAgICAgICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3UHJldmlvdXNTaWJsaW5nID0gMDsKICAg
ICAgICAgCi0gICAgICAgIGZpbmRQbGFjZUZvckNvdW50ZXIocmVuZGVyZXIsIEF0b21pY1N0cmlu
ZyhpdC0+a2V5LmdldCgpKSwgbm9kZS0+aGFzUmVzZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJl
dmlvdXNTaWJsaW5nKTsKLSAgICAgICAgaWYgKG5vZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5r
ZXkuZ2V0KCkpKQorICAgICAgICBmaW5kUGxhY2VGb3JDb3VudGVyKHJlbmRlcmVyLCBBdG9taWNT
dHJpbmcoaXQtPmZpcnN0LmdldCgpKSwgbm9kZS0+aGFzUmVzZXRUeXBlKCksIG5ld1BhcmVudCwg
bmV3UHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgaWYgKG5vZGUgIT0gY291bnRlck1hcC0+Z2V0
KGl0LT5maXJzdC5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ291bnRl
ck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudCgpOwogICAgICAgICBpZiAobmV3UGFyZW50ID09
IHBhcmVudCAmJiBuZXdQcmV2aW91c1NpYmxpbmcgPT0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkp
CkBAIC02NTIsNyArNjUyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ291bnRlcnMoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAgIHBhcmVudC0+
cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChuZXdQYXJlbnQpCi0gICAgICAg
ICAgICBuZXdQYXJlbnQtPmluc2VydEFmdGVyKG5vZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2libGlu
Zy5nZXQoKSwgaXQtPmtleS5nZXQoKSk7CisgICAgICAgICAgICBuZXdQYXJlbnQtPmluc2VydEFm
dGVyKG5vZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2libGluZy5nZXQoKSwgaXQtPmZpcnN0LmdldCgp
KTsKICAgICB9CiB9CiAKQEAgLTY4NCwyMSArNjg0LDIxIEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6
cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVy
U3R5CiAgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBuZXdN
YXBFbmQgPSBuZXdDb3VudGVyRGlyZWN0aXZlcy0+ZW5kKCk7CiAgICAgICAgICAgICBDb3VudGVy
RGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBvbGRNYXBFbmQgPSBvbGRDb3VudGVyRGlyZWN0
aXZlcy0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbmV3Q291bnRlckRpcmVjdGl2ZXMtPmJlZ2luKCk7IGl0ICE9IG5ld01h
cEVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0
X2l0ZXJhdG9yIG9sZE1hcEl0ID0gb2xkQ291bnRlckRpcmVjdGl2ZXMtPmZpbmQoaXQtPmtleSk7
CisgICAgICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3Igb2xk
TWFwSXQgPSBvbGRDb3VudGVyRGlyZWN0aXZlcy0+ZmluZChpdC0+Zmlyc3QpOwogICAgICAgICAg
ICAgICAgIGlmIChvbGRNYXBJdCAhPSBvbGRNYXBFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG9sZE1hcEl0LT52YWx1ZSA9PSBpdC0+dmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGlm
IChvbGRNYXBJdC0+c2Vjb25kID09IGl0LT5zZWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNv
dW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+a2V5LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0
KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGNyZWF0
ZSB0aGlzIG5vZGUgaGVyZSwgYmVjYXVzZSB0aGUgY2hhbmdlZCBub2RlIG1heSBiZSBhIG5vZGUg
d2l0aCBubyBkaXNwbGF5IHN1Y2ggYXMKICAgICAgICAgICAgICAgICAvLyBhcyB0aG9zZSBjcmVh
dGVkIGJ5IHRoZSBpbmNyZW1lbnQgb3IgcmVzZXQgZGlyZWN0aXZlcyBhbmQgdGhlIHJlLWxheW91
dCB0aGF0IHdpbGwgaGFwcGVuIHdpbGwKICAgICAgICAgICAgICAgICAvLyBub3QgY2F0Y2ggdGhl
IGNoYW5nZSBpZiB0aGUgbm9kZSBoYWQgbm8gY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgbWFr
ZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+a2V5LmdldCgpLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgbWFrZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCksIGZhbHNlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIERlc3Ryb3lpbmcgb2xkIGNvdW50ZXJzIHRo
YXQgZG8gbm90IGV4aXN0IGluIHRoZSBuZXcgY291bnRlckRpcmVjdGl2ZSBtYXAuCiAgICAgICAg
ICAgICBmb3IgKENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gb2xkQ291
bnRlckRpcmVjdGl2ZXMtPmJlZ2luKCk7IGl0ICE9b2xkTWFwRW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFuZXdDb3VudGVyRGlyZWN0aXZlcy0+Y29udGFpbnMoaXQtPmtleSkpCi0g
ICAgICAgICAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZShyZW5k
ZXJlciwgaXQtPmtleS5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFuZXdDb3VudGVyRGly
ZWN0aXZlcy0+Y29udGFpbnMoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVy
Q291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVy
LT5oYXNDb3VudGVyTm9kZU1hcCgpKQpAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgUmVuZGVyQ291
bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyU3R5CiAgICAgICAgICAgICAvLyBXZSBtdXN0IGNyZWF0ZSB0aGlzIG5vZGUgaGVyZSwg
YmVjYXVzZSB0aGUgYWRkZWQgbm9kZSBtYXkgYmUgYSBub2RlIHdpdGggbm8gZGlzcGxheSBzdWNo
IGFzCiAgICAgICAgICAgICAvLyBhcyB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBpbmNyZW1lbnQgb3Ig
cmVzZXQgZGlyZWN0aXZlcyBhbmQgdGhlIHJlLWxheW91dCB0aGF0IHdpbGwgaGFwcGVuIHdpbGwK
ICAgICAgICAgICAgIC8vIG5vdCBjYXRjaCB0aGUgY2hhbmdlIGlmIHRoZSBub2RlIGhhZCBubyBj
aGlsZHJlbi4KLSAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmtleS5n
ZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgbWFrZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+
Zmlyc3QuZ2V0KCksIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA4MzkyYmJiOWNlOTY5Mjg0
N2JmYzdjZGRjOTM4MjJiMDAyZTM5ZTgxLi5iYmE4YmY1ZTA3ZjlmZDlmOTI0NGQyOGYxODdjYmM4
YWU3MDU0ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdp
b25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgTGF5b3V0VW5pdCBvZmYKICAgICB9
CiAKICAgICAvLyBJZiBub3RoaW5nIGNoYW5nZWQsIGp1c3QgYmFpbC4KLSAgICBSZW5kZXJSZWdp
b25SYW5nZSYgcmFuZ2UgPSBpdC0+dmFsdWU7CisgICAgUmVuZGVyUmVnaW9uUmFuZ2UmIHJhbmdl
ID0gaXQtPnNlY29uZDsKICAgICBpZiAocmFuZ2Uuc3RhcnRSZWdpb24oKSA9PSBzdGFydFJlZ2lv
biAmJiByYW5nZS5lbmRSZWdpb24oKSA9PSBlbmRSZWdpb24pCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Z2V0UmVnaW9uUmFuZ2VG
b3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiomCiAgICAgaWYgKGl0ID09
IG1fcmVnaW9uUmFuZ2VNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFJl
bmRlclJlZ2lvblJhbmdlJiByYW5nZSA9IGl0LT52YWx1ZTsKKyAgICBjb25zdCBSZW5kZXJSZWdp
b25SYW5nZSYgcmFuZ2UgPSBpdC0+c2Vjb25kOwogICAgIHN0YXJ0UmVnaW9uID0gcmFuZ2Uuc3Rh
cnRSZWdpb24oKTsKICAgICBlbmRSZWdpb24gPSByYW5nZS5lbmRSZWdpb24oKTsKICAgICBBU1NF
UlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHN0YXJ0UmVnaW9uKSAmJiBtX3JlZ2lvbkxpc3QuY29u
dGFpbnMoZW5kUmVnaW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCBmOWE4NjZjOTJjNGZhYmM3ZTdkODE0OTZhYTRjZDk3YmY3YjQzMDQzLi45NWRlOTM4
NWI1YTdiOGVmMTgzNzQ3NzY1OTUzYTlmOTU3Y2UwZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI4NzEsNyArMjg3MSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwKICAgICBwYWludExheWVyKHRoaXMsIGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3Qo
ZGFtYWdlUmVjdCksIExheW91dFNpemUoKSwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCBy
ZWdpb24sICZvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKICAgICBPdmVybGFwVGVz
dFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGVuZCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuZW5kKCk7CiAg
ICAgZm9yIChPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRlc3RS
ZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT5rZXktPnNldE92
ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKKyAgICAgICAgaXQtPmZpcnN0LT5zZXRPdmVybGFwVGVz
dFJlc3VsdChmYWxzZSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9s
bGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdS
b290KQpAQCAtMjk0MCwxMSArMjk0MCwxMSBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtT3ZlcmxhcFRl
c3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgY29ucwogICAg
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0b3IgZW5kID0gb3ZlcmxhcFRlc3RSZXF1ZXN0
cy5lbmQoKTsKICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gbGF5ZXItPmJvdW5kaW5nQm94
KHJvb3RMYXllcik7CiAgICAgZm9yIChPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0
ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgaWYgKCFib3VuZGluZ0JveC5pbnRlcnNlY3RzKGl0LT52YWx1ZSkpCisgICAgICAgIGlmICgh
Ym91bmRpbmdCb3guaW50ZXJzZWN0cyhpdC0+c2Vjb25kKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGl0LT5rZXktPnNldE92ZXJsYXBUZXN0UmVzdWx0KHRydWUpOwotICAgICAg
ICBvdmVybGFwcGVkUmVxdWVzdENsaWVudHMuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICBpdC0+
Zmlyc3QtPnNldE92ZXJsYXBUZXN0UmVzdWx0KHRydWUpOworICAgICAgICBvdmVybGFwcGVkUmVx
dWVzdENsaWVudHMuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3ZlcmxhcHBlZFJlcXVlc3RDbGllbnRzLnNpemUoKTsgKytpKQogICAgICAgICBv
dmVybGFwVGVzdFJlcXVlc3RzLnJlbW92ZShvdmVybGFwcGVkUmVxdWVzdENsaWVudHNbaV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5m
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNw
cAppbmRleCBjYjRjNWQ2NjExMGM5MjQxMmYzNTBlYTg5OTMyNzJjZTYyY2Q3ZTA4Li5hY2JmMDdk
OWQxYmZkMjAyMWM1NTQxNTI2NmRkNDQzMDUwNTU1YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcApAQCAtNTYsNyArNTYsNyBA
QCBSZW5kZXJMYXllckZpbHRlckluZm8qIFJlbmRlckxheWVyRmlsdGVySW5mbzo6ZmlsdGVySW5m
b0ZvclJlbmRlckxheWVyKGNvbnN0IFJlbgogICAgIGlmICghc19maWx0ZXJNYXApCiAgICAgICAg
IHJldHVybiAwOwogICAgIFJlbmRlckxheWVyRmlsdGVySW5mb01hcDo6aXRlcmF0b3IgaXRlciA9
IHNfZmlsdGVyTWFwLT5maW5kKGxheWVyKTsKLSAgICByZXR1cm4gKGl0ZXIgIT0gc19maWx0ZXJN
YXAtPmVuZCgpKSA/IGl0ZXItPnZhbHVlIDogMDsKKyAgICByZXR1cm4gKGl0ZXIgIT0gc19maWx0
ZXJNYXAtPmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IDA7CiB9CiAKIFJlbmRlckxheWVyRmlsdGVy
SW5mbyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpjcmVhdGVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5
ZXJJZk5lZWRlZChSZW5kZXJMYXllciogbGF5ZXIpCkBAIC02Nyw3ICs2Nyw3IEBAIFJlbmRlckxh
eWVyRmlsdGVySW5mbyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpjcmVhdGVGaWx0ZXJJbmZvRm9y
UmVuZGVyTGF5ZXJJZk5lCiAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwOjppdGVyYXRvciBp
dGVyID0gc19maWx0ZXJNYXAtPmZpbmQobGF5ZXIpOwogICAgIGlmIChpdGVyICE9IHNfZmlsdGVy
TWFwLT5lbmQoKSkgewogICAgICAgICBBU1NFUlQobGF5ZXItPmhhc0ZpbHRlckluZm8oKSk7Ci0g
ICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsK
ICAgICB9CiAgICAgCiAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXIgPSBuZXcgUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggYzEyZmNmNzNmZDZkZjI2NDFhZjIy
NWM5MTkyYzdhNzI5NTI4OTc5Yi4uNWIwMjQ1M2U0YzZjM2RiYWVkNjNkZGE1MGVhMzM5NGNiZTQ3
Y2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6ZGVwZW5kc09uKFJlbmRlck5hbWVkRmxvd1RocmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZQog
ICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJh
dG9yID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7CiAgICAgUmVuZGVyTmFtZWRG
bG93VGhyZWFkQ291bnRlZFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9sYXlvdXRCZWZvcmVU
aHJlYWRzU2V0LmVuZCgpOwogICAgIGZvciAoOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3Ip
IHsKLSAgICAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBiZWZvcmVGbG93VGhyZWFk
ID0gKCppdGVyYXRvcikua2V5OworICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQq
IGJlZm9yZUZsb3dUaHJlYWQgPSAoKml0ZXJhdG9yKS5maXJzdDsKICAgICAgICAgaWYgKGJlZm9y
ZUZsb3dUaHJlYWQtPmRlcGVuZHNPbihvdGhlclJlbmRlckZsb3dUaHJlYWQpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpyZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxv
d1RocmVhZCoKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKFJl
bmRlck5hbWVkRmxvd1RocmVhZExpc3QmIGxpc3QpCiB7CiAgICAgZm9yIChSZW5kZXJOYW1lZEZs
b3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciBpdGVyID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRz
U2V0LmJlZ2luKCk7IGl0ZXIgIT0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyArK2l0
ZXIpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVy
KS5rZXk7CisgICAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogZmxvd1RocmVhZCA9ICgqaXRl
cikuZmlyc3Q7CiAgICAgICAgIGlmIChsaXN0LmNvbnRhaW5zKGZsb3dUaHJlYWQpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGZsb3dUaHJlYWQtPnB1c2hEZXBlbmRlbmNpZXMobGlz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGE3YmUz
OTNhZjY1MjA0N2ZmMGM5ODE5Njk4M2ZlMDQ1Mjk4NzRlMjcuLjEwZDY5ZTg4ZmFiOTY5OWE0YTdk
MWNjMzA1NjQ1ZjM0ZWU1MDIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVy
UmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCogYm94LAogICAg
IGlmICghbV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdp
b25JbmZvLmFkZChib3gsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8UmVu
ZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJv
eCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYm94SW5mbykKICAgICAgICAg
KmJveEluZm8gPSBSZW5kZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxS
aWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwogICAgIGVsc2UKQEAgLTMx
OCw4ICszMTgsOCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0
eWxlKCkKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwog
ICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7CiAgICAgICAgIGlm
IChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBv
YmplY3RTdHlsZUluUmVnaW9uID0gaXQtPnZhbHVlLnN0eWxlOwotICAgICAgICAgICAgQVNTRVJU
KGl0LT52YWx1ZS5jYWNoZWQpOworICAgICAgICAgICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IGl0
LT5zZWNvbmQuc3R5bGU7CisgICAgICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5jYWNoZWQpOwog
ICAgICAgICAgICAgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lv
bihvYmplY3QpOwpAQCAtMzM3LDEyICszMzcsMTIgQEAgdm9pZCBSZW5kZXJSZWdpb246OnJlc3Rv
cmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgpCiAKICAgICBSZW5kZXJPYmplY3RSZWdpb25T
dHlsZU1hcCB0ZW1wOwogICAgIGZvciAoUmVuZGVyT2JqZWN0UmVnaW9uU3R5bGVNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLmJlZ2luKCksIGVuZCA9IG1fcmVu
ZGVyT2JqZWN0UmVnaW9uU3R5bGUuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KGl0ZXIt
PmtleSk7CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gY29uc3RfY2FzdDxSZW5kZXJP
YmplY3QqPihpdGVyLT5maXJzdCk7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gb2JqZWN0
UmVnaW9uU3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IGl0ZXItPnZhbHVlLnN0eWxlOworICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFsU3R5bGUgPSBpdGVyLT5zZWNvbmQuc3R5bGU7
CiAgICAgICAgIG9iamVjdC0+c2V0U3R5bGVJbnRlcm5hbChvYmplY3RPcmlnaW5hbFN0eWxlKTsK
IAotICAgICAgICBib29sIHNob3VsZENhY2hlUmVnaW9uU3R5bGUgPSBpdGVyLT52YWx1ZS5jYWNo
ZWQ7CisgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSA9IGl0ZXItPnNlY29uZC5j
YWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2FjaGVSZWdpb25TdHlsZSkgewogICAgICAgICAg
ICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQgY2FjaGUgdGhlIGNvbXB1dGVkIHN0eWxlIGlu
IHJlZ2lvbi4KICAgICAgICAgICAgIHVuc2lnbmVkIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcyA9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eU5vbmU7CkBAIC0zOTgsNyArMzk4LDcg
QEAgdm9pZCBSZW5kZXJSZWdpb246OmNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24oY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY2hpbGRT
dHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFs
c2U7CiAgICAgICAgIGlmIChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlLmVuZCgpKSB7
Ci0gICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBpdC0+dmFsdWUuc3R5bGU7CisgICAg
ICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBpdC0+c2Vjb25kLnN0eWxlOwogICAgICAgICAg
ICAgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKGNoaWxkLT5pc0Fub255bW91cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCAzOWM4YzM5NGY3MWExMDhjZDEz
MWViNWFiN2I2OGZkN2MxYmFhNmFkLi5lYzVlZDM2MDNkODJkZjEyMDcwYjllMTFkNTlhMWNhODg2
YjI1YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIFJlbmRl
clRhYmxlU2VjdGlvbjo6Y2FjaGVkQ29sbGFwc2VkQm9yZGVyKGNvbnN0IFJlbmRlclRhYmwKICAg
ICBBU1NFUlQodGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpOwogICAgIEhhc2hNYXA8cGFpcjxj
b25zdCBSZW5kZXJUYWJsZUNlbGwqLCBpbnQ+LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZT46Oml0ZXJh
dG9yIGl0ID0gbV9jZWxsc0NvbGxhcHNlZEJvcmRlcnMuZmluZChtYWtlX3BhaXIoY2VsbCwgc2lk
ZSkpOwogICAgIEFTU0VSVChpdCAhPSBtX2NlbGxzQ29sbGFwc2VkQm9yZGVycy5lbmQoKSk7Ci0g
ICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogUmVuZGVy
VGFibGVTZWN0aW9uKiBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA2NDA0ZDJhZmMxNDZlODE1NTgwNWI5ZWFl
ODA4NGIyYTQwYjgxZjM1Li4wYmM5ODA0ZmI3NTliMTFlZDk2YTQwOTEwNmEwMTE2Nzk4YzIwNGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0zODAs
NyArMzgwLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKGludCBjc3NWYWx1
ZUlkKSBjb25zdAogICAgIHsKICAgICAgICAgSGFzaE1hcDxpbnQsIFJHQkEzMj46Oml0ZXJhdG9y
IGl0ID0gbV9zeXN0ZW1Db2xvckNhY2hlLmZpbmQoY3NzVmFsdWVJZCk7CiAgICAgICAgIGlmIChp
dCAhPSBtX3N5c3RlbUNvbG9yQ2FjaGUuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXQtPnZh
bHVlOworICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAgICAgfQogCiAgICAgQ29sb3Ig
Y29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggZWY4OWNj
MTI0YmYyZTM4N2RhMmJkNWMzM2MwM2FkN2MxZGY4NmRiYi4uZTVjOTRiYWYyZTRjMzIzNzA2YjAy
ODA1NzI4NzU5ZDFhNDY5ZDdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcApAQCAtNDQzLDcgKzQ0Myw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91
bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgICAgICAgICBzZWxlY3Rl
ZE9iamVjdHMuc2V0KG9zLCBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0aW9uSW5mbyhvcywgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpKSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvcy0+
Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRl
clZpZXcoKSkgewotICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYg
YmxvY2tJbmZvID0gc2VsZWN0ZWRPYmplY3RzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJ
bmZvID0gc2VsZWN0ZWRPYmplY3RzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0
aW9uSW5mbyhjYiwgY2xpcFRvVmlzaWJsZUNvbnRlbnQpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBJ
bnRSZWN0IFJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250
ZW50KSBjb25zdAogICAgIExheW91dFJlY3Qgc2VsUmVjdDsKICAgICBTZWxlY3Rpb25NYXA6Oml0
ZXJhdG9yIGVuZCA9IHNlbGVjdGVkT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKFNlbGVjdGlvbk1h
cDo6aXRlcmF0b3IgaSA9IHNlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7
Ci0gICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIGluZm8gPSBpLT52YWx1ZS5nZXQoKTsKKyAg
ICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogaW5mbyA9IGktPnNlY29uZC5nZXQoKTsKICAgICAg
ICAgLy8gUmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVjdCgpIGlzIGluIHRoZSBjb29yZGluYXRlcyBv
ZiB0aGUgcmVwYWludENvbnRhaW5lciwgc28gbWFwIHRvIHBhZ2UgY29vcmRpbmF0ZXMuCiAgICAg
ICAgIExheW91dFJlY3QgY3VyclJlY3QgPSBpbmZvLT5yZWN0KCk7CiAgICAgICAgIGlmIChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IGluZm8tPnJlcGFpbnRDb250YWlu
ZXIoKSkgewpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9u
KFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAg
ICAgICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSA9PSBSZXBhaW50TmV3WE9ST2xkKSB7CiAgICAg
ICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwogICAg
ICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIE93blB0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8g
PSBvbGRTZWxlY3RlZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2Nr
SW5mbyA9IG9sZFNlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBhZG9wdFB0cihu
ZXcgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKGNiKSk7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9p
ZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0
UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICAvLyBOb3cgY2xlYXIgdGhlIHNlbGVjdGlvbi4KICAg
ICBTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3Igb2xkT2JqZWN0c0VuZCA9IG9sZFNlbGVjdGVk
T2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKFNlbGVjdGVkT2JqZWN0TWFwOjppdGVyYXRvciBpID0g
b2xkU2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGkgIT0gb2xkT2JqZWN0c0VuZDsgKytpKQotICAg
ICAgICBpLT5rZXktPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uTm9uZSk7Cisg
ICAgICAgIGktPmZpcnN0LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUp
OwogCiAgICAgLy8gc2V0IHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kCiAgICAgbV9zZWxlY3Rpb25T
dGFydCA9IHN0YXJ0OwpAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2Vs
ZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBl
CiAgICAgICAgICAgICBuZXdTZWxlY3RlZE9iamVjdHMuc2V0KG8sIGFkb3B0UHRyKG5ldyBSZW5k
ZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpKSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2Ig
PSBvLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlz
UmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJCbG9ja1NlbGVj
dGlvbkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIp
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQ
dHIobmV3IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyhjYikpOwpAQCAtNTk0LDkgKzU5NCw5IEBA
IHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBz
dGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAKICAgICAvLyBIYXZlIGFueSBvZiB0aGUgb2xkIHNl
bGVjdGVkIG9iamVjdHMgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgbmV3IHNlbGVjdGlvbj8KICAg
ICBmb3IgKFNlbGVjdGVkT2JqZWN0TWFwOjppdGVyYXRvciBpID0gb2xkU2VsZWN0ZWRPYmplY3Rz
LmJlZ2luKCk7IGkgIT0gb2xkT2JqZWN0c0VuZDsgKytpKSB7Ci0gICAgICAgIFJlbmRlck9iamVj
dCogb2JqID0gaS0+a2V5OworICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9IGktPmZpcnN0Owog
ICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRPYmplY3Rz
LmdldChvYmopOwotICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBvbGRJbmZvID0gaS0+dmFs
dWUuZ2V0KCk7CisgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIG9sZEluZm8gPSBpLT5zZWNv
bmQuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW5mbyB8fCBvbGRJbmZvLT5yZWN0KCkgIT0gbmV3
SW5mby0+cmVjdCgpIHx8IG9sZEluZm8tPnN0YXRlKCkgIT0gbmV3SW5mby0+c3RhdGUoKSB8fAog
ICAgICAgICAgICAgKG1fc2VsZWN0aW9uU3RhcnQgPT0gb2JqICYmIG9sZFN0YXJ0UG9zICE9IG1f
c2VsZWN0aW9uU3RhcnRQb3MpIHx8CiAgICAgICAgICAgICAobV9zZWxlY3Rpb25FbmQgPT0gb2Jq
ICYmIG9sZEVuZFBvcyAhPSBtX3NlbGVjdGlvbkVuZFBvcykpIHsKQEAgLTYxMSwxNCArNjExLDE0
IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGlu
dCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAgLy8gQW55IG5ldyBvYmplY3RzIHRoYXQg
cmVtYWluIHdlcmUgbm90IGZvdW5kIGluIHRoZSBvbGQgb2JqZWN0cyBkaWN0LCBhbmQgc28gdGhl
eSBuZWVkIHRvIGJlIHVwZGF0ZWQuCiAgICAgU2VsZWN0ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIG5l
d09iamVjdHNFbmQgPSBuZXdTZWxlY3RlZE9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChTZWxlY3Rl
ZE9iamVjdE1hcDo6aXRlcmF0b3IgaSA9IG5ld1NlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9
IG5ld09iamVjdHNFbmQ7ICsraSkKLSAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICAg
ICAgaS0+c2Vjb25kLT5yZXBhaW50KCk7CiAKICAgICAvLyBIYXZlIGFueSBvZiB0aGUgb2xkIGJs
b2NrcyBjaGFuZ2VkPwogICAgIFNlbGVjdGVkQmxvY2tNYXA6Oml0ZXJhdG9yIG9sZEJsb2Nrc0Vu
ZCA9IG9sZFNlbGVjdGVkQmxvY2tzLmVuZCgpOwogICAgIGZvciAoU2VsZWN0ZWRCbG9ja01hcDo6
aXRlcmF0b3IgaSA9IG9sZFNlbGVjdGVkQmxvY2tzLmJlZ2luKCk7IGkgIT0gb2xkQmxvY2tzRW5k
OyArK2kpIHsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gaS0+a2V5OworICAgICAgICBS
ZW5kZXJCbG9jayogYmxvY2sgPSBpLT5maXJzdDsKICAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rp
b25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuZ2V0KGJsb2NrKTsKLSAgICAgICAg
UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBvbGRJbmZvID0gaS0+dmFsdWUuZ2V0KCk7CisgICAg
ICAgIFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyogb2xkSW5mbyA9IGktPnNlY29uZC5nZXQoKTsK
ICAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJlY3RzKCkgIT0gbmV3SW5mby0+cmVj
dHMoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRlKCkpIHsKICAgICAgICAg
ICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CkBAIC02
MzEsNyArNjMxLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0
KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICAvLyBBbnkgbmV3IGJs
b2NrcyB0aGF0IHJlbWFpbiB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgb2xkIGJsb2NrcyBkaWN0LCBh
bmQgc28gdGhleSBuZWVkIHRvIGJlIHVwZGF0ZWQuCiAgICAgU2VsZWN0ZWRCbG9ja01hcDo6aXRl
cmF0b3IgbmV3QmxvY2tzRW5kID0gbmV3U2VsZWN0ZWRCbG9ja3MuZW5kKCk7CiAgICAgZm9yIChT
ZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBpID0gbmV3U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsg
aSAhPSBuZXdCbG9ja3NFbmQ7ICsraSkKLSAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAg
ICAgICAgaS0+c2Vjb25kLT5yZXBhaW50KCk7CiAKICAgICBtX2ZyYW1lVmlldy0+ZW5kRGVmZXJy
ZWRSZXBhaW50cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAppbmRleCA0ZWNlY2RjOWJkNDk3NmQyM2E4ODNhZDYzMWNlYTMxYTJkMzA2NDE3Li45NTM3ZWRm
NWQyMDg3ZDg1YjM1ZDZmZWM1ZWFmZDc4NmJiZWYwZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNzAsOSArNzAsOSBAQCB2b2lkIFJlbmRlcldpZGdl
dDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRlcygpCiAgICAgICAgIHdpZGdldE5ld1BhcmVu
dE1hcCgpLmNsZWFyKCk7CiAgICAgICAgIFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBlbmQg
PSBtYXAuZW5kKCk7CiAgICAgICAgIGZvciAoV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgV2lkZ2V0KiBj
aGlsZCA9IGl0LT5rZXkuZ2V0KCk7CisgICAgICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmZp
cnN0LmdldCgpOwogICAgICAgICAgICAgU2Nyb2xsVmlldyogY3VycmVudFBhcmVudCA9IGNoaWxk
LT5wYXJlbnQoKTsKLSAgICAgICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVl
OworICAgICAgICAgICAgRnJhbWVWaWV3KiBuZXdQYXJlbnQgPSBpdC0+c2Vjb25kOwogICAgICAg
ICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnRQYXJlbnQpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJl
bW92ZUNoaWxkKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcAppbmRleCBlMjVlM2ViNDhmMjZjNmI2OGNiZGQ5Nzg5YmQ1N2Q1YjM1MGYwMzIwLi45Mjhm
ZTY2N2U0MzNiMjM3MmZiNWMwN2E0ZTc5NThlN2U1Y2QzMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC03NTUsOCArNzU1LDggQEAgdm9pZCBSb290
SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCogYm94LCBHbHlwaE92
ZXJmbG93QW5kRmFsbGIKICAgICBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93ID0gMDsKICAg
ICBpZiAoYm94LT5pc1RleHQoKSkgewogICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKHRvSW5saW5lVGV4dEJv
eChib3gpKTsKLSAgICAgICAgdXNlZEZvbnRzID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkg
PyAwIDogJml0LT52YWx1ZS5maXJzdDsKLSAgICAgICAgZ2x5cGhPdmVyZmxvdyA9IGl0ID09IHRl
eHRCb3hEYXRhTWFwLmVuZCgpID8gMCA6ICZpdC0+dmFsdWUuc2Vjb25kOworICAgICAgICB1c2Vk
Rm9udHMgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IDAgOiAmaXQtPnNlY29uZC5maXJz
dDsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdyA9IGl0ID09IHRleHRCb3hEYXRhTWFwLmVuZCgpID8g
MCA6ICZpdC0+c2Vjb25kLnNlY29uZDsKICAgICB9CiAgICAgICAgIAogICAgIGJvb2wgaW5jbHVk
ZUxlYWRpbmcgPSBpbmNsdWRlTGVhZGluZ0ZvckJveChib3gpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9zaXRpb25DYWNoZS5oCmluZGV4IGI3Y2Q3ZTA4NWU3Zjli
ZWRiNTI4ZjYyZGVlZjU3YTdiYjhhYTViZTEuLmJiMzk4Nzc3MjFkYTcwNWMzN2JkM2I4ODE5MDI0
Y2QyN2UzNmU1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9WZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVmVydGljYWxQ
b3NpdGlvbkNhY2hlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBI
YXNoTWFwPFJlbmRlck9iamVjdCosIGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwVG9DaGVj
ay5maW5kKHJlbmRlcmVyKTsKICAgICAgICAgaWYgKGl0ID09IG1hcFRvQ2hlY2suZW5kKCkpCiAg
ICAgICAgICAgICByZXR1cm4gUG9zaXRpb25VbmRlZmluZWQ7Ci0gICAgICAgIHJldHVybiBpdC0+
dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogICAgIH0KICAgICAKICAgICB2b2lk
IHNldChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBp
bnQgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNo
YXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHAK
aW5kZXggYWJkMzU1ZWI0MTkwMjU5ZjA2YmFiNzlmOWVjMTBhZDM3YTlmMjdiYi4uMTU0NzA2NmIy
OWRkNGE3M2Q5OGZhYjMzMTZjNmQwMjNlODZlMDUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9XcmFwU2hhcGVJbmZvLmNwcApAQCAtNjAsNyArNjAsNyBAQCBXcmFwU2hhcGVJbmZvOjp+
V3JhcFNoYXBlSW5mbygpCiBXcmFwU2hhcGVJbmZvKiBXcmFwU2hhcGVJbmZvOjplbnN1cmVXcmFw
U2hhcGVJbmZvRm9yUmVuZGVyQmxvY2soUmVuZGVyQmxvY2sqIGJsb2NrKQogewogICAgIFdyYXBT
aGFwZUluZm9NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSB3cmFwU2hhcGVJbmZvTWFwKCkuYWRkKGJs
b2NrLCBjcmVhdGUoYmxvY2spKTsKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIFdy
YXBTaGFwZUluZm8qIFdyYXBTaGFwZUluZm86OndyYXBTaGFwZUluZm9Gb3JSZW5kZXJCbG9jayhj
b25zdCBSZW5kZXJCbG9jayogYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCAyMzcxZDFhYmY5Yzk2YmE0YTQ2
MjhiOTNjYTQ5NDJhZjdhMDdiOTVmLi40NTRmN2FhNmQwN2I2YmQzMTIzMjM2YmVmY2E0OTllY2Zl
NWEwN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFJlbmRlclNWR0lubGlu
ZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQgcG9zaXRpb24pIGNvbnN0CiAg
ICAgaWYgKGl0ID09IG1fbGF5b3V0QXR0cmlidXRlcy5jaGFyYWN0ZXJEYXRhTWFwKCkuZW5kKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBpdC0+dmFsdWUueCAhPSBTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpIHx8IGl0LT52YWx1ZS55ICE9IFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQu
eCAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpIHx8IGl0LT5zZWNvbmQu
eSAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpOwogfQogCiBWaXNpYmxl
UG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDM4MzJiMmIwMWUzMDUwYTVmODQz
YzY1ZjFjZGRjYjBlYzE1M2E5NjUuLmVlNmE0OWRiODhhOWZkNmM3NzA1ZmExOGI2ZWVjYTg4MTZl
MWEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIHBy
aW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
Kj4ob2JqZWN0LT5ub2RlKCkpOwogCiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gaXQtPnZhbHVlOworICAgICAgICBGaWx0ZXJE
YXRhKiBmaWx0ZXJEYXRhID0gaXQtPnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJEYXRhLT5i
dWlsZGVkKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjbwogICAgICAgICBidWlsZGVyLT5jbGVhclJlc3VsdHNSZWN1cnNp
dmUoZWZmZWN0KTsKIAogICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVu
LgotICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGl0LT5rZXksIFJlcGFpbnRJbnZh
bGlkYXRpb24pOworICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGl0LT5maXJzdCwg
UmVwYWludEludmFsaWRhdGlvbik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRl
eCAzMGNlMWI4Y2I0Zjk3OGMwMGRjYmRhMTdkZmI1NTcyM2NmYzU4MDgxLi41OGUwMDc5YjIyY2Iy
YzVjMTdkOGYyZDRkNzNjYmJhMjEwYWE5YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTE0
MCw3ICsxNDAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKgogICAgIGlmIChncmFkaWVudFVu
aXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYm
IG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRk
KG9iamVjdCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIE93blB0cjxHcmFkaWVudERh
dGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmplY3QsIG51bGxwdHIpLml0
ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCiAgICAgICAgIGdyYWRpZW50
RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5k
ZXggM2ExODgyYWNmODIxNzIyODZiMjNiYjU0MmJlNDA2NmEzYmFjY2NjNy4uYjRhZjk5OTE4NTUy
YTE1NDg1MmJiMmE0YjQ3YjAzMGVkYTZhNTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtODQs
NyArODQsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZShS
ZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKG1fYXR0cmlidXRlcy5w
YXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVybk1h
cC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgT3duUHRyPFBhdHRl
cm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3BhdHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0ciku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXBhdHRlcm5EYXRhKQogICAgICAgICBwYXR0ZXJu
RGF0YSA9IGFkb3B0UHRyKG5ldyBQYXR0ZXJuRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggOGI0OGNmNTNlNzk5
YTBiN2RlMmI1NGE0YzcxNTJlMDkyNzUzOWMwMi4uMjk3YzA3YjZhZDQwOWEyN2U2MzU4NTYwMDBj
OWFkNGI5MDViNDM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgU1ZHUmVzb3Vy
Y2VzQ2FjaGU6OnJlc291cmNlRGVzdHJveWVkKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBy
ZXNvdXJjZSkKIAogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgU1ZHUmVzb3VyY2Vz
Kj46Oml0ZXJhdG9yIGVuZCA9IGNhY2hlLT5tX2NhY2hlLmVuZCgpOwogICAgIGZvciAoSGFzaE1h
cDxjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdSZXNvdXJjZXMqPjo6aXRlcmF0b3IgaXQgPSBjYWNo
ZS0+bV9jYWNoZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaXQtPnZhbHVl
LT5yZXNvdXJjZURlc3Ryb3llZChyZXNvdXJjZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPnJlc291
cmNlRGVzdHJveWVkKHJlc291cmNlKTsKIAogICAgICAgICAvLyBNYXJrIHVzZXJzIG9mIGRlc3Ry
b3llZCByZXNvdXJjZXMgYXMgcGVuZGluZyByZXNvbHV0aW9uIGJhc2VkIG9uIHRoZSBpZCBvZiB0
aGUgb2xkIHJlc291cmNlLgogICAgICAgICBFbGVtZW50KiByZXNvdXJjZUVsZW1lbnQgPSB0b0Vs
ZW1lbnQocmVzb3VyY2UtPm5vZGUoKSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQqIGNsaWVu
dEVsZW1lbnQgPSB0b1NWR1N0eWxlZEVsZW1lbnQoaXQtPmtleS0+bm9kZSgpKTsKKyAgICAgICAg
U1ZHU3R5bGVkRWxlbWVudCogY2xpZW50RWxlbWVudCA9IHRvU1ZHU3R5bGVkRWxlbWVudChpdC0+
Zmlyc3QtPm5vZGUoKSk7CiAgICAgICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9u
cyA9IGNsaWVudEVsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKIAog
ICAgICAgICBleHRlbnNpb25zLT5hZGRQZW5kaW5nUmVzb3VyY2UocmVzb3VyY2VFbGVtZW50LT5m
YXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRBdHRyKSwgY2xpZW50RWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRl
eCA1NDZmZWMyNmNlNjk4MWFjZDFmY2Q3YWJlMGEwYTk4MzhjNzBiNDNjLi4zNGU5M2EwMmVmNzQz
MmUzYzI2ZWYyMzYwZDFjZjNmZDQzN2U0MTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBzd2FwSXRlbXNJbkxheW91dEF0dHJpYnV0ZXMoU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXMqIGZpcnN0QXR0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmaXJzdFBy
ZXNlbnQgJiYgbGFzdFByZXNlbnQpIHsKLSAgICAgICAgc3RkOjpzd2FwKGl0Rmlyc3QtPnZhbHVl
LCBpdExhc3QtPnZhbHVlKTsKKyAgICAgICAgc3RkOjpzd2FwKGl0Rmlyc3QtPnNlY29uZCwgaXRM
YXN0LT5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGZpcnN0UHJl
c2VudCAmJiAhbGFzdFByZXNlbnQpIHsKLSAgICAgICAgbGFzdEF0dHJpYnV0ZXMtPmNoYXJhY3Rl
ckRhdGFNYXAoKS5zZXQobGFzdFBvc2l0aW9uICsgMSwgaXRGaXJzdC0+dmFsdWUpOworICAgICAg
ICBsYXN0QXR0cmlidXRlcy0+Y2hhcmFjdGVyRGF0YU1hcCgpLnNldChsYXN0UG9zaXRpb24gKyAx
LCBpdEZpcnN0LT5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gIWZp
cnN0UHJlc2VudCAmJiBsYXN0UHJlc2VudAotICAgIGZpcnN0QXR0cmlidXRlcy0+Y2hhcmFjdGVy
RGF0YU1hcCgpLnNldChmaXJzdFBvc2l0aW9uICsgMSwgaXRMYXN0LT52YWx1ZSk7CisgICAgZmly
c3RBdHRyaWJ1dGVzLT5jaGFyYWN0ZXJEYXRhTWFwKCkuc2V0KGZpcnN0UG9zaXRpb24gKyAxLCBp
dExhc3QtPnNlY29uZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kRmlyc3RBbmRMYXN0
QXR0cmlidXRlc0luVmVjdG9yKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyo+JiBhdHRy
aWJ1dGVzLCBSZW5kZXJTVkdJbmxpbmVUZXh0KiBmaXJzdENvbnRleHQsIFJlbmRlclNWR0lubGlu
ZVRleHQqIGxhc3RDb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcAppbmRleCA2N2ZhMGZhOTgyYWQ2MGJh
NzI2NTFhODQ1NDk1ODFmN2ViNTBjZDBhLi5hOTI1OTZjZWVlZGJlMjVhZjc3N2RmNGE0YzgzY2Qz
ZWY5N2I5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcApAQCAtNjIsOCArNjIsOCBAQCB2b2lkIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzOjpkdW1wKCkgY29uc3QKICAgICBmcHJpbnRmKHN0ZGVyciwgImNv
bnRleHQ6ICVwXG4iLCBtX2NvbnRleHQpOwogICAgIGNvbnN0IFNWR0NoYXJhY3RlckRhdGFNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hhcmFjdGVyRGF0YU1hcC5lbmQoKTsKICAgICBmb3Ig
KFNWR0NoYXJhY3RlckRhdGFNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jaGFyYWN0ZXJEYXRh
TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25zdCBTVkdDaGFyYWN0
ZXJEYXRhJiBkYXRhID0gaXQtPnZhbHVlOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAtLS0+
IHBvcz0laSwgZGF0YT17IiwgaXQtPmtleSk7CisgICAgICAgIGNvbnN0IFNWR0NoYXJhY3RlckRh
dGEmIGRhdGEgPSBpdC0+c2Vjb25kOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAtLS0+IHBv
cz0laSwgZGF0YT17IiwgaXQtPmZpcnN0KTsKICAgICAgICAgZHVtcFNWR0NoYXJhY3RlckRhdGFN
YXBWYWx1ZSgieCIsIGRhdGEueCk7CiAgICAgICAgIGR1bXBTVkdDaGFyYWN0ZXJEYXRhTWFwVmFs
dWUoInkiLCBkYXRhLnkpOwogICAgICAgICBkdW1wU1ZHQ2hhcmFjdGVyRGF0YU1hcFZhbHVlKCJk
eCIsIGRhdGEuZHgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCmluZGV4IGI5NjlhNTMx
OWU4MGFjNzg3MmE1ZTQxZDhkZTc3NDMwNDhiZGM0M2IuLmJlMmExMmZlOTYwYjc5MjQ4MzEzZGYz
Njk5MTQ1MDNmZWU5YTI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRD
aGFyYWN0ZXJEYXRhTWFwKFJlbmRlclNWR1RleHQqIHRleHRSbwogICAgICAgICBkYXRhLnkgPSAw
OwogICAgICAgICBtX2NoYXJhY3RlckRhdGFNYXAuc2V0KDEsIGRhdGEpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIFNWR0NoYXJhY3RlckRhdGEmIGRhdGEgPSBpdC0+dmFsdWU7CisgICAgICAgIFNW
R0NoYXJhY3RlckRhdGEmIGRhdGEgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAoZGF0YS54ID09
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCkpCiAgICAgICAgICAgICBkYXRh
LnggPSAwOwogICAgICAgICBpZiAoZGF0YS55ID09IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjpl
bXB0eVZhbHVlKCkpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKGNvbnN0IFRleHRQb3NpdGlvbiYgcG8K
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdXBkYXRlQ2hhcmFj
dGVyRGF0YShpLCBsYXN0Um90YXRpb24sIGl0LT52YWx1ZSwgbGVuZ3RoQ29udGV4dCwgeExpc3RQ
dHIsIHlMaXN0UHRyLCBkeExpc3RQdHIsIGR5TGlzdFB0ciwgcm90YXRlTGlzdFB0cik7CisgICAg
ICAgIHVwZGF0ZUNoYXJhY3RlckRhdGEoaSwgbGFzdFJvdGF0aW9uLCBpdC0+c2Vjb25kLCBsZW5n
dGhDb250ZXh0LCB4TGlzdFB0ciwgeUxpc3RQdHIsIGR4TGlzdFB0ciwgZHlMaXN0UHRyLCByb3Rh
dGVMaXN0UHRyKTsKICAgICB9CiAKICAgICAvLyBUaGUgbGFzdCByb3RhdGlvbiB2YWx1ZSBhbHdh
eXMgc3BhbnMgdGhlIHdob2xlIHNjb3BlLgpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpmaWxsQ2hhcmFjdGVyRGF0YU1hcChjb25zdCBUZXh0
UG9zaXRpb24mIHBvCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAg
IGl0LT52YWx1ZS5yb3RhdGUgPSBsYXN0Um90YXRpb247CisgICAgICAgIGl0LT5zZWNvbmQucm90
YXRlID0gbGFzdFJvdGF0aW9uOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKaW5kZXggYmEyYjc2MzlkM2Y5
NWI3Mzg5NDc1ZmEyZGMwMGM5YTZhYTg1YjMxNS4uNWM1NDliMjFjODc1MjA4NDcyNDZhZjI1NGZk
MDU5ZjJlM2I5YjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBTVkdUZXh0
TGF5b3V0RW5naW5lOjpsYXlvdXRUZXh0T25MaW5lT3JQYXRoKFNWR0lubGluZVRleHRCb3gqIHRl
eHRCb3gsIFJlbmQKICAgICAgICAgU1ZHQ2hhcmFjdGVyRGF0YSBkYXRhOwogICAgICAgICBTVkdD
aGFyYWN0ZXJEYXRhTWFwOjppdGVyYXRvciBpdCA9IGNoYXJhY3RlckRhdGFNYXAuZmluZChtX2xv
Z2ljYWxDaGFyYWN0ZXJPZmZzZXQgKyAxKTsKICAgICAgICAgaWYgKGl0ICE9IGNoYXJhY3RlckRh
dGFNYXAuZW5kKCkpCi0gICAgICAgICAgICBkYXRhID0gaXQtPnZhbHVlOworICAgICAgICAgICAg
ZGF0YSA9IGl0LT5zZWNvbmQ7CiAKICAgICAgICAgZmxvYXQgeCA9IGRhdGEueDsKICAgICAgICAg
ZmxvYXQgeSA9IGRhdGEueTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAwNWQ4MDVmNzdmMmY5ZDI5MDAyNjFi
MGI2MGNhNjg2ZTFlYTBjYmExLi41YWM4NWNiYmU4NDc3MTBmZDVhZTFlMjJmZjNmMzM2MjExNmE4
NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmlj
c0J1aWxkZXI6Om1lYXN1cmVUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwg
TWVhc3UKICAgICAgICAgICAgIGlmIChkYXRhLT5hbGxDaGFyYWN0ZXJzTWFwKSB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgU1ZHQ2hhcmFjdGVyRGF0YU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBk
YXRhLT5hbGxDaGFyYWN0ZXJzTWFwLT5maW5kKGRhdGEtPnZhbHVlTGlzdFBvc2l0aW9uICsgbV90
ZXh0UG9zaXRpb24gLSBkYXRhLT5za2lwcGVkQ2hhcmFjdGVycyAtIHN1cnJvZ2F0ZVBhaXJDaGFy
YWN0ZXJzICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGl0ICE9IGRhdGEtPmFsbENoYXJhY3Rl
cnNNYXAtPmVuZCgpKQotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLT5jaGFyYWN0ZXJE
YXRhTWFwKCkuc2V0KG1fdGV4dFBvc2l0aW9uICsgMSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcy0+Y2hhcmFjdGVyRGF0YU1hcCgpLnNldChtX3RleHRQb3NpdGlv
biArIDEsIGl0LT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGV4dE1ldHJp
Y3NWYWx1ZXMtPmFwcGVuZChtX2N1cnJlbnRNZXRyaWNzKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGZjYjEyNmExZDU2ZDVhZmNj
OWFiZWJhNjIxZmIwNzc4ZTMyYjdmZTIuLjQ0MjA5YzZmNTlkMGQyYTFkN2YzM2IyZjExMjlhODdl
OTA0NWU3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luY1RpbWVyRmlyZWQo
VGltZXI8U3RvcmFnZUFyZWFTeW5jPiopCiAgICAgICAgICAgICAgICAgcGFydGlhbFN5bmMgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9pdGVtc1BlbmRpbmdTeW5jLnNldChjaGFuZ2VkX2l0LT5rZXkuaXNvbGF0ZWRDb3B5KCksIGNo
YW5nZWRfaXQtPnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgICAgIG1faXRlbXNQZW5k
aW5nU3luYy5zZXQoY2hhbmdlZF9pdC0+Zmlyc3QuaXNvbGF0ZWRDb3B5KCksIGNoYW5nZWRfaXQt
PnNlY29uZC5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocGFydGlh
bFN5bmMpIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luY1Rp
bWVyRmlyZWQoVGltZXI8U3RvcmFnZUFyZWFTeW5jPiopCiAgICAgICAgICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgcGVuZGluZ19pdCA9IG1faXRlbXNQZW5kaW5nU3luYy5i
ZWdpbigpOwogICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBl
bmRpbmdfZW5kID0gbV9pdGVtc1BlbmRpbmdTeW5jLmVuZCgpOwogICAgICAgICAgICAgZm9yICg7
IHBlbmRpbmdfaXQgIT0gcGVuZGluZ19lbmQ7ICsrcGVuZGluZ19pdCkKLSAgICAgICAgICAgICAg
ICBtX2NoYW5nZWRJdGVtcy5yZW1vdmUocGVuZGluZ19pdC0+a2V5KTsKKyAgICAgICAgICAgICAg
ICBtX2NoYW5nZWRJdGVtcy5yZW1vdmUocGVuZGluZ19pdC0+Zmlyc3QpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCFtX3N5bmNTY2hlZHVsZWQpIHsKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46Oml0ZXJhdG9yIGVuZCA9IGl0ZW1NYXAuZW5kKCk7CiAKICAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICBtX3N0b3JhZ2VBcmVhLT5pbXBvcnRJdGVtKGl0LT5rZXksIGl0
LT52YWx1ZSk7CisgICAgICAgIG1fc3RvcmFnZUFyZWEtPmltcG9ydEl0ZW0oaXQtPmZpcnN0LCBp
dC0+c2Vjb25kKTsKIAogICAgIG1hcmtJbXBvcnRlZCgpOwogfQpAQCAtNDM5LDEzICs0MzksMTMg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogICAg
IGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlbXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIC8vIEJhc2VkIG9uIHRoZSBudWxs
LW5lc3Mgb2YgdGhlIHNlY29uZCBhcmd1bWVudCwgZGVjaWRlIHdoZXRoZXIgdGhpcyBpcyBhbiBp
bnNlcnQgb3IgYSBkZWxldGUuCi0gICAgICAgIFNRTGl0ZVN0YXRlbWVudCYgcXVlcnkgPSBpdC0+
dmFsdWUuaXNOdWxsKCkgPyByZW1vdmUgOiBpbnNlcnQ7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVu
dCYgcXVlcnkgPSBpdC0+c2Vjb25kLmlzTnVsbCgpID8gcmVtb3ZlIDogaW5zZXJ0OwogCi0gICAg
ICAgIHF1ZXJ5LmJpbmRUZXh0KDEsIGl0LT5rZXkpOworICAgICAgICBxdWVyeS5iaW5kVGV4dCgx
LCBpdC0+Zmlyc3QpOwogCiAgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm9u
LW51bGwsIHdlJ3JlIGRvaW5nIGFuIGluc2VydCwgc28gYmluZCBpdCBhcyB0aGUgdmFsdWUuCi0g
ICAgICAgIGlmICghaXQtPnZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcXVlcnkuYmluZEJs
b2IoMiwgaXQtPnZhbHVlKTsKKyAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlzTnVsbCgpKQorICAg
ICAgICAgICAgcXVlcnkuYmluZEJsb2IoMiwgaXQtPnNlY29uZCk7CiAKICAgICAgICAgaW50IHJl
c3VsdCA9IHF1ZXJ5LnN0ZXAoKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25l
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAppbmRleCA0MGUxYTM4ZjFjYTRh
NzlmMGNlMjQ3MDExNTM0N2FkYjkyOWY0OTgzLi44ZTQyZDJmMTc2ZGQzYjExMTJhMDFhNTFkOGRi
NjJmNGIzOGJiYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgU3RyaW5nIFN0b3JhZ2VNYXA6OmtleSh1bnNpZ25lZCBpbmRleCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgc2V0SXRlcmF0b3JUb0luZGV4KGluZGV4KTsKLSAg
ICByZXR1cm4gbV9pdGVyYXRvci0+a2V5OworICAgIHJldHVybiBtX2l0ZXJhdG9yLT5maXJzdDsK
IH0KIAogU3RyaW5nIFN0b3JhZ2VNYXA6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
CkBAIC0xMzMsNyArMTMzLDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpz
ZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHUKIAogICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwg
dmFsdWUpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQgPSB2YWx1ZTsKIAogICAgIGludmFsaWRhdGVJdGVyYXRvcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDQ1MDFiMTFm
YmMxNWNmNDIzOWQwN2ZjMzc0NzY0MTZkYmI3NWVmY2YuLjlkMWFjNTE3YTBlMmU3YjNmMjZiODIz
YjI4OWE1OTM5NThiZGM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25z
dCBTCiAgICAgICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLnJlbGVhc2UoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJldHVybiBpdC0+c2Vjb25kOwogfQogCiBQYXNz
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSgpCiAKICAgICBT
dG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgZW5kID0gbV9zdG9yYWdlQXJlYU1hcC5lbmQoKTsKICAg
ICBmb3IgKFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBpID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdp
bigpOyBpICE9IGVuZDsgKytpKQotICAgICAgICBuZXdOYW1lc3BhY2UtPm1fc3RvcmFnZUFyZWFN
YXAuc2V0KGktPmtleSwgaS0+dmFsdWUtPmNvcHkoKSk7CisgICAgICAgIG5ld05hbWVzcGFjZS0+
bV9zdG9yYWdlQXJlYU1hcC5zZXQoaS0+Zmlyc3QsIGktPnNlY29uZC0+Y29weSgpKTsKICAgICBy
ZXR1cm4gbmV3TmFtZXNwYWNlLnJlbGVhc2UoKTsKIH0KIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKIAogICAgIFN0b3JhZ2VBcmVhTWFwOjpp
dGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwogICAgIGZvciAoU3RvcmFnZUFy
ZWFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Y2xvc2UoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+
Y2xvc2UoKTsKIAogICAgIGlmIChtX3N5bmNNYW5hZ2VyKQogICAgICAgICBtX3N5bmNNYW5hZ2Vy
LT5jbG9zZSgpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9uKCkKIAogICAgIFN0b3JhZ2VBcmVhTWFwOjppdGVy
YXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwogICAgIGZvciAoU3RvcmFnZUFyZWFN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJGb3JPcmlnaW5EZWxldGlvbigpOworICAgICAg
ICBpdC0+c2Vjb25kLT5jbGVhckZvck9yaWdpbkRlbGV0aW9uKCk7CiB9CiAgICAgCiB2b2lkIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzeW5jKCkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzeW5jKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwog
ICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdG9yYWdlQXJlYU1hcC5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+c3luYygpOworICAg
ICAgICBpdC0+c2Vjb25kLT5zeW5jKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggY2NiNjMy
M2U0N2RhODQxYTc2MWNiOTNhMWVjOGVhZDE1NzUwOTZlYy4uY2FjMWFlYTA3ZTA5MGQ3NGUyNWVh
MzQ2MDA5ZjI1YzdkNDY4MGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlQW5pbWF0aW9uRWxlbWVudEZyb21UYXJnZXQoU1ZHU01JTEVsZW1lbnQqIGFu
aQogICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiogPjo6
aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGVkRWxlbWVudHMuZmluZCh0YXJnZXRFbGVtZW50KTsKICAg
ICBBU1NFUlQoaXQgIT0gbV9hbmltYXRlZEVsZW1lbnRzLmVuZCgpKTsKICAgICAKLSAgICBIYXNo
U2V0PFNWR1NNSUxFbGVtZW50Kj4qIGFuaW1hdGlvbkVsZW1lbnRzRm9yVGFyZ2V0ID0gaXQtPnZh
bHVlOworICAgIEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiogYW5pbWF0aW9uRWxlbWVudHNGb3JU
YXJnZXQgPSBpdC0+c2Vjb25kOwogICAgIEFTU0VSVCghYW5pbWF0aW9uRWxlbWVudHNGb3JUYXJn
ZXQtPmlzRW1wdHkoKSk7CiAKICAgICBhbmltYXRpb25FbGVtZW50c0ZvclRhcmdldC0+cmVtb3Zl
KGFuaW1hdGlvbkVsZW1lbnQpOwpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjpyZW1vdmVBbGxBbmltYXRpb25FbGVtZW50c0Zyb21UYXJnZXQoU1ZHRWxlbWVu
dCogdGFyCiAgICAgaWYgKGl0ID09IG1fYW5pbWF0ZWRFbGVtZW50cy5lbmQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+KiBhbmltYXRpb25FbGVtZW50
c0ZvclRhcmdldCA9IGl0LT52YWx1ZTsKKyAgICBIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4qIGFu
aW1hdGlvbkVsZW1lbnRzRm9yVGFyZ2V0ID0gaXQtPnNlY29uZDsKICAgICBWZWN0b3I8U1ZHU01J
TEVsZW1lbnQqPiB0b0JlUmVzZXQ7CiAKICAgICBIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj46Oml0
ZXJhdG9yIGVuZCA9IGFuaW1hdGlvbkVsZW1lbnRzRm9yVGFyZ2V0LT5lbmQoKTsKQEAgLTIxOSw5
ICsyMTksOSBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNl
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNWR1N0eWxlZAogCiAgICAgLy8gVGhlIEhhc2hNYXAg
YWRkIGZ1bmN0aW9uIGxlYXZlcyB0aGUgbWFwIGFsb25lIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0
byB0aGUgZWxlbWVudCBpbiB0aGUKICAgICAvLyBtYXAgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBl
eGlzdHMuIFNvIHdlIGFkZCB3aXRoIGEgdmFsdWUgb2YgMCwgYW5kIGl0IGVpdGhlciBmaW5kcyB0
aGUKLSAgICAvLyBleGlzdGluZyBlbGVtZW50IG9yIGFkZHMgYSBuZXcgb25lIGluIGEgc2luZ2xl
IG9wZXJhdGlvbi4gVGhlICIuaXRlcmF0b3ItPnZhbHVlIiBpZGlvbSBnZXRzCisgICAgLy8gZXhp
c3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRo
ZSAiLml0ZXJhdG9yLT5zZWNvbmQiIGlkaW9tIGdldHMKICAgICAvLyB1cyB0byB0aGUgaXRlcmF0
b3IgZnJvbSBhZGQncyByZXN1bHQsIGFuZCB0aGVuIHRvIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhh
c2ggdGFibGUuCi0gICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3Vy
Y2VzLmFkZChpZCwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgIFNWR1BlbmRpbmdFbGVtZW50cyom
IHNldCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzZXQpCiAgICAgICAgIHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAg
c2V0LT5hZGQoZWxlbWVudCk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgYm9vbCBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmlzRWxlbWVudFBlbmRpbmdSZXNvdXJjZXMoU1ZHU3R5bGVkRWxlbWVudCogZWxl
bWVudCkKIAogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAo
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFNWR1BlbmRpbmdFbGVtZW50cyo+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9IGl0LT52YWx1ZTsKKyAgICAgICAg
U1ZHUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIEFTU0VS
VChlbGVtZW50cyk7CiAKICAgICAgICAgaWYgKGVsZW1lbnRzLT5jb250YWlucyhlbGVtZW50KSkK
QEAgLTI3NCwxMyArMjc0LDEzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVF
bGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMoU1ZHU3R5bGVkRWxlbWVudCoKICAgICAgICAgVmVj
dG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7CiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVzb3Vy
Y2VzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTVkdQZW5kaW5n
RWxlbWVudHMqPjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRz
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwogICAgICAgICAgICAg
QVNTRVJUKCFlbGVtZW50cy0+aXNFbXB0eSgpKTsKIAogICAgICAgICAgICAgZWxlbWVudHMtPnJl
bW92ZShlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChlbGVtZW50cy0+aXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgICAgICAg
ICB0b0JlUmVtb3ZlZC5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGVs
ZW1lbnQtPmNsZWFySGFzUGVuZGluZ1Jlc291cmNlc0lmUG9zc2libGUoKTsKQEAgLTI5NiwxMyAr
Mjk2LDEzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBl
bmRpbmdSZXNvdXJjZXMoU1ZHU3R5bGVkRWxlbWVudCoKICAgICAgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gdG9CZVJlbW92ZWQ7CiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTVkdQZW5k
aW5nRWxlbWVudHMqPjo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3Zh
bC5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZywgU1ZHUGVuZGluZ0Vs
ZW1lbnRzKj46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFNWR1BlbmRpbmdFbGVtZW50cyog
ZWxlbWVudHMgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVs
ZW1lbnRzID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50cyk7CiAgICAg
ICAgICAgICBBU1NFUlQoIWVsZW1lbnRzLT5pc0VtcHR5KCkpOwogCiAgICAgICAgICAgICBlbGVt
ZW50cy0+cmVtb3ZlKGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRzLT5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKGl0LT5rZXkpOworICAgICAg
ICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gV2UgdXNlIHRoZSByZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsIGZ1bmN0
aW9uIGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHNldCBsaWZldGltZSBjb3JyZWN0bHkuCkBA
IC0zNjIsNyArMzYyLDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKICAgICBjb25zdCBIYXNo
TWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4gPiA+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50
KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAgIHJldHVybiBpdC0+c2Vj
b25kLmdldCgpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJl
ZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQqIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVu
dCogcmVmZXJlbmNlZEVsZW1lbnQpCkBAIC0zODYsOCArMzg2LDggQEAgdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KFNWR0VsZW1l
bnQqIHJlZmUKIAogICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0Vs
ZW1lbnQqPiA+ID46Oml0ZXJhdG9yIGVuZCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbmQoKTsK
ICAgICBmb3IgKEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQq
PiA+ID46Oml0ZXJhdG9yIGl0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCA9IGl0
LT5rZXk7Ci0gICAgICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiByZWZlcmVuY2luZ0VsZW1lbnRz
ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVu
dCA9IGl0LT5maXJzdDsKKyAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIHJlZmVyZW5jaW5n
RWxlbWVudHMgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQq
Pjo6aXRlcmF0b3Igc2V0SXQgPSByZWZlcmVuY2luZ0VsZW1lbnRzLT5maW5kKHJlZmVyZW5jaW5n
RWxlbWVudCk7CiAgICAgICAgIGlmIChzZXRJdCA9PSByZWZlcmVuY2luZ0VsZW1lbnRzLT5lbmQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDA4LDEwICs0MDgsMTAgQEAgdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KFNW
R0VsZW1lbnQqIHJlZmUKICAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxT
VkdFbGVtZW50Kj4gPiA+OjppdGVyYXRvciBpdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5k
KHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50RGVwZW5kZW5jaWVz
LmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGl0LT5rZXkgPT0gcmVmZXJlbmNl
ZEVsZW1lbnQpOworICAgIEFTU0VSVChpdC0+Zmlyc3QgPT0gcmVmZXJlbmNlZEVsZW1lbnQpOwog
ICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4gdG9CZU5vdGlmaWVkOwogCi0gICAgSGFzaFNldDxTVkdF
bGVtZW50Kj4qIHJlZmVyZW5jaW5nRWxlbWVudHMgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgSGFz
aFNldDxTVkdFbGVtZW50Kj4qIHJlZmVyZW5jaW5nRWxlbWVudHMgPSBpdC0+c2Vjb25kLmdldCgp
OwogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+OjppdGVyYXRvciBzZXRFbmQgPSByZWZlcmVuY2lu
Z0VsZW1lbnRzLT5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudCo+OjppdGVyYXRv
ciBzZXRJdCA9IHJlZmVyZW5jaW5nRWxlbWVudHMtPmJlZ2luKCk7IHNldEl0ICE9IHNldEVuZDsg
KytzZXRJdCkKICAgICAgICAgdG9CZU5vdGlmaWVkLmFwcGVuZCgqc2V0SXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCmluZGV4IGIwMjEyZDdiYzQ1M2VhNDdiMmNlZjkxNzcxMjEyNGM3ODNi
MmM4YjcuLjFjMDljNjE5YjYxZmQ4MmU0ODhlYjBkNTE2MjQyOGQ4ZTRhMWYyMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgU1ZHRWxlbWVudDo6flNWR0Vs
ZW1lbnQoKQogICAgICAgICBTVkdFbGVtZW50UmFyZURhdGE6OlNWR0VsZW1lbnRSYXJlRGF0YU1h
cDo6aXRlcmF0b3IgaXQgPSByYXJlRGF0YU1hcC5maW5kKHRoaXMpOwogICAgICAgICBBU1NFUlQo
aXQgIT0gcmFyZURhdGFNYXAuZW5kKCkpOwogCi0gICAgICAgIFNWR0VsZW1lbnRSYXJlRGF0YSog
cmFyZURhdGEgPSBpdC0+dmFsdWU7CisgICAgICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogcmFyZURh
dGEgPSBpdC0+c2Vjb25kOwogICAgICAgICByYXJlRGF0YS0+ZGVzdHJveUFuaW1hdGVkU01JTFN0
eWxlUHJvcGVydGllcygpOwogICAgICAgICBpZiAoU1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxl
bWVudCA9IHJhcmVEYXRhLT5jdXJzb3JFbGVtZW50KCkpCiAgICAgICAgICAgICBjdXJzb3JFbGVt
ZW50LT5yZW1vdmVDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCmluZGV4IDBlZmE2YTQyYmIwOTM1Y2JlOTQyNTJl
NjExOTgzOWRjZGFmMmNmZDAuLmIwMzJmMzE1ODI1NmU1ZTNjYzg5MDQ1MGNiYTg2ODBiMDdlNGZm
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBk
YXRlQW5pbWF0aW9ucyhTTUlMVGltZSBlbGFwc2VkLCBib29sIHNlZWtUb1RpbWUpCiAgICAgVmVj
dG9yPFNWR1NNSUxFbGVtZW50Kj4gYW5pbWF0aW9uc1RvQXBwbHk7CiAgICAgUmVzdWx0RWxlbWVu
dE1hcDo6aXRlcmF0b3IgZW5kID0gcmVzdWx0c0VsZW1lbnRzLmVuZCgpOwogICAgIGZvciAoUmVz
dWx0RWxlbWVudE1hcDo6aXRlcmF0b3IgaXQgPSByZXN1bHRzRWxlbWVudHMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb24gPSBpdC0+
dmFsdWUuZ2V0KCk7CisgICAgICAgIFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb24gPSBpdC0+c2Vj
b25kLmdldCgpOwogICAgICAgICBpZiAoY29udHJpYnV0aW5nRWxlbWVudHMuY29udGFpbnMoYW5p
bWF0aW9uKSkKICAgICAgICAgICAgIGFuaW1hdGlvbnNUb0FwcGx5LmFwcGVuZChhbmltYXRpb24p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNw
cAppbmRleCBhNDBkY2FiYzk5OTBjZGMwZTJlZjcwODZhZWYyOGIzZGNkY2U4NTlmLi42OTNlZTJh
OGZmZjVjN2YzNzIyZmI0NmM5ZmQwYjU1YjVjZDNhZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC00NCwxMSArNDQsMTEgQEAgU1ZHSW1h
Z2VDYWNoZTo6flNWR0ltYWdlQ2FjaGUoKQogCiAgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBl
bmQgPSBtX2ltYWdlRGF0YU1hcC5lbmQoKTsKICAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0
b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgLy8gQ2hlY2tzIGlmIHRoZSBjbGllbnQgKGl0LT5rZXkpIGlzIHN0aWxsIHZhbGlkLiBUaGUg
Y2xpZW50IHNob3VsZCByZW1vdmUgaXRzZWxmIGZyb20gdGhpcworICAgICAgICAvLyBDaGVja3Mg
aWYgdGhlIGNsaWVudCAoaXQtPmZpcnN0KSBpcyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91
bGQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoaXMKICAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBl
bmQgb2YgbGlmZSwgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24g
cHVyZSB2aXJ0dWFsCiAgICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNo
LgotICAgICAgICBBU1NFUlQoaXQtPmtleS0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVk
SW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZS5i
dWZmZXI7CisgICAgICAgIEFTU0VSVChpdC0+Zmlyc3QtPnJlc291cmNlQ2xpZW50VHlwZSgpID09
IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CisgICAgICAgIGRlbGV0ZSBpdC0+
c2Vjb25kLmJ1ZmZlcjsKICAgICB9CiAKICAgICBtX2ltYWdlRGF0YU1hcC5jbGVhcigpOwpAQCAt
NjMsNyArNjMsNyBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNoZShj
b25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50KQogICAgIGlmIChpdCA9PSBtX2ltYWdlRGF0
YU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGVsZXRlIGl0LT52YWx1ZS5idWZm
ZXI7CisgICAgZGVsZXRlIGl0LT5zZWNvbmQuYnVmZmVyOwogICAgIG1faW1hZ2VEYXRhTWFwLnJl
bW92ZShpdCk7CiB9CiAKQEAgLTgwLDE0ICs4MCwxNCBAQCBTVkdJbWFnZUNhY2hlOjpTaXplQW5k
U2NhbGVzIFNWR0ltYWdlQ2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMoY29uc3QgQ2FjaGVk
SQogICAgIFNpemVBbmRTY2FsZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zaXplQW5kU2Nh
bGVzTWFwLmZpbmQoY2xpZW50KTsKICAgICBpZiAoaXQgPT0gbV9zaXplQW5kU2NhbGVzTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm4gU2l6ZUFuZFNjYWxlcygpOwotICAgIHJldHVybiBpdC0+dmFs
dWU7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6aW1h
Z2VDb250ZW50Q2hhbmdlZCgpCiB7CiAgICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBt
X2ltYWdlRGF0YU1hcC5lbmQoKTsKICAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52
YWx1ZS5pbWFnZU5lZWRzVXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgaXQtPnNlY29uZC5pbWFnZU5l
ZWRzVXBkYXRlID0gdHJ1ZTsKIAogICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgbGF5
b3V0LCBzdGFydCByZWRyYXdpbmcgZGlydHkKICAgICAvLyBpbWFnZXMgb24gYSB0aW1lcjsgb3Ro
ZXJ3aXNlIGl0J3Mgc2FmZSB0byBkcmF3IGltbWVkaWF0ZWx5LgpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3KCkKIHsKICAgICBJbWFnZURhdGFNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwogICAgIGZvciAoSW1hZ2VEYXRhTWFwOjpp
dGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+dmFsdWU7CisgICAgICAgIEltYWdlRGF0YSYg
ZGF0YSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlmICghZGF0YS5pbWFnZU5lZWRzVXBkYXRlKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIElmIHRoZSBjb250ZW50IGNoYW5nZWQg
d2UgcmVkcmF3IHVzaW5nIG91ciBleGlzdGluZyBJbWFnZUJ1ZmZlci4KQEAgLTEzOSw5ICsxMzks
OSBAQCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcgogICAgIGlmIChzaXplSXQgPT0gbV9zaXplQW5k
U2NhbGVzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCi0g
ICAgSW50U2l6ZSBzaXplID0gc2l6ZUl0LT52YWx1ZS5zaXplOwotICAgIGZsb2F0IHpvb20gPSBz
aXplSXQtPnZhbHVlLnpvb207Ci0gICAgZmxvYXQgc2NhbGUgPSBzaXplSXQtPnZhbHVlLnNjYWxl
OworICAgIEludFNpemUgc2l6ZSA9IHNpemVJdC0+c2Vjb25kLnNpemU7CisgICAgZmxvYXQgem9v
bSA9IHNpemVJdC0+c2Vjb25kLnpvb207CisgICAgZmxvYXQgc2NhbGUgPSBzaXplSXQtPnNlY29u
ZC5zY2FsZTsKIAogICAgIC8vIEZJWE1FICg4NTMzNSk6IFRoaXMgbmVlZHMgdG8gdGFrZSBDU1Mg
dHJhbnNmb3JtIHNjYWxlIGludG8gYWNjb3VudCBhcyB3ZWxsLgogICAgIFBhZ2UqIHBhZ2UgPSBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEltYWdlKiBT
VkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiByCiAgICAgLy8gTG9va3VwIGltYWdlIGZvciBjbGllbnQgaW4gY2FjaGUg
YW5kIGV2ZW50dWFsbHkgdXBkYXRlIGl0LgogICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2ltYWdlRGF0YU1hcC5maW5kKGNsaWVudCk7CiAgICAgaWYgKGl0ICE9IG1faW1hZ2VEYXRh
TWFwLmVuZCgpKSB7Ci0gICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnNlY29uZDsKIAogICAgICAgICAvLyBDb21tb24gY2Fz
ZTogaW1hZ2Ugc2l6ZSAmIHpvb20gcmVtYWluZWQgdGhlIHNhbWUuCiAgICAgICAgIGlmIChkYXRh
LnNpemVBbmRTY2FsZXMuc2l6ZSA9PSBzaXplICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy56b29tID09
IHpvb20gJiYgZGF0YS5zaXplQW5kU2NhbGVzLnNjYWxlID09IHNjYWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmlu
ZGV4IDE5MTU4MGRkOGFiZTU5ZjUxNzk4NDc4OWZlZjNkZjlkMWFiYzZjMjEuLjQ0ZDMyMjdiODNl
OWI4NzE4ZTc5ZDhjMTRjOWUzYmUzYTZhZjYzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gT25seSBhbGxvd2VkIGZvciBlZmZlY3Rz
IGJlbG9uZ3MgdG8gdGhpcyBidWlsZGVyLgogICAgICAgICBBU1NFUlQobV9lZmZlY3RSZWZlcmVu
Y2VzLmNvbnRhaW5zKGVmZmVjdCkpOwotICAgICAgICByZXR1cm4gbV9lZmZlY3RSZWZlcmVuY2Vz
LmZpbmQoZWZmZWN0KS0+dmFsdWU7CisgICAgICAgIHJldHVybiBtX2VmZmVjdFJlZmVyZW5jZXMu
ZmluZChlZmZlY3QpLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgLy8gUmVxdWlyZWQgdG8gY2hhbmdl
IHRoZSBhdHRyaWJ1dGVzIG9mIGEgZmlsdGVyIGR1cmluZyBhbiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
LgpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID46Oml0ZXJhdG9yIGVuZCA9IG1fYnVpbHRp
bkVmZmVjdHMuZW5kKCk7CiAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yID0gbV9idWlsdGluRWZmZWN0cy5i
ZWdpbigpOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpCi0gICAgICAgICAgICAgbV9lZmZl
Y3RSZWZlcmVuY2VzLmFkZChpdGVyYXRvci0+dmFsdWUsIEZpbHRlckVmZmVjdFNldCgpKTsKKyAg
ICAgICAgICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGl0ZXJhdG9yLT5zZWNvbmQsIEZpbHRl
ckVmZmVjdFNldCgpKTsKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRy
PEZpbHRlckVmZmVjdD4gPiBtX2J1aWx0aW5FZmZlY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCmluZGV4IDZhMWYwMDk3YjYx
YmMwYjVkYjA5ODAxNTUwOTAzYzE5MDQ0OTY3YmEuLjZkZmRhYzZkZDU3OGFmMzBmNmRlYWI3Y2Qy
NjU4MzYwNDQyZjNhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgICAg
ICBDYWNoZSogY2FjaGUgPSBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKTsKICAgICAgICAgY29uc3Qg
Q2FjaGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQoKTsKICAgICAgICAgZm9yIChD
YWNoZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlID09IHRoaXMpIHsKLSAgICAgICAgICAgICAg
ICBjYWNoZS0+cmVtb3ZlKGl0LT5rZXkpOworICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0g
dGhpcykgeworICAgICAgICAgICAgICAgIGNhY2hlLT5yZW1vdmUoaXQtPmZpcnN0KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmNwcAppbmRleCBjYzQ2Y2NmYTA4MWZmYzg4MzA5YjdlZjIyZDYzZjBmMzRlZmQ4MTdjLi5i
ZTMxY2MzYzdkYTJmNTBmNTFmNjliNTU0NDAyNjVkYjEzNWI1MjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmNwcApAQCAtMzEsNyArMzEsNyBAQCB2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6
OmFkZFByb3BlcnRpZXMoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwKQogewogICAgIEF0
dHJpYnV0ZVRvUHJvcGVydGllc01hcDo6aXRlcmF0b3IgZW5kID0gbWFwLm1fbWFwLmVuZCgpOwog
ICAgIGZvciAoQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5tX21h
cC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUHJvcGVydGllc1ZlY3Rvciog
dmVjdG9yID0gaXQtPnZhbHVlOworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBp
dC0+c2Vjb25kOwogICAgICAgICBBU1NFUlQodmVjdG9yKTsKIAogICAgICAgICBQcm9wZXJ0aWVz
VmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOwpAQCAtODEsMTIgKzgx
LDEyIEBAIHZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50
KTsKICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fbWFwLmVu
ZCgpOwogICAgIGZvciAoQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBpdCA9IG1f
bWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBQcm9wZXJ0aWVzVmVjdG9y
KiB2ZWN0b3IgPSBpdC0+dmFsdWU7CisgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIEFTU0VSVCh2ZWN0b3IpOwogCiAgICAgICAgIFByb3BlcnRp
ZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CiAgICAgICAgIGZv
ciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7
IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKLSAgICAgICAgICAgIHN5bmNocm9u
aXplUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGl0LT5rZXksICp2ZWN0b3JJdCk7CisgICAgICAg
ICAgICBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBpdC0+Zmlyc3QsICp2ZWN0
b3JJdCk7CiAgICAgfSAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAKaW5kZXggYTY5ZmI3MjQ2ZmJjZmFmNmJlNmY4ODg3NzIzN2NiZTFhNmZiNDFjYS4uZDdlYWY1
ZGI0NmVlOGNhNzgwZWI3NjFjOGY0MmI0NzZjOTA1NTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBXb3JrZXJDb250
ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAm
IGFjdGl2ZU9iamVjdHMgPSBhY3RpdmVET01PYmplY3RzKCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0
c01hcDo6Y29uc3RfaXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IGFjdGl2ZU9iamVjdHMuZW5k
KCk7CiAgICAgZm9yIChBY3RpdmVET01PYmplY3RzTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
YWN0aXZlT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikg
ewotICAgICAgICBpZiAoaXRlci0+a2V5LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICAgICAg
aWYgKGl0ZXItPmZpcnN0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1
ZS5jcHAKaW5kZXggMjM1NTI5ZjFmZWI5NzEyOGMzMWQ5NmEzMGRhMGNkZmZiYmU5ZDBlYi4uNTlh
OTMwN2VhYzE3ODRiNjk5YzNmZWQyMGE0NTVhNzlmMDg5MTA3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBX
b3JrZXJFdmVudFF1ZXVlOjpjbG9zZSgpCiB7CiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAgICAg
Zm9yIChFdmVudFRhc2tNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ldmVudFRhc2tNYXAuYmVnaW4oKTsg
aXQgIT0gbV9ldmVudFRhc2tNYXAuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgRXZlbnREaXNwYXRj
aGVyVGFzayogdGFzayA9IGl0LT52YWx1ZTsKKyAgICAgICAgRXZlbnREaXNwYXRjaGVyVGFzayog
dGFzayA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHRhc2stPmNhbmNlbCgpOwogICAgIH0KICAgICBt
X2V2ZW50VGFza01hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggNDVmM2ZjZGJlNjJjNzBhYTAxMDQ1ZmJkYWQxOTY2Mjc3YjYzMjlkZS4uMTExYTY0OWEx
M2U3NmFlZjgzNzBiMTgyYzk1MWNhOWU3NWNmYjIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0
UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3QK
IHsKICAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZXF1ZXN0SGVhZGVy
cy5hZGQobmFtZSwgdmFsdWUpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gIiwgIiArIHZhbHVlOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CiB9CiAKIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CkBA
IC05NDcsMTYgKzk0NywxNiBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNl
SGVhZGVycyhFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgLy8gICAgIDIpIFRoZXJl
J3Mgbm8ga25vd24gaGFybSBpbiBoaWRpbmcgU2V0LUNvb2tpZSBoZWFkZXIgZmllbGRzIGVudGly
ZWx5OyB3ZSBkb24ndAogICAgICAgICAvLyAgICAgICAga25vdyBhbnkgd2lkZWx5IHVzZWQgdGVj
aG5pcXVlIHRoYXQgcmVxdWlyZXMgYWNjZXNzIHRvIHRoZW0uCiAgICAgICAgIC8vICAgICAzKSBG
aXJlZm94IGhhcyBpbXBsZW1lbnRlZCB0aGlzIHBvbGljeS4KLSAgICAgICAgaWYgKGlzU2V0Q29v
a2llSGVhZGVyKGl0LT5rZXkpICYmICFzZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNv
dXJjZXMoKSkKKyAgICAgICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKGl0LT5maXJzdCkgJiYgIXNl
Y3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKCFtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFpc09uQWNjZXNz
Q29udHJvbFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0KGl0LT5rZXkpICYmICFhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKGl0LT5rZXkpKQorICAgICAgICBpZiAoIW1fc2FtZU9y
aWdpblJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3Qo
aXQtPmZpcnN0KSAmJiAhYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldC5jb250YWlucyhpdC0+
Zmlyc3QpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaXQtPmtleSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5maXJzdCk7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT52YWx1ZSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5zZWNvbmQpOwogICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnXHInKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggMDAxOWJj
NDM2NTA0YmEyYjIxZGVmZWZmMzBmNjQ4MGMxZWY5ODFlMy4uM2M5MGUzYjUxNzE4NTlhNTZlODcy
YmI3NjUyZjU5NTk4YTYzN2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CkBAIC03MjMsNyArNzIzLDcgQEAgRnVuY3Rpb24qIGNyZWF0ZUZ1bmN0aW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb24qPiYgYXJncykKICAgICBIYXNoTWFwPFN0
cmluZywgRnVuY3Rpb25SZWM+OjppdGVyYXRvciBmdW5jdGlvbk1hcEl0ZXIgPSBmdW5jdGlvbk1h
cC0+ZmluZChuYW1lKTsKICAgICBGdW5jdGlvblJlYyogZnVuY3Rpb25SZWMgPSAwOwogCi0gICAg
aWYgKGZ1bmN0aW9uTWFwSXRlciA9PSBmdW5jdGlvbk1hcC0+ZW5kKCkgfHwgIShmdW5jdGlvblJl
YyA9ICZmdW5jdGlvbk1hcEl0ZXItPnZhbHVlKS0+YXJncy5jb250YWlucyhhcmdzLnNpemUoKSkp
CisgICAgaWYgKGZ1bmN0aW9uTWFwSXRlciA9PSBmdW5jdGlvbk1hcC0+ZW5kKCkgfHwgIShmdW5j
dGlvblJlYyA9ICZmdW5jdGlvbk1hcEl0ZXItPnNlY29uZCktPmFyZ3MuY29udGFpbnMoYXJncy5z
aXplKCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGZ1
bmN0aW9uUmVjLT5mYWN0b3J5Rm4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4
IDc0OTE4MGRiZTVlZThmOWIxMjJmY2RhMWU2OTgxNjljMDA5ZjhmODAuLmI1ZTZhOTIzNzU5M2I0
YWFhMmEyNDNmMmZmOWQ4NmU1N2Y5MzBhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBib29sIGlzQXhpc05hbWUoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdGVwOjpBeGlzJiB0eXBlKQogICAgIEF4aXNOYW1lc01hcDo6aXRlcmF0b3IgaXQg
PSBheGlzTmFtZXMuZmluZChuYW1lKTsKICAgICBpZiAoaXQgPT0gYXhpc05hbWVzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdHlwZSA9IGl0LT52YWx1ZTsKKyAgICB0eXBlID0g
aXQtPnNlY29uZDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTkxMjk4OGRhNjM4Y2NmODQyZTdiMTdhZjVl
NDM0NDZlOGEzMmQyOC4uZTIxYzgyN2MyNWRiYzVlZmQzMWJlNzA1ZjlmMzZmNTJkZTU0ODI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0yMjUs
OCArMjI1LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqKiB4c2x0UGFyYW1BcnJheUZyb21QYXJhbWV0
ZXJNYXAoWFNMVFByb2Nlc3Nvcjo6UGFyYW1ldGVyTWFwJgogICAgIFhTTFRQcm9jZXNzb3I6OlBh
cmFtZXRlck1hcDo6aXRlcmF0b3IgZW5kID0gcGFyYW1ldGVycy5lbmQoKTsKICAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CiAgICAgZm9yIChYU0xUUHJvY2Vzc29yOjpQYXJhbWV0ZXJNYXA6Oml0ZXJh
dG9yIGl0ID0gcGFyYW1ldGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
cGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBmYXN0U3RyRHVwKGl0LT5rZXkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4KytdID0gZmFzdFN0ckR1cChpdC0+dmFs
dWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4KytdID0gZmFz
dFN0ckR1cChpdC0+Zmlyc3QudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHBhcmFtZXRlckFycmF5
W2luZGV4KytdID0gZmFzdFN0ckR1cChpdC0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0K
ICAgICBwYXJhbWV0ZXJBcnJheVtpbmRleF0gPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yUXQuY3BwCmluZGV4IDBjNDE0MGE4ZDc5ZWRlZmE1MDIzMzVmZTAxODMxMmY0NzVmMTcw
ZjQuLmE2N2M1ZmRlNzZmY2M1NjhjZTNjNGM2OGM2MTA2MGQ0MGJiOTMxMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBYU0xU
UHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmluZyhOb2RlKiBzb3VyY2VOb2RlLCBTdHJpbmcmLCBT
dHJpbmcmIHJlc3VsdFMKIAogICAgIFhTTFRQcm9jZXNzb3I6OlBhcmFtZXRlck1hcDo6aXRlcmF0
b3IgZW5kID0gbV9wYXJhbWV0ZXJzLmVuZCgpOwogICAgIGZvciAoWFNMVFByb2Nlc3Nvcjo6UGFy
YW1ldGVyTWFwOjppdGVyYXRvciBpdCA9IG1fcGFyYW1ldGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIHF1ZXJ5LmJpbmRWYXJpYWJsZShRU3RyaW5nKGl0LT5rZXkpLCBRWG1s
SXRlbShRVmFyaWFudChRU3RyaW5nKGl0LT52YWx1ZSkpKSk7CisgICAgICAgIHF1ZXJ5LmJpbmRW
YXJpYWJsZShRU3RyaW5nKGl0LT5maXJzdCksIFFYbWxJdGVtKFFWYXJpYW50KFFTdHJpbmcoaXQt
PnNlY29uZCkpKSk7CiAKICAgICBRU3RyaW5nIHNvdXJjZTsKICAgICBpZiAoc291cmNlSXNEb2N1
bWVudCAmJiBvd25lckRvY3VtZW50LT50cmFuc2Zvcm1Tb3VyY2UoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAppbmRleCBkYTNlNDc4OGM4MmYwMDcw
Mjk0Zjg2MWEzYjU4NTYyYmQ3ZmQ3NDQyLi41MGM1NDRiMjM0Y2Y1N2Q1MTQxNzgxNGEwODg5Yjdl
Yjg4M2NiMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3Rv
cmUuY3BwCkBAIC03MDksOCArNzA5LDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzZXRC
YWNraW5nU3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBiYWNraW5nU3QKICAgICAv
LyBvdXIgbmV3IGJhY2tpbmcgc3RvcmUgcmVjdC4KICAgICBUaWxlTWFwOjpjb25zdF9pdGVyYXRv
ciB0aWxlTWFwRW5kID0gY3VycmVudE1hcC5lbmQoKTsKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gY3VycmVudE1hcC5iZWdpbigpOyBpdCAhPSB0aWxlTWFwRW5kOyArK2l0
KSB7Ci0gICAgICAgIFRpbGVJbmRleCBvbGRJbmRleCA9IGl0LT5rZXk7Ci0gICAgICAgIEJhY2tp
bmdTdG9yZVRpbGUqIHRpbGUgPSBpdC0+dmFsdWU7CisgICAgICAgIFRpbGVJbmRleCBvbGRJbmRl
eCA9IGl0LT5maXJzdDsKKyAgICAgICAgQmFja2luZ1N0b3JlVGlsZSogdGlsZSA9IGl0LT5zZWNv
bmQ7CiAKICAgICAgICAgLy8gUmVzZXQgdGhlIG9sZCBpbmRleC4KICAgICAgICAgcmVzZXRUaWxl
KG9sZEluZGV4LCB0aWxlLCBmYWxzZSAvKnJlc2V0QmFja2dyb3VuZCovKTsKQEAgLTc2Niw4ICs3
NjYsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QoY29u
c3QgUGxhdGZvcm06OkludFJlY3QmIGJhY2tpbmdTdAogICAgIHNpemVfdCBpID0gMDsKICAgICBU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBsZWZ0T3ZlckVuZCA9IGxlZnRPdmVyVGlsZXMuZW5kKCk7
CiAgICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxlZnRPdmVyVGlsZXMuYmVn
aW4oKTsgaXQgIT0gbGVmdE92ZXJFbmQ7ICsraXQpIHsKLSAgICAgICAgVGlsZUluZGV4IG9sZElu
ZGV4ID0gaXQtPmtleTsKLSAgICAgICAgQmFja2luZ1N0b3JlVGlsZSogdGlsZSA9IGl0LT52YWx1
ZTsKKyAgICAgICAgVGlsZUluZGV4IG9sZEluZGV4ID0gaXQtPmZpcnN0OworICAgICAgICBCYWNr
aW5nU3RvcmVUaWxlKiB0aWxlID0gaXQtPnNlY29uZDsKICAgICAgICAgaWYgKGkgPj0gaW5kZXhl
c1RvRmlsbC5zaXplKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBQbGF0Zm9ybTo6SW50UmVjdCBC
YWNraW5nU3RvcmVQcml2YXRlOjp2aXNpYmxlVGlsZXNSZWN0KCkgY29uc3QKICAgICBUaWxlTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXJyZW50TWFwLmVuZCgpOwogICAgIGZvciAoVGlsZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXJyZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdDsKLSAgICAgICAgdGlsZVJlY3QuZmlyc3Qg
PSBpdC0+a2V5OworICAgICAgICB0aWxlUmVjdC5maXJzdCA9IGl0LT5maXJzdDsKICAgICAgICAg
dGlsZVJlY3Quc2Vjb25kID0gdGhpcy0+dGlsZVJlY3QoKTsKICAgICAgICAgUGxhdGZvcm06Oklu
dFJlY3QgdGlsZSA9IG1hcEZyb21UaWxlc1RvVHJhbnNmb3JtZWRDb250ZW50cyh0aWxlUmVjdCk7
CiAgICAgICAgIGlmICh0aWxlLmludGVyc2VjdHModmlzaWJsZUNvbnRlbnRzUmVjdCgpKSkKQEAg
LTE3OTMsNyArMTc5Myw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzZXRUaWxlcyhi
b29sIHJlc2V0QmFja2dyb3VuZCkKIAogICAgIFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGN1cnJlbnRNYXAuZW5kKCk7CiAgICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGN1cnJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICByZXNldFRpbGUo
aXQtPmtleSwgaXQtPnZhbHVlLCByZXNldEJhY2tncm91bmQpOworICAgICAgICByZXNldFRpbGUo
aXQtPmZpcnN0LCBpdC0+c2Vjb25kLCByZXNldEJhY2tncm91bmQpOwogfQogCiB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzKGJvb2wgdXBkYXRlVmlzaWJsZSwgYm9vbCBpbW1l
ZGlhdGUpCkBAIC0xODA2LDEwICsxODA2LDEwIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
dXBkYXRlVGlsZXMoYm9vbCB1cGRhdGVWaXNpYmxlLCBib29sIGltbWVkaWF0ZSkKIAogICAgIFRp
bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGN1cnJlbnRNYXAuZW5kKCk7CiAgICAgZm9yIChU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGN1cnJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGJvb2wgaXNWaXNpYmxlID0gaXNUaWxlVmlzaWJsZShpdC0+a2V5
KTsKKyAgICAgICAgYm9vbCBpc1Zpc2libGUgPSBpc1RpbGVWaXNpYmxlKGl0LT5maXJzdCk7CiAg
ICAgICAgIGlmICghdXBkYXRlVmlzaWJsZSAmJiBpc1Zpc2libGUpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgdXBkYXRlVGlsZShpdC0+a2V5LCBpbW1lZGlhdGUpOworICAgICAgICB1
cGRhdGVUaWxlKGl0LT5maXJzdCwgaW1tZWRpYXRlKTsKICAgICB9CiB9CiAKQEAgLTE4MzAsOCAr
MTgzMCw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6dXBkYXRlVGlsZXNGb3JTY3JvbGxP
ck5vdFJlbmRlcmVkUmVnaW9uKGJvb2wgY2hlY2tMb2FkCiAKICAgICBUaWxlTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBjdXJyZW50TWFwLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjdXJyZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBUaWxlSW5kZXggaW5kZXggPSBpdC0+a2V5OwotICAgICAgICBCYWNraW5nU3RvcmVUaWxl
KiB0aWxlID0gaXQtPnZhbHVlOworICAgICAgICBUaWxlSW5kZXggaW5kZXggPSBpdC0+Zmlyc3Q7
CisgICAgICAgIEJhY2tpbmdTdG9yZVRpbGUqIHRpbGUgPSBpdC0+c2Vjb25kOwogICAgICAgICBi
b29sIGlzVmlzaWJsZSA9IGlzVGlsZVZpc2libGUoaW5kZXgpOwogICAgICAgICAvLyBUaGUgcmVj
dCBpbiB0cmFuc2Zvcm1lZCBjb250ZW50cyBjb29yZGluYXRlcy4KICAgICAgICAgUGxhdGZvcm06
OkludFJlY3QgcmVjdChvcmlnaW5PZlRpbGUoaW5kZXgpLCB0aWxlU2l6ZSgpKTsKQEAgLTE5NzQs
OCArMTk3NCw4IEBAIEJhY2tpbmdTdG9yZVByaXZhdGU6OlRpbGVSZWN0TGlzdCBCYWNraW5nU3Rv
cmVQcml2YXRlOjptYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50CiAgICAgVGlsZVJlY3RMaXN0IHRp
bGVSZWN0TGlzdDsKICAgICBUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB0aWxlTWFwLmVu
ZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0aWxlTWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggaW5kZXggPSBpdC0+a2V5
OwotICAgICAgICBCYWNraW5nU3RvcmVUaWxlKiB0aWxlID0gaXQtPnZhbHVlOworICAgICAgICBU
aWxlSW5kZXggaW5kZXggPSBpdC0+Zmlyc3Q7CisgICAgICAgIEJhY2tpbmdTdG9yZVRpbGUqIHRp
bGUgPSBpdC0+c2Vjb25kOwogCiAgICAgICAgIC8vIE5lZWQgdG8gbWFwIHRoZSByZWN0IHRvIHRp
bGUgY29vcmRpbmF0ZXMuCiAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHIgPSByZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwCmluZGV4IDQ4Y2NmM2FjNTFhYmRl
MzY1YWIwMjc1OWQxZGFkYzQxNmZjMDBmNTcuLjZiMjkyMTAyOTQ2Mjc3ZGEyOGU3OThkN2VlZGY4
YjkzOWM1MzE5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAK
QEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsOjpjYW5jZWwo
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9u
cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF0Zm9ybVByZXNlbnRlci0+Y2Fu
Y2VsKHN0ZDo6c3RyaW5nKGl0LT52YWx1ZS51dGY4KCkuZGF0YSgpKSk7CisgICAgbV9wbGF0Zm9y
bVByZXNlbnRlci0+Y2FuY2VsKHN0ZDo6c3RyaW5nKGl0LT5zZWNvbmQudXRmOCgpLmRhdGEoKSkp
OwogICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXQpOwogfQogCkBAIC0xMDgsMTIgKzEwOCwx
MiBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckltcGw6Om9uUGVybWlzc2lvbihjb25zdCBz
dGQ6OnN0cmluZyYgZG9tYWluLCBib29sIGlzQQogICAgIFN0cmluZyBkb21haW5TdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4KGRvbWFpbi5jX3N0cigpKTsKICAgICBQZXJtaXNzaW9uUmVxdWVzdE1h
cDo6aXRlcmF0b3IgaXQgPSBtX3Blcm1pc3Npb25SZXF1ZXN0cy5iZWdpbigpOwogICAgIGZvciAo
OyBpdCAhPSBtX3Blcm1pc3Npb25SZXF1ZXN0cy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAo
aXQtPmtleS0+dXJsKCkuaG9zdCgpICE9IGRvbWFpblN0cmluZykKKyAgICAgICAgaWYgKGl0LT5m
aXJzdC0+dXJsKCkuaG9zdCgpICE9IGRvbWFpblN0cmluZykKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChpc0FsbG93ZWQpIHsKICAgICAgICAgICAgIG1fYWxsb3dlZERvbWFp
bnMuYWRkKGRvbWFpblN0cmluZyk7Ci0gICAgICAgICAgICBpdC0+dmFsdWUtPmhhbmRsZUV2ZW50
KCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5oYW5kbGVFdmVudCgpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIG1fYWxsb3dlZERvbWFpbnMucmVtb3ZlKGRvbWFpblN0cmluZyk7CiAK
QEAgLTE0NCw5ICsxNDQsOSBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckltcGw6Om5vdGlm
aWNhdGlvbkNsaWNrZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGlkKQogICAgIFN0cmluZyBpZFN0cmlu
ZyA9IFN0cmluZzo6ZnJvbVVURjgoaWQuY19zdHIoKSk7CiAgICAgTm90aWZpY2F0aW9uTWFwOjpp
dGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOwogICAgIGZvciAoOyBpdCAhPSBt
X25vdGlmaWNhdGlvbnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSA9PSBp
ZFN0cmluZyAmJiBpdC0+a2V5LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IGl0LT5rZXk7Ci0gICAgICAg
ICAgICBpdC0+a2V5LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgICAgIGlmIChpdC0+c2Vjb25kID09IGlkU3Ry
aW5nICYmIGl0LT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBpdC0+Zmlyc3Q7CisgICAgICAg
ICAgICBpdC0+Zmlyc3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICAgICAgICAgIG1fbm90aWZpY2F0aW9ucy5y
ZW1vdmUobm90aWZpY2F0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRp
YUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCmluZGV4IDI2YTQwNjZjMzk0ZDllNzRiMWJkY2Y0ODhj
NWJhOTU4MWFmYTVkOWIuLmE0ZTQ1YzJlNTUyZDg1ZTlmYWE1MjY2NDlkYTRjYjJiMjcwMzlkZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Vc2Vy
TWVkaWFDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFVzZXJNZWRpYUNsaWVudEltcGw6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVx
dWVzdCogcmVxdWVzdCkKICAgICBpZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViVXNlck1lZGlhKCktPmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoV2ViVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0LT5hdWRpbygpLCByZXF1ZXN0LT52
aWRlbygpLCBpdC0+dmFsdWUuZ2V0KCkpKTsKKyAgICB3ZWJVc2VyTWVkaWEoKS0+Y2FuY2VsVXNl
ck1lZGlhUmVxdWVzdChXZWJVc2VyTWVkaWFSZXF1ZXN0KHJlcXVlc3QtPmF1ZGlvKCksIHJlcXVl
c3QtPnZpZGVvKCksIGl0LT5zZWNvbmQuZ2V0KCkpKTsKICAgICB1c2VyTWVkaWFSZXF1ZXN0c01h
cCgpLnJlbW92ZShpdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwCmluZGV4IDVlMWI3N2UzYjNmOWYzNjM2MjNjNGZi
NmYxYTZkMDg5MTNhYTAxMmIuLjdiN2ExZDU5YWI4NTc4MWMyOWViOTIxOWViMzU3MmNiNjg3MDkz
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fi
b3V0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
QWJvdXREYXRhLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBKU0NUeXBl
Q291bnRTZXRUb1RhYmxlSFRNTChTdHJpbmcmIHRhYmxlSFRNTCwgSlNDOjpUeXBlQ291bnRTZXQq
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoSlNDOjpUeXBlQ291bnRTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSB0eXBlQ291bnRTZXQtPmJlZ2luKCk7IGl0ZXIgIT0gdHlwZUNvdW50U2V0
LT5lbmQoKTsgKytpdGVyKQotICAgICAgICB0YWJsZUhUTUwgKz0gbnVtYmVyVG9IVE1MVHIoaXRl
ci0+a2V5LCBpdGVyLT52YWx1ZSk7CisgICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxU
cihpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKTsKIH0KIAogc3RhdGljIFN0cmluZyBtZW1vcnlQ
YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcAppbmRleCBjNDAyM2RlM2M5ZmIxOWQxODcwMWYwYzE3MWIzMjYwMTE1
ZmRkZDUyLi5hNDlmNTk0ZjJjMjBjMmMzMTc5MzIzOTJkNzFhNTQ1Njg5YjVjNDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXll
cnMuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgRnJhbWVMYXllcnM6OnJlbW92ZUxheWVyQnlG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBGcmFtZUxheWVyTWFw
OjppdGVyYXRvciBpdCA9IG1fZnJhbWVMYXllcnMuZmluZChmcmFtZSk7CiAgICAgaWYgKGl0ICE9
IG1fZnJhbWVMYXllcnMuZW5kKCkpIHsKLSAgICAgICAgTGF5ZXJXZWJLaXRUaHJlYWQqIGxheWVy
ID0gaXQtPnZhbHVlOworICAgICAgICBMYXllcldlYktpdFRocmVhZCogbGF5ZXIgPSBpdC0+c2Vj
b25kOwogICAgICAgICBpZiAobGF5ZXItPnN1cGVybGF5ZXIoKSkKICAgICAgICAgICAgIGxheWVy
LT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwogICAgICAgICBtX2ZyYW1lTGF5ZXJzLnJlbW92ZShp
dCk7CkBAIC0xMDQsMTUgKzEwNCwxNSBAQCB2b2lkIEZyYW1lTGF5ZXJzOjpjb21taXRPbldlYktp
dFRocmVhZChkb3VibGUgc2NhbGUpCiAgICAgQVNTRVJUKG1fcm9vdExheWVyKTsKICAgICBpZiAo
IWlzUm9vdExheWVyTWFpbkZyYW1lTGF5ZXIoKSkgewogICAgICAgICBmb3IgKEZyYW1lTGF5ZXJN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZUxheWVycy5iZWdpbigpOyBpdCAhPSBtX2ZyYW1lTGF5
ZXJzLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRBYnNvbHV0ZU9mZnNl
dChmcmFtZUxheWVyQWJzb2x1dGVPZmZzZXQoaXQtPmtleSkpOworICAgICAgICAgICAgaXQtPnNl
Y29uZC0+c2V0QWJzb2x1dGVPZmZzZXQoZnJhbWVMYXllckFic29sdXRlT2Zmc2V0KGl0LT5maXJz
dCkpOwogICAgIH0KICAgICBtX3Jvb3RMYXllci0+Y29tbWl0T25XZWJLaXRUaHJlYWQoc2NhbGUp
OwogfQogCiB2b2lkIEZyYW1lTGF5ZXJzOjpjYWxjdWxhdGVSb290TGF5ZXIoKQogewotICAgIGlm
IChtX2ZyYW1lTGF5ZXJzLnNpemUoKSA9PSAxICYmIG1fZnJhbWVMYXllcnMuYmVnaW4oKS0+a2V5
ID09IG1fcGFnZVByaXZhdGUtPm1fbWFpbkZyYW1lKQotICAgICAgICBtX3Jvb3RMYXllciA9IG1f
ZnJhbWVMYXllcnMuYmVnaW4oKS0+dmFsdWU7CisgICAgaWYgKG1fZnJhbWVMYXllcnMuc2l6ZSgp
ID09IDEgJiYgbV9mcmFtZUxheWVycy5iZWdpbigpLT5maXJzdCA9PSBtX3BhZ2VQcml2YXRlLT5t
X21haW5GcmFtZSkKKyAgICAgICAgbV9yb290TGF5ZXIgPSBtX2ZyYW1lTGF5ZXJzLmJlZ2luKCkt
PnNlY29uZDsKICAgICBlbHNlIGlmIChtX3Jvb3RHcmFwaGljc0xheWVyKQogICAgICAgICBtX3Jv
b3RMYXllciA9IG1fcm9vdEdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggMWVlYWM2Njdi
ZGY2NmIzZjE5M2ZiMzM1YTM4NzEyOGZiYzkxMjY3NC4uNGMwZWQ5Y2Q3MTdiNmY0ZDVhYTZhZmFm
OTcwYmViNjk2Nzk2ODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpyZW1vdmUoY29uc3QgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbgogICAgIEdlb2xv
Y2F0aW9uSWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAu
ZmluZChnZW9sb2NhdGlvbik7CiAgICAgaWYgKGl0ID09IG1fcHJpdmF0ZS0+bV9nZW9sb2NhdGlv
bklkTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWQgPSBpdC0+dmFsdWU7
CisgICAgaWQgPSBpdC0+c2Vjb25kOwogICAgIG1fcHJpdmF0ZS0+bV9nZW9sb2NhdGlvbklkTWFw
LnJlbW92ZShpdCk7CiAgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAucmVtb3ZlKGlk
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBXZWJHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlKGludCBpZCwgV2ViS2l0OjpXZWJHZW9s
b2NhdGkKICAgICBJZEdlb2xvY2F0aW9uTWFwOjppdGVyYXRvciBpdCA9IG1fcHJpdmF0ZS0+bV9p
ZEdlb2xvY2F0aW9uTWFwLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3ByaXZhdGUtPm1faWRH
ZW9sb2NhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEdlb2xvY2F0
aW9uKiBnZW9sb2NhdGlvbiA9IGl0LT52YWx1ZTsKKyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRp
b24gPSBpdC0+c2Vjb25kOwogICAgIHBlcm1pc3Npb25SZXF1ZXN0ID0gV2ViR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChnZW9sb2NhdGlvbik7CiAgICAgbV9wcml2YXRlLT5tX2lkR2VvbG9j
YXRpb25NYXAucmVtb3ZlKGl0KTsKICAgICBtX3ByaXZhdGUtPm1fZ2VvbG9jYXRpb25JZE1hcC5y
ZW1vdmUoZ2VvbG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
TWV0YWRhdGEuY3BwCmluZGV4IGYyZmMyODU5NDQ0YzQ4YTcyZGQ5NGFkYzExZDE4ODE3ZjVlYjQ1
ZDguLjAxZDg3OGEwYTlmMmMxYzg5MTQ5MTkxYmM4Yzg3MWQ4Y2RjZjY1MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGEmIG1ldGFkYXRhKQogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoSURC
RGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIHN0b3JlSXRl
cmF0b3IgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsgc3RvcmVJdGVyYXRvciAhPSBt
ZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsrc3RvcmVJdGVyYXRvcikgewotICAgICAgICBj
b25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSA9IHN0b3JlSXRlcmF0b3It
PnZhbHVlOworICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9y
ZSA9IHN0b3JlSXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgT2JqZWN0U3RvcmUgd2ViT2JqZWN0
U3RvcmU7CiAgICAgICAgIHdlYk9iamVjdFN0b3JlLm5hbWUgPSBvYmplY3RTdG9yZS5uYW1lOwog
ICAgICAgICB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoID0gb2JqZWN0U3RvcmUua2V5UGF0aDsKQEAg
LTU1LDcgKzU1LDcgQEAgV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQogCiAgICAgICAgIHNpemVfdCBqID0g
MDsKICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3Rf
aXRlcmF0b3IgaW5kZXhJdGVyYXRvciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5k
ZXhJdGVyYXRvciAhPSBvYmplY3RTdG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3Ip
IHsKLSAgICAgICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4ID0gaW5kZXhJdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleCA9
IGluZGV4SXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgIEluZGV4IHdlYkluZGV4OwogICAg
ICAgICAgICAgd2ViSW5kZXgubmFtZSA9IGluZGV4Lm5hbWU7CiAgICAgICAgICAgICB3ZWJJbmRl
eC5rZXlQYXRoID0gaW5kZXgua2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bnRlbnQuY3BwCmluZGV4IDA0MWM3ZjJlOWM1MDM1NzU5YmQ4ZTNlYmIzNDNmYzRjZmZkYjdkMGQu
LjU1Nzc1ZWNmY2RjMTYyMDRlNTg0MDZhMTU3OGFlOGViNjY4N2VkOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIFdlYlN0cmlu
ZyBXZWJJbnRlbnQ6OmV4dHJhc1ZhbHVlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkgY29uc3QKICAg
ICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciB2YWwgPSBtX3By
aXZhdGUtPmV4dHJhcygpLmZpbmQobmFtZSk7CiAgICAgaWYgKHZhbCA9PSBtX3ByaXZhdGUtPmV4
dHJhcygpLmVuZCgpKQogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHZh
bC0+dmFsdWU7CisgICAgcmV0dXJuIHZhbC0+c2Vjb25kOwogI2Vsc2UKICAgICByZXR1cm4gV2Vi
U3RyaW5nKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKaW5kZXgg
MjQ1MTRjZDU4ZmJmZDAwYWFhODg3MjQyYTFhYzM2MzMxY2FlYjc4MC4uMzU4OTgzYjgzOTkzMTRj
ZGEwMzdjOGMwMzI0OWVlOWI2NzJlOTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dC5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyVGVzdCwgVGVzdFBhcmFtZXRlcnMpCiAgICAgRVhQRUNUX0VRKDIsIG1fcGFyc2VkUGFy
YW1ldGVyc1swXS5zaXplKCkpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRv
ciBwYXJhbWV0ZXIgPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZmluZCgibWF4LWNoYW5uZWxzIik7
CiAgICAgRVhQRUNUX1RSVUUocGFyYW1ldGVyICE9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5lbmQo
KSk7Ci0gICAgRVhQRUNUX0VRKCI0IiwgcGFyYW1ldGVyLT52YWx1ZSk7CisgICAgRVhQRUNUX0VR
KCI0IiwgcGFyYW1ldGVyLT5zZWNvbmQpOwogICAgIHBhcmFtZXRlciA9IG1fcGFyc2VkUGFyYW1l
dGVyc1swXS5maW5kKCJmbG93LWNvbnRyb2wiKTsKICAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXIg
IT0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmVuZCgpKTsKLSAgICBFWFBFQ1RfVFJVRShwYXJhbWV0
ZXItPnZhbHVlLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXItPnNlY29uZC5p
c051bGwoKSk7CiB9CiAKIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCwg
VGVzdE11bHRpcGxlKQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgVEVTVF9GKFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0TXVsdGlwbGUpCiAgICAgICAgIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBwYXJzZWRQYXJhbWV0ZXJzID0gbV9wYXJzZWRQYXJhbWV0ZXJzW2ld
OwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0ucGFyYW1ldGVycy5zaXplKCksIG1fcGFy
c2VkUGFyYW1ldGVyc1tpXS5zaXplKCkpOwogICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvciA9IGV4cGVjdGVkUGFyYW1ldGVycy5iZWdp
bigpOyBpdGVyYXRvciAhPSBleHBlY3RlZFBhcmFtZXRlcnMuZW5kKCk7ICsraXRlcmF0b3IpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJz
ZWQgPSBwYXJzZWRQYXJhbWV0ZXJzLmZpbmQoaXRlcmF0b3ItPmtleSk7CisgICAgICAgICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGFyc2VkID0gcGFyc2VkUGFy
YW1ldGVycy5maW5kKGl0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShw
YXJzZWQgIT0gcGFyc2VkUGFyYW1ldGVycy5lbmQoKSk7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0
b3ItPnZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlZC0+
dmFsdWUuaXNOdWxsKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLT5zZWNvbmQuaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUocGFyc2VkLT5zZWNvbmQuaXNOdWxsKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVyYXRvci0+
dmFsdWUsIHBhcnNlZC0+dmFsdWUpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVyYXRv
ci0+c2Vjb25kLCBwYXJzZWQtPnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcAppbmRleCA2NmU5N2ZmOTZjNjMzMjVjNzEzMmNjZmQ3NjQ2MGYxOGIz
YmYwOTA0Li45NmE1NzkxZWUyYTlmMDY1NDExZDI5ODRhYjBhNGY4MmExZmE4ZGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgRXZhc19P
YmplY3QqCiAgICAgZWxzZSB7CiAgICAgICAgIFdURjo6SGFzaE1hcDxpbnQsIFJlZlB0cjxXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQgPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHdvcmxkTWFwLmZp
bmQod29ybGRJRCk7CiAgICAgICAgIGlmIChpdCAhPSB3b3JsZE1hcC5lbmQoKSkKLSAgICAgICAg
ICAgIHNjcmlwdFdvcmxkID0gKCppdCkudmFsdWU7CisgICAgICAgICAgICBzY3JpcHRXb3JsZCA9
ICgqaXQpLnNlY29uZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzY3JpcHRXb3JsZCA9
IFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCk7CiAgICAgICAgICAgICB3
b3JsZE1hcC5zZXQod29ybGRJRCwgc2NyaXB0V29ybGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKaW5k
ZXggMDk4ZDMwM2E0YWM1OTVjNDY3NmI5NTU4ZjI0MjU2Mjk1YzVhN2U4NS4uNWI0MDMwOGEyMTkw
NzVjMDRmZTE2ZjA1M2FhOWMyN2QzM2FkNGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCkBAIC05
OSw4ICs5OSw4IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZvPiYKICAgICAgICAgZm9yIChNSU1FVG9E
ZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1l
OwogCi0gICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+a2V5OwotICAgICAgICAgICAgbWltZS5k
ZXNjID0gaXQtPnZhbHVlOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAg
ICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIG1pbWUuZXh0ZW5z
aW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKICAgICAg
ICAgICAgIHBsdWdpbkluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ludGVudC5jcHAKaW5kZXggODNiY2U4NzY0YWY2YWQ3OTc0NDM2OTJmNTM5
NmUzYmFhYjM1NTg4Yy4uNzZjMmQ2OGRhYTcyMTI0ZWE1YjYxYjdlMjRmMDM0YzJjMGNkYjgxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19pbnRlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGNv
bnN0IGNoYXIqIGV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCwg
Y29uc3QgY2hhcioga2V5KQogICAgIFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIHZhbCA9IGNvcmUtPmV4dHJhcygpLmZpbmQoU3RyaW5nOjpmcm9tVVRGOChrZXkp
KTsKICAgICBpZiAodmFsID09IGNvcmUtPmV4dHJhcygpLmVuZCgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQodmFsLT52YWx1ZS51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQodmFsLT5zZWNvbmQudXRmOCgp
LmRhdGEoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNw
cAppbmRleCA5MTAzYzg0NjA5NGQ1MWY4ZjViOTQ4NzRjZDY3YWYwNDc5OTA5YWUwLi4yOTIxNzNh
ZTI5MmY1MTIxMTg3ZThiZTUwNTAzOTNkN2MzMzg0YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAK
QEAgLTg4LDggKzg4LDggQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFBsdWdpbklu
Zm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbkluZm8+JgogICAgICAgICBNSU1FVG9E
ZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5l
bmQoKTsKICAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwotICAgICAgICAgICAgbWltZS50eXBlID0gaXQt
PmtleTsKLSAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIG1p
bWUudHlwZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7
CiAgICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuZ2V0KG1pbWUudHlwZSk7CiAgICAgICAgICAgICBwbHVnaW5JbmZvLm1pbWVzLmFwcGVuZCht
aW1lKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGZhdmljb25kYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZmF2aWNvbmRhdGFiYXNlLmNwcAppbmRleCBiM2ExZDc1Y2ExMmI2YWUwZjY0NWJmOTJiMTI4YTU4
MDBhMjBlY2NmLi42YmFiZmU0ZGQ5MmU1MTQyY2UwYzRmNzJjMzlhNmNiNmMzZGRlMWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNw
cApAQCAtNjE0LDE4ICs2MTQsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNl
SW1wb3J0RmluaXNoZWQoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSkKICAgICBWZWN0
b3I8U3RyaW5nPiB0b0RlbGV0ZVVSTHM7CiAgICAgUGVuZGluZ0ljb25SZXF1ZXN0TWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBkYXRhYmFzZS0+cHJpdi0+cGVuZGluZ0ljb25SZXF1ZXN0cy5lbmQo
KTsKICAgICBmb3IgKFBlbmRpbmdJY29uUmVxdWVzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IGRhdGFiYXNlLT5wcml2LT5wZW5kaW5nSWNvblJlcXVlc3RzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpIHsKLSAgICAgICAgU3RyaW5nIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGl0ZXItPmtleSk7CisgICAgICAgIFN0cmluZyBpY29u
VVJMID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChpdGVyLT5m
aXJzdCk7CiAgICAgICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIGljb25zID0gaXRlci0+
dmFsdWU7CisgICAgICAgIFBlbmRpbmdJY29uUmVxdWVzdFZlY3RvciogaWNvbnMgPSBpdGVyLT5z
ZWNvbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWNvbnMtPnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBQZW5kaW5nSWNvblJlcXVlc3QqIHJlcXVlc3QgPSBpY29ucy0+YXQo
aSkuZ2V0KCk7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+YXN5bmNSZXN1bHQoKSkKICAgICAg
ICAgICAgICAgICByZXF1ZXN0LT5hc3luY1Jlc3VsdENvbXBsZXRlKDApOwogICAgICAgICB9CiAK
LSAgICAgICAgdG9EZWxldGVVUkxzLmFwcGVuZChpdGVyLT5rZXkpOworICAgICAgICB0b0RlbGV0
ZVVSTHMuYXBwZW5kKGl0ZXItPmZpcnN0KTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRvRGVsZXRlVVJMcy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKaW5kZXggMDFkMGJiNWYyYmZkNzAwZjZiM2M5ZmM0Zjhl
NDIwYzU3MjQ4NmVjMi4uZTAzYjFlYTZkYTMzYjdlMmYwMDIyNTVjZTg3Nzc4NjI0Y2RhNzA4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKQEAgLTIz
NywxMCArMjM3LDEwIEBAIEdTTGlzdCogd2Via2l0X3dlYl9wbHVnaW5fZ2V0X21pbWV0eXBlcyhX
ZWJLaXRXZWJQbHVnaW4qIHBsdWdpbikKIAogICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKICAgICAgICAgV2ViS2l0V2ViUGx1Z2luTUlNRVR5cGUqIG1pbWVUeXBlID0g
Z19zbGljZV9uZXcwKFdlYktpdFdlYlBsdWdpbk1JTUVUeXBlKTsKLSAgICAgICAgbWltZVR5cGUt
Pm5hbWUgPSBnX3N0cmR1cChpdC0+a2V5LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtaW1lVHlw
ZS0+ZGVzY3JpcHRpb24gPSBnX3N0cmR1cChpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIG1pbWVUeXBlLT5uYW1lID0gZ19zdHJkdXAoaXQtPmZpcnN0LnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBtaW1lVHlwZS0+ZGVzY3JpcHRpb24gPSBnX3N0cmR1cChpdC0+c2Vjb25kLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwcml2LT5j
b3JlUGx1Z2luLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KGl0LT5rZXkpOworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcHJpdi0+Y29yZVBsdWdpbi0+bWltZVRvRXh0ZW5zaW9u
cygpLmdldChpdC0+Zmlyc3QpOwogICAgICAgICBtaW1lVHlwZS0+ZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PGdjaGFyKio+KGdfbWFsbG9jMChzaXplb2YoY2hhciopICogKGV4dGVuc2lvbnMuc2l6
ZSgpICsgMSkpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMu
c2l6ZSgpOyBpKyspCiAgICAgICAgICAgICBtaW1lVHlwZS0+ZXh0ZW5zaW9uc1tpXSA9IGdfc3Ry
ZHVwKGV4dGVuc2lvbnNbaV0udXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnkubW0KaW5kZXggZTc4MWQzMmZkMWRlOTUwZDkxNGFmNDgzNDk3NjQyMGRmNTg3
ZGFmNy4uNjk2NGZjOTQ5YjUxMjE3M2E2YmRjNWU3MGI1NjE4ZDMxY2I2NzdhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRp
YyBpbmxpbmUgV2ViSGlzdG9yeURhdGVLZXkgZGF0ZUtleShOU1RpbWVJbnRlcnZhbCBkYXRlKQog
ICAgICAgICByZXR1cm4gTk87CiAKICAgICBEYXRlVG9FbnRyaWVzTWFwOjppdGVyYXRvciBpdCA9
IF9lbnRyaWVzQnlEYXRlLT5maW5kKGRhdGVLZXkpOwotICAgIE5TTXV0YWJsZUFycmF5ICplbnRy
aWVzRm9yRGF0ZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICBOU011dGFibGVBcnJheSAqZW50cmll
c0ZvckRhdGUgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgIFtlbnRyaWVzRm9yRGF0ZSByZW1vdmVP
YmplY3RJZGVudGljYWxUbzplbnRyeV07CiAgICAgCiAgICAgLy8gcmVtb3ZlIHRoaXMgZGF0ZSBl
bnRpcmVseSBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgZW50cmllcyBvbiBpdApAQCAtNDQwLDcgKzQ0
MCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViSGlzdG9yeURhdGVLZXkgZGF0ZUtleShOU1RpbWVJbnRl
cnZhbCBkYXRlKQogICAgICAgICBkYXlzQXNUaW1lSW50ZXJ2YWxzLnJlc2VydmVDYXBhY2l0eShf
ZW50cmllc0J5RGF0ZS0+c2l6ZSgpKTsKICAgICAgICAgRGF0ZVRvRW50cmllc01hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gX2VudHJpZXNCeURhdGUtPmVuZCgpOwogICAgICAgICBmb3IgKERhdGVU
b0VudHJpZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gX2VudHJpZXNCeURhdGUtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGRheXNBc1RpbWVJbnRlcnZhbHMuYXBwZW5k
KGl0LT5rZXkpOworICAgICAgICAgICAgZGF5c0FzVGltZUludGVydmFscy5hcHBlbmQoaXQtPmZp
cnN0KTsKIAogICAgICAgICBzb3J0KGRheXNBc1RpbWVJbnRlcnZhbHMuYmVnaW4oKSwgZGF5c0Fz
VGltZUludGVydmFscy5lbmQoKSk7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IGRheXNBc1RpbWVJ
bnRlcnZhbHMuc2l6ZSgpOwpAQCAtODk3LDcgKzg5Nyw3IEBAIFdlYkhpc3RvcnlXcml0ZXI6Oldl
Ykhpc3RvcnlXcml0ZXIoRGF0ZVRvRW50cmllc01hcCogZW50cmllc0J5RGF0ZSkKICAgICBtX2Rh
dGVLZXlzLnJlc2VydmVDYXBhY2l0eShtX2VudHJpZXNCeURhdGUtPnNpemUoKSk7CiAgICAgRGF0
ZVRvRW50cmllc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9lbnRyaWVzQnlEYXRlLT5lbmQo
KTsKICAgICBmb3IgKERhdGVUb0VudHJpZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9lbnRy
aWVzQnlEYXRlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIG1fZGF0ZUtleXMu
YXBwZW5kKGl0LT5rZXkpOworICAgICAgICBtX2RhdGVLZXlzLmFwcGVuZChpdC0+Zmlyc3QpOwog
ICAgIHNvcnQobV9kYXRlS2V5cy5iZWdpbigpLCBtX2RhdGVLZXlzLmVuZCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggOGRlNjMxMzli
Nzc0Mzc2YmJkMWY3YzExMDZmNmVlZGJkZDNlNWIyNy4uMjk2ZGQ2YjI1YmQ4YmRiNzdhM2M2ODBl
MTMyNGU1YjM5N2QyNjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tCkBAIC04OSw4ICs4OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAg
IE93blB0cjxUeXBlQ291bnRTZXQ+IGNvdW50cyhKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCktPmhlYXAucHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpKTsKICAgICBIYXNoQ291bnRl
ZFNldDxjb25zdCBjaGFyKj46Oml0ZXJhdG9yIGVuZCA9IGNvdW50cy0+ZW5kKCk7CiAgICAgZm9y
IChIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj46Oml0ZXJhdG9yIGl0ID0gY291bnRzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
dC0+dmFsdWU7ICsraSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoVVRGOFN0cmluZzppdC0+a2V5XV07CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpdC0+c2Vjb25kOyArK2kpCisgICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpb
TlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6aXQtPmZpcnN0XV07CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEwNCw4ICsxMDQsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKICAgICBPd25QdHI8VHlwZUNvdW50U2V0PiBjb3VudHMoSlNET01XaW5kb3c6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpLT5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSk7CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Y29uc3QgY2hhcio+OjppdGVyYXRvciBlbmQgPSBjb3VudHMtPmVuZCgpOwogICAgIGZvciAo
SGFzaENvdW50ZWRTZXQ8Y29uc3QgY2hhcio+OjppdGVyYXRvciBpdCA9IGNvdW50cy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXQt
PnZhbHVlOyArK2kpCi0gICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6aXQtPmtleV1dOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaXQtPnNlY29uZDsgKytpKQorICAgICAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6W05T
U3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOml0LT5maXJzdF1dOwogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCAzY2UwODliZWQyN2E0
YzIzYWYyM2M3NTA5MjRhOWQ4OWFjMGM3MTFjLi5lNDlkNTBmNGJjYmQ1YzFjYmNiODM3YzhmMjk0
NjNkNGRjMmY0OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTczLDcgKzczLDcg
QEAgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omhv
c3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHIKICAgICAKICAgICAvLyBUaGUgcGFja2FnZSB3YXMg
YWxyZWFkeSBpbiB0aGUgbWFwLCBqdXN0IHJldHVybiBpdC4KICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAKICAgICBtYWNoX3BvcnRf
dCBjbGllbnRQb3J0OwogICAgIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYo
KSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZjbGllbnRQb3J0KSAhPSBLRVJOX1NVQ0NFU1Mp
IHsKQEAgLTk1LDcgKzk1LDcgQEAgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1
Z2luSG9zdE1hbmFnZXI6Omhvc3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHIKICAgICAKICAgICBO
ZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogaG9zdFByb3h5ID0gbmV3IE5ldHNjYXBlUGx1Z2luSG9z
dFByb3h5KGNsaWVudFBvcnQsIHBsdWdpbkhvc3RQb3J0LCBwbHVnaW5Ib3N0UFNOLCBzaG91bGRD
YWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9kcyk7CiAgICAgCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IGhvc3RQcm94eTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGhv
c3RQcm94eTsKICAgICAKICAgICByZXR1cm4gaG9zdFByb3h5OwogfQpAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6cGx1Z2luSG9zdERpZWQoTmV0c2Nh
cGVQbHVnaW5Ib3N0UHJveHkqIHBsdWdpbkhvCiAKICAgICAvLyBUaGlzIGhhcyBPKG4pIGNvbXBs
ZXhpdHkgYnV0IHRoZSBudW1iZXIgb2YgYWN0aXZlIHBsdWctaW4gaG9zdHMgaXMgdmVyeSBzbWFs
bCBzbyBpdCBzaG91bGRuJ3QgbWF0dGVyLgogICAgIGZvciAoUGx1Z2luSG9zdE1hcDo6aXRlcmF0
b3IgaXQgPSBtX3BsdWdpbkhvc3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBpZiAoaXQtPnZhbHVlID09IHBsdWdpbkhvc3QpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQg
PT0gcGx1Z2luSG9zdCkgewogICAgICAgICAgICAgbV9wbHVnaW5Ib3N0cy5yZW1vdmUoaXQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpkaWRDcmVhdGVXaW5kb3coKQogICAgIC8vIFNlZSBp
ZiBhbnkgb2Ygb3VyIGhvc3RzIGFyZSBpbiBmdWxsLXNjcmVlbiBtb2RlLgogICAgIFBsdWdpbkhv
c3RNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGx1Z2luSG9zdHMuZW5kKCk7CiAgICAgZm9yIChQbHVn
aW5Ib3N0TWFwOjppdGVyYXRvciBpdCA9IG1fcGx1Z2luSG9zdHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBob3N0UHJveHkgPSBp
dC0+dmFsdWU7CisgICAgICAgIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBob3N0UHJveHkgPSBp
dC0+c2Vjb25kOwogICAgICAgICAKICAgICAgICAgaWYgKCFob3N0UHJveHktPmlzTWVudUJhclZp
c2libGUoKSkgewogICAgICAgICAgICAgLy8gTWFrZSBvdXJzZWx2ZXMgdGhlIGZyb250IHByb2Nl
c3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IDBmYjI2ZDBhOWI4NDc1MjI2YmVmY2MzNDk2
OGI5ZjUwNmViOTE1YmMuLmFmNmYyYmU5OTY5Y2IxMWNiMzNhNTYzMTdmZGRhOGMyY2Y2MWNmNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSG9zdERpZWQoKQogICAKICAgICBQbHVnaW5JbnN0YW5j
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOwogICAgIGZvciAoUGx1
Z2luSW5zdGFuY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5wbHVnaW5Ib3N0RGllZCgpOworICAg
ICAgICBpdC0+c2Vjb25kLT5wbHVnaW5Ib3N0RGllZCgpOwogICAgIAogICAgIE5ldHNjYXBlUGx1
Z2luSG9zdE1hbmFnZXI6OnNoYXJlZCgpLnBsdWdpbkhvc3REaWVkKHRoaXMpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDAxZTQ4ODIwNDk4ZTIzMWY1ZTE1MDllM2M2
MmIxZGY5MmZjNzA3ZTguLjkxMDQ0MzA1ZmJhNmIyM2FiMjU1NTA2YzExN2ExMjRhYzQ5MzFjYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTE0NSw3ICsxNDUsNyBAQCB1aW50
MzJfdCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjppZEZvck9i
amVjdChKU0dsb2JhbERhdGEmCiAgICAgCiAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFp
cjx1aW50MzJfdCwgdWludDMyX3Q+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2pzT2JqZWN0VG9JRE1h
cC5maW5kKG9iamVjdCk7CiAgICAgaWYgKGl0ZXIgIT0gbV9qc09iamVjdFRvSURNYXAuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZS5maXJzdDsKKyAgICAgICAgcmV0dXJuIGl0ZXIt
PnNlY29uZC5maXJzdDsKICAgICAKICAgICBkbyB7CiAgICAgICAgIG9iamVjdElEID0gKyttX29i
amVjdElEQ291bnRlcjsKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OnJldGFpbihKU0M6OkpTT2JqZWN0KiBvYmplY3Qp
CiAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+ID46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2pzT2JqZWN0VG9JRE1hcC5maW5kKG9iamVjdCk7CiAgICAgQVNT
RVJUKGl0ZXIgIT0gbV9qc09iamVjdFRvSURNYXAuZW5kKCkpOwogCi0gICAgaXRlci0+dmFsdWUu
c2Vjb25kID0gaXRlci0+dmFsdWUuc2Vjb25kICsgMTsKKyAgICBpdGVyLT5zZWNvbmQuc2Vjb25k
ID0gaXRlci0+c2Vjb25kLnNlY29uZCArIDE7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6cmVsZWFzZShKU0M6OkpTT2JqZWN0KiBvYmplY3Qp
CkBAIC0xNzAsMTAgKzE3MCwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
TG9jYWxPYmplY3RNYXA6OnJlbGVhc2UoSlNDOjpKU09iamVjdCogb2JqZWN0KQogICAgIEhhc2hN
YXA8SlNDOjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90PiA+OjppdGVyYXRvciBp
dGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChvYmplY3QpOwogICAgIEFTU0VSVChpdGVyICE9
IG1fanNPYmplY3RUb0lETWFwLmVuZCgpKTsKIAotICAgIEFTU0VSVChpdGVyLT52YWx1ZS5zZWNv
bmQgPiAwKTsKLSAgICBpdGVyLT52YWx1ZS5zZWNvbmQgPSBpdGVyLT52YWx1ZS5zZWNvbmQgLSAx
OwotICAgIGlmICghaXRlci0+dmFsdWUuc2Vjb25kKSB7Ci0gICAgICAgIG1faWRUb0pTT2JqZWN0
TWFwLnJlbW92ZShpdGVyLT52YWx1ZS5maXJzdCk7CisgICAgQVNTRVJUKGl0ZXItPnNlY29uZC5z
ZWNvbmQgPiAwKTsKKyAgICBpdGVyLT5zZWNvbmQuc2Vjb25kID0gaXRlci0+c2Vjb25kLnNlY29u
ZCAtIDE7CisgICAgaWYgKCFpdGVyLT5zZWNvbmQuc2Vjb25kKSB7CisgICAgICAgIG1faWRUb0pT
T2JqZWN0TWFwLnJlbW92ZShpdGVyLT5zZWNvbmQuZmlyc3QpOwogICAgICAgICBtX2pzT2JqZWN0
VG9JRE1hcC5yZW1vdmUoaXRlcik7CiAgICAgfQogfQpAQCAtMTk3LDEwICsxOTcsMTAgQEAgYm9v
bCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpmb3JnZXQodWlu
dDMyX3Qgb2JqZWN0SUQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hN
YXA8SlNDOjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90PiA+OjppdGVyYXRvciBy
SXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQoaXRlci0+dmFsdWUuZ2V0KCkpOworICAgIEhh
c2hNYXA8SlNDOjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90PiA+OjppdGVyYXRv
ciBySXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQoaXRlci0+c2Vjb25kLmdldCgpKTsKIAog
ICAgIC8vIElmIHRoZSBvYmplY3QgaXMgYmVpbmcgc2VudCB0byBwbHVnLWluIHJpZ2h0IG5vdywg
dGhlbiBpdCdzIG5vdCB0aGUgdGltZSB0byBmb3JnZXQuCi0gICAgaWYgKHJJdGVyLT52YWx1ZS5z
ZWNvbmQgIT0gMSkKKyAgICBpZiAockl0ZXItPnNlY29uZC5zZWNvbmQgIT0gMSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgbV9qc09iamVjdFRvSURNYXAucmVtb3ZlKHJJdGVyKTsKQEAg
LTMzMCw3ICszMzAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZGVzdHJv
eSgpCiAgICAgCiAgICAgRnJhbWVMb2FkTWFwOjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdGcmFt
ZUxvYWRzLmVuZCgpOwogICAgIGZvciAoRnJhbWVMb2FkTWFwOjppdGVyYXRvciBpdCA9IG1fcGVu
ZGluZ0ZyYW1lTG9hZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbKGl0LT5r
ZXkpIF9zZXRJbnRlcm5hbExvYWREZWxlZ2F0ZTpuaWxdOworICAgICAgICBbKGl0LT5maXJzdCkg
X3NldEludGVybmFsTG9hZERlbGVnYXRlOm5pbF07CiAKICAgICBfV0tQSERlc3Ryb3lQbHVnaW5J
bnN0YW5jZShtX3BsdWdpbkhvc3RQcm94eS0+cG9ydCgpLCBtX3BsdWdpbklELCByZXF1ZXN0SUQp
OwogIApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Ojp3ZWJGcmFtZURpZEZpbmlzaExvYWRXaXRoUmVhc29uKFdlYkZyYW1lKiB3ZWJGCiAgICAgRnJh
bWVMb2FkTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZmluZCh3ZWJGcmFt
ZSk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZW5kKCkpOwogICAgICAg
ICAKLSAgICBQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXN0ID0gaXQtPnZhbHVlLmdldCgpOwor
ICAgIFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlc3QgPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
IF9XS1BITG9hZFVSTE5vdGlmeShtX3BsdWdpbkhvc3RQcm94eS0+cG9ydCgpLCBtX3BsdWdpbklE
LCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVhc29uKTsKICAKICAgICBtX3BlbmRpbmdG
cmFtZUxvYWRzLnJlbW92ZShpdCk7CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCB2b2lkIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6Y2FuY2VsQ2hlY2tJZkFsbG93ZWRUb0xvYWRVUkwodWludDMy
X3QgY2hlY2tJRAogICAgIGlmIChpdCA9PSBtX3VybENoZWNrcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrICpjaGVjayA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICBXZWJQbHVnaW5Db250YWluZXJDaGVjayAqY2hlY2sgPSBpdC0+c2Vjb25k
LmdldCgpOwogICAgIFtjaGVjayBjYW5jZWxdOwogICAgIG1fdXJsQ2hlY2tzLnJlbW92ZShpdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbQppbmRleCA1OThlZThmMzdiMDEwMWE1NjNkYTljNDZkNWJkNWE0NWQ1NWI3NzFhLi44OThj
NWUyMTQwNjlmYzliYmZkMzQ5YzViNGM2YmE4ZjczNTVlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTM1OSw4ICszNTks
OCBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogICAgIE1ldGhvZE1hcDo6aXRlcmF0b3IgZXhpc3RpbmdNYXBFbnRyeSA9
IG1fbWV0aG9kcy5maW5kKG5hbWUuaW1wbCgpKTsKICAgICBpZiAoZXhpc3RpbmdNYXBFbnRyeSAh
PSBtX21ldGhvZHMuZW5kKCkpIHsKICAgICAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwotICAg
ICAgICBpZiAoZXhpc3RpbmdNYXBFbnRyeS0+dmFsdWUpCi0gICAgICAgICAgICBtZXRob2RMaXN0
LmFwcGVuZChleGlzdGluZ01hcEVudHJ5LT52YWx1ZSk7CisgICAgICAgIGlmIChleGlzdGluZ01h
cEVudHJ5LT5zZWNvbmQpCisgICAgICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChleGlzdGluZ01h
cEVudHJ5LT5zZWNvbmQpOwogICAgICAgICByZXR1cm4gbWV0aG9kTGlzdDsKICAgICB9CiAgICAg
CkBAIC0zODIsMTEgKzM4MiwxMSBAQCBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNO
YW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0
byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0
Rm9yUmVwbHkuCiAgICAgTWV0aG9kTWFwOjpBZGRSZXN1bHQgbWFwQWRkUmVzdWx0ID0gbV9tZXRo
b2RzLmFkZChuYW1lLmltcGwoKSwgMCk7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5
ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG5ldyBQcm94eU1ldGhvZChtZXRob2ROYW1lKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUHJveHlNZXRob2QobWV0aG9kTmFtZSk7CiAKICAgICBNZXRo
b2RMaXN0IG1ldGhvZExpc3Q7Ci0gICAgaWYgKG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
Ci0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OworICAgIGlmIChtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCkKKyAgICAgICAgbWV0aG9k
TGlzdC5hcHBlbmQobWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIHJldHVybiBt
ZXRob2RMaXN0OwogfQogCkBAIC00MDIsNyArNDAyLDcgQEAgRmllbGQqIFByb3h5SW5zdGFuY2U6
OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBJZiB3ZSBhbHJl
YWR5IGhhdmUgYW4gZW50cnkgaW4gdGhlIG1hcCwgdXNlIGl0LgogICAgIEZpZWxkTWFwOjppdGVy
YXRvciBleGlzdGluZ01hcEVudHJ5ID0gbV9maWVsZHMuZmluZChuYW1lLmltcGwoKSk7CiAgICAg
aWYgKGV4aXN0aW5nTWFwRW50cnkgIT0gbV9maWVsZHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBl
eGlzdGluZ01hcEVudHJ5LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nTWFwRW50cnkt
PnNlY29uZDsKICAgICAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuYXNjaWkoKS5kYXRhKCkp
KTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBtX2luc3RhbmNlUHJveHktPm5leHRSZXF1ZXN0
SUQoKTsKQEAgLTQyMiw4ICs0MjIsOCBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0
aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9y
UmVwbHkuCiAgICAgRmllbGRNYXA6OkFkZFJlc3VsdCBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5h
ZGQobmFtZS5pbXBsKCksIDApOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBy
ZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBu
ZXcgUHJveHlGaWVsZChpZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcg
UHJveHlGaWVsZChpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQ7CiB9CiAKIEpTQzo6SlNWYWx1ZSBQcm94eUluc3RhbmNlOjpmaWVsZFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA2YTFlYjY0
MGEwZGFjZjBjY2UwMWVlZDM4MTkyMzUwYjVkYzg1MmYzLi40ZTFhYWQ0OTUyOGNkN2QwODFkNDEz
NTI0NTRiOWM4NTdmYmMyNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNzEwLDcgKzcxMCw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0JiBuciwgTlBSZWN0JiBucHIpCiAKICAgICBI
YXNoTWFwPHVpbnQzMl90LCBQbHVnaW5UaW1lcio+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB0aW1l
cnMtPmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgUGx1Z2luVGltZXIqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB0aW1lcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBQbHVnaW5UaW1lciogdGltZXIgPSBpdC0+dmFsdWU7CisgICAgICAgIFBsdWdpblRpbWVy
KiB0aW1lciA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHRpbWVyLT5zdG9wKCk7CiAgICAgfSAgICAK
IH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0
IE5TUmVjdCYgbnIsIE5QUmVjdCYgbnByKQogICAgIAogICAgIEhhc2hNYXA8dWludDMyX3QsIFBs
dWdpblRpbWVyKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHRpbWVycy0+ZW5kKCk7CiAgICAgZm9y
IChIYXNoTWFwPHVpbnQzMl90LCBQbHVnaW5UaW1lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRp
bWVycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFBsdWdpblRpbWVyKiB0
aW1lciA9IGl0LT52YWx1ZTsKKyAgICAgICAgUGx1Z2luVGltZXIqIHRpbWVyID0gaXQtPnNlY29u
ZDsKICAgICAgICAgQVNTRVJUKCF0aW1lci0+aXNBY3RpdmUoKSk7CiAgICAgICAgIHRpbWVyLT5z
dGFydChfaXNDb21wbGV0ZWx5T2JzY3VyZWQpOwogICAgIH0gICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0K
aW5kZXggMDY5OTE3Mzk0ODY5NzQ2MmZhNzU0M2NiN2VmMjIxODQ2NDA2YjlkNS4uZmQ4NTQ3YWFl
OWVhOWM3ZmYxNWE5M2E1MzFmOTk0MWRmOGQ3NzgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAt
OTAsNyArOTAsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKICAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9u
LCB3ZWJOb3RpZmljYXRpb24pOwogCiAgICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0
b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gPigp
KS5pdGVyYXRvcjsKLSAgICBpdC0+dmFsdWUuYXBwZW5kKHdlYk5vdGlmaWNhdGlvbik7CisgICAg
aXQtPnNlY29uZC5hcHBlbmQod2ViTm90aWZpY2F0aW9uKTsKIAogICAgIFtbbV93ZWJWaWV3IF9u
b3RpZmljYXRpb25Qcm92aWRlcl0gc2hvd05vdGlmaWNhdGlvbjp3ZWJOb3RpZmljYXRpb24uZ2V0
KCkgZnJvbVdlYlZpZXc6bV93ZWJWaWV3XTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMCw3ICsx
MjAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJOb3RpZmljYXRpb25zKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0
aW9uQ29udGV4dE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFZlY3RvcjxS
ZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+JiB3ZWJOb3RpZmljYXRpb25zID0gaXQtPnZhbHVl
OworICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+JiB3ZWJOb3RpZmljYXRp
b25zID0gaXQtPnNlY29uZDsKICAgICBOU011dGFibGVBcnJheSAqbnNJRHMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXldOwogICAgIHNpemVfdCBjb3VudCA9IHdlYk5vdGlmaWNhdGlvbnMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQ2LDEwICsx
NDYsMTAgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERl
c3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGkKIAogICAgIE5vdGlmaWNhdGlvbkNvbnRl
eHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQobm90aWZp
Y2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChpdCAhPSBtX25v
dGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9IGl0LT52YWx1
ZS5maW5kKHdlYk5vdGlmaWNhdGlvbik7CisgICAgc2l6ZV90IGluZGV4ID0gaXQtPnNlY29uZC5m
aW5kKHdlYk5vdGlmaWNhdGlvbik7CiAgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAg
ICBpdC0+dmFsdWUucmVtb3ZlKGluZGV4KTsKLSAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkK
KyAgICBpdC0+c2Vjb25kLnJlbW92ZShpbmRleCk7CisgICAgaWYgKGl0LT5zZWNvbmQuaXNFbXB0
eSgpKQogICAgICAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKIAogICAg
IFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gbm90aWZpY2F0aW9uRGVzdHJveWVk
OndlYk5vdGlmaWNhdGlvbi5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCBiOWEwMDA2ZDc5YTM0MzYwZjI5OWMzYzg0MWJiNzk2MmYzNzJkNThiLi41
MDVkYjUzMDIxMDRlYTg0OGZiODIwMTI3ZmEyOTRiMzE2YmUwOTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTIzNzYsNyArMjM3Niw3IEBAIHN0YXRpYyBT
dHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgc3RhdGljIGNv
bnN0IFNlbGVjdG9yTmFtZU1hcCogZXhjZXB0aW9uTWFwID0gY3JlYXRlU2VsZWN0b3JFeGNlcHRp
b25NYXAoKTsKICAgICBTZWxlY3Rvck5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZXhjZXB0
aW9uTWFwLT5maW5kKHNlbGVjdG9yKTsKICAgICBpZiAoaXQgIT0gZXhjZXB0aW9uTWFwLT5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7
CiAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbG9uLgogICAgIC8vIE5vIG5lZWQgdG8g
Y2FwaXRhbGl6ZSB0aGUgY29tbWFuZCBuYW1lIHNpbmNlIEVkaXRvciBjb21tYW5kIG5hbWVzIGFy
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDNkYjY5NzY5OGMzN2MxMjdmMTY3MTVm
ZDRlMmRiMjVmM2UwMTcyMDAuLjA4ZTg2MTgzYTZiNmVhNDQwODdlZjI0NzFmZDkwMDJkNGI2MDQw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIyNTgsNyArMjI1OCw3IEBAIHN0
YXRpYyB2b2lkIGV4dHJhY3RDb250ZW50VHlwZUZyb21QbHVnaW5WZWN0b3IoY29uc3QgVmVjdG9y
PFBsdWdpblBhY2thZ2UqPiYgcGx1CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgbWFwX2l0ID0gcGx1Z2luc1tpXS0+bWltZVRvRGVzY3JpcHRpb25zKCkuYmVn
aW4oKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtYXBf
ZW5kID0gcGx1Z2luc1tpXS0+bWltZVRvRGVzY3JpcHRpb25zKCkuZW5kKCk7CiAgICAgICAgIGZv
ciAoOyBtYXBfaXQgIT0gbWFwX2VuZDsgKyttYXBfaXQpCi0gICAgICAgICAgICAqbGlzdCA8PCBt
YXBfaXQtPmtleTsKKyAgICAgICAgICAgICpsaXN0IDw8IG1hcF9pdC0+Zmlyc3Q7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcAppbmRleCBj
NTMyOGM4ZjY3NWYyYzY2ZjdiOWI0MjBkNjUxMzdmZDlmODZiODk2Li5hN2EzYjVmMmMxZTg5ZjQ3
NDM3YzA4YTk3ZmNiMjk2Nzg2YmY4ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJw
bHVnaW5kYXRhYmFzZS5jcHAKQEAgLTEyMiw4ICsxMjIsOCBAQCBRTGlzdDxRV2ViUGx1Z2luSW5m
bzo6TWltZVR5cGU+IFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMoKSBjb25zdAogCiAgICAgICAg
IGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rl
c2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIE1pbWVU
eXBlIG1pbWVUeXBlOwotICAgICAgICAgICAgbWltZVR5cGUubmFtZSA9IGl0LT5rZXk7Ci0gICAg
ICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIG1p
bWVUeXBlLm5hbWUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlv
biA9IGl0LT5zZWNvbmQ7CiAKICAgICAgICAgICAgIFFTdHJpbmdMaXN0IGZpbGVFeHRlbnNpb25z
OwogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IG1fcGFja2FnZS0+bWlt
ZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lVHlwZS5uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKaW5kZXgg
N2Q0YjBiNzVmOWQyYzRlNzY3OWRiM2QwN2I1NjE3YTQyMTQwNGM1Ni4uY2Q0YWIwZDcyZDg2ODEy
NWRjODZlZTk4N2JjY2U2ZWYzYWIxYWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKQEAgLTEzMyw4ICsx
MzMsOCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdl
YkNvcmU6OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDbwogICAgICAgICBmb3IgKE1JTUVUb0Rlc2Ny
aXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAK
LSAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtaW1lLmRlc2Mg
PSBpdC0+dmFsdWU7CisgICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAg
ICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgbWltZS5leHRlbnNpb25z
ID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAg
ICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NPTVByb3BlcnR5QmFnLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9DT01Qcm9wZXJ0eUJhZy5o
CmluZGV4IDhlODRlNDc0MGFhM2E5ODYzNTk0YmVkY2VjZThlMzcxMmFkNGEyZmYuLmM3Njg2M2Yx
NTAxMmYyZWFkZTBkY2UxNWZkZGI3MzliZmJjMjc5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL0NPTVByb3BlcnR5QmFnLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVy
dHlCYWcuaApAQCAtMTQ3LDkgKzE0Nyw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09N
UHJvcGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OlJlYWQoTFBDCiAKICAg
ICBWQVJUWVBFIHJlcXVlc3RlZFR5cGUgPSBWX1ZUKHBWYXIpOwogICAgIFZfVlQocFZhcikgPSBW
VF9FTVBUWTsKLSAgICBDT01WYXJpYW50U2V0dGVyPFZhbHVlVHlwZT46OnNldFZhcmlhbnQocFZh
ciwgaXQtPnZhbHVlKTsKKyAgICBDT01WYXJpYW50U2V0dGVyPFZhbHVlVHlwZT46OnNldFZhcmlh
bnQocFZhciwgaXQtPnNlY29uZCk7CiAKLSAgICBpZiAocmVxdWVzdGVkVHlwZSAhPSBDT01WYXJp
YW50U2V0dGVyPFZhbHVlVHlwZT46OnZhcmlhbnRUeXBlKGl0LT52YWx1ZSkgJiYgcmVxdWVzdGVk
VHlwZSAhPSBWVF9FTVBUWSkKKyAgICBpZiAocmVxdWVzdGVkVHlwZSAhPSBDT01WYXJpYW50U2V0
dGVyPFZhbHVlVHlwZT46OnZhcmlhbnRUeXBlKGl0LT5zZWNvbmQpICYmIHJlcXVlc3RlZFR5cGUg
IT0gVlRfRU1QVFkpCiAgICAgICAgIHJldHVybiA6OlZhcmlhbnRDaGFuZ2VUeXBlKHBWYXIsIHBW
YXIsIFZBUklBTlRfTk9VU0VST1ZFUlJJREUgfCBWQVJJQU5UX0FMUEhBQk9PTCwgcmVxdWVzdGVk
VHlwZSk7CiAKICAgICByZXR1cm4gU19PSzsKQEAgLTIxNywxMiArMjE3LDEyIEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJvcGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNo
VHlwZT46OkdldFByb3BlCiAgICAgICAgIC8vcFByb3BCYWdbal0uY2xzaWQ7ICAgIC8vIChDTFNJ
RCkgQ0xTSUQgb2YgdGhlIG9iamVjdC4gVGhpcyBtZW1iZXIgaXMgdmFsaWQgb25seSBpZiBkd1R5
cGUgaXMgUFJPUEJBRzJfVFlQRV9PQkpFQ1QuCiAKICAgICAgICAgcFByb3BCYWdbal0uZHdUeXBl
ID0gUFJPUEJBRzJfVFlQRV9EQVRBOwotICAgICAgICBwUHJvcEJhZ1tqXS52dCA9IENPTVZhcmlh
bnRTZXR0ZXI8VmFsdWVUeXBlPjo6dmFyaWFudFR5cGUoY3VycmVudC0+dmFsdWUpOworICAgICAg
ICBwUHJvcEJhZ1tqXS52dCA9IENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVUeXBlPjo6dmFyaWFudFR5
cGUoY3VycmVudC0+c2Vjb25kKTsKICAgICAgICAgcFByb3BCYWdbal0uZHdIaW50ID0gaVByb3Bl
cnR5ICsgajsKLSAgICAgICAgcFByb3BCYWdbal0ucHN0ck5hbWUgPSAoTFBPTEVTVFIpQ29UYXNr
TWVtQWxsb2Moc2l6ZW9mKHdjaGFyX3QpKihjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSkpOworICAg
ICAgICBwUHJvcEJhZ1tqXS5wc3RyTmFtZSA9IChMUE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXpl
b2Yod2NoYXJfdCkqKGN1cnJlbnQtPmZpcnN0Lmxlbmd0aCgpKzEpKTsKICAgICAgICAgaWYgKCFw
UHJvcEJhZ1tqXS5wc3RyTmFtZSkKICAgICAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwot
ICAgICAgICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+a2V5Lmxlbmd0
aCgpKzEsIHN0YXRpY19jYXN0PFN0cmluZz4oY3VycmVudC0+a2V5KS5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpKTsKKyAgICAgICAgd2NzY3B5X3MocFByb3BCYWdbal0ucHN0ck5hbWUs
IGN1cnJlbnQtPmZpcnN0Lmxlbmd0aCgpKzEsIHN0YXRpY19jYXN0PFN0cmluZz4oY3VycmVudC0+
Zmlyc3QpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogICAgICAgICArKypwY1By
b3BlcnRpZXM7CiAgICAgfQogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCmluZGV4IDJmMjJiMDNjNjIyNTAwMmFlMjE5Y2EwZjQ1YmE0N2QyOTgw
YzM3YTAuLmMxY2E5ZjIxNGYyNDljMGE0OWYxZmNiMTIyZjA2YWQzNDkzYjRiMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVj
dGVkT2JqZWN0VHlwZUNvdW50cwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9y
IChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQg
IT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5
LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+Zmly
c3QsIGN1cnJlbnQtPnNlY29uZCk7CiAKICAgICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0
cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50
TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8odHlwZU5hbWVzQW5kQ291bnRzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGYxMzBmNzZiZDJhNjc2OTdhZGU3YTM2Nzg4NDUyNDNhOWY2YTcx
YTUuLjIzMGYzMzIzZjU0MjkxZDAxZTE0MTk4MTc4ZmEyMTZhNDhjMGNmNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtOTMsOCArOTMsOCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAg
ICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1l
VG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBN
aW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5rZXk7Ci0g
ICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBtaW1lLnR5cGUg
PSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwogICAgICAg
ICAgICAgbWltZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldCht
aW1lLnR5cGUpOwogCiAgICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggODIzMzVhNzhhNzVmOGM4MjJkZDk5NmU1ZDY4OThjMzlj
MDRlM2IzMi4uZTg0MmMxNDA3MzVjNzE5OTFhNWQxMWU4YjlkM2I1N2Y3ZDVjZDI3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTgzNCw3ICs4MzQsNyBAQCBIUkVTVUxUIFdlYkhpc3Rv
cnk6OnJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlcyhJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5KQogCiAg
ICAgRGF0ZVRvRW50cmllc01hcDo6aXRlcmF0b3IgZm91bmQgPSBtX2VudHJpZXNCeURhdGUuZmlu
ZChkYXRlS2V5KTsKICAgICBBU1NFUlQoZm91bmQgIT0gbV9lbnRyaWVzQnlEYXRlLmVuZCgpKTsK
LSAgICBDRk11dGFibGVBcnJheVJlZiBlbnRyaWVzRm9yRGF0ZSA9IGZvdW5kLT52YWx1ZS5nZXQo
KTsKKyAgICBDRk11dGFibGVBcnJheVJlZiBlbnRyaWVzRm9yRGF0ZSA9IGZvdW5kLT5zZWNvbmQu
Z2V0KCk7CiAKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGVudHJpZXNGb3JE
YXRlKTsKICAgICBmb3IgKGludCBpID0gY291bnQgLSAxOyBpID49IDA7IC0taSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdENPTUFQSS5jcHAKaW5kZXggNGQ4ZmYwOTViZGE5NjA3ZDI5YTE0NWI4NTdjNzhk
ZGZmOGUzNWU3YS4uOWM5Y2MwMjZiNDdiNGZlYTk2MGM2Mzk4NDZlMGViYTUxYzQ2NTNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBDT01Q
dHI8SUNsYXNzRmFjdG9yeT4gY2xhc3NGYWN0b3J5KGNvbnN0IENMU0lEJiBjbHNpZCkKICAgICBz
dGF0aWMgRmFjdG9yeU1hcCYgZmFjdG9yaWVzID0gKm5ldyBGYWN0b3J5TWFwOwogCiAgICAgRmFj
dG9yeU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGZhY3Rvcmllcy5hZGQoY2xzaWQsIDApOwotICAg
IENPTVB0cjxJQ2xhc3NGYWN0b3J5PiYgZmFjdG9yeSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CisgICAgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+JiBmYWN0b3J5ID0gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYmIEZBSUxFRChEbGxHZXRDbGFzc09i
amVjdChjbHNpZCwgX191dWlkb2YoZmFjdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
ZmFjdG9yeSkpKSkKICAgICAgICAgZmFjdG9yeSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0
U3RhdGlzdGljcy5jcHAKaW5kZXggYzdiOGVkMWFjNzdjZTZlMTkyNmFhNWRiMjI0MjRmMmVlZTFh
MzUwYy4uOWNkOTVjN2FjOTM1OTUzMDA3ZTE1N2RjYTc0ZTgwN2M0NWFlZTA2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTE0NCw5ICsxNDQsOSBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYktpdFN0YXRpc3RpY3M6OmNvbUNsYXNzTmFtZUNvdW50cygK
ICAgICBJdGVyYXRvciBlbmQgPSBnQ2xhc3NOYW1lQ291bnQuZW5kKCk7CiAgICAgVmVjdG9yPFVD
aGFyPiB2ZWN0b3I7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0gZ0NsYXNzTmFtZUNvdW50
LmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpIHsKLSAgICAgICAgYXBwZW5kKHZl
Y3RvciwgU3RyaW5nOjpmb3JtYXQoIiU0dSIsIGN1cnJlbnQtPnZhbHVlKSk7CisgICAgICAgIGFw
cGVuZCh2ZWN0b3IsIFN0cmluZzo6Zm9ybWF0KCIlNHUiLCBjdXJyZW50LT5zZWNvbmQpKTsKICAg
ICAgICAgdmVjdG9yLmFwcGVuZCgnXHQnKTsKLSAgICAgICAgYXBwZW5kKHZlY3Rvciwgc3RhdGlj
X2Nhc3Q8U3RyaW5nPihjdXJyZW50LT5rZXkpKTsKKyAgICAgICAgYXBwZW5kKHZlY3Rvciwgc3Rh
dGljX2Nhc3Q8U3RyaW5nPihjdXJyZW50LT5maXJzdCkpOwogICAgICAgICB2ZWN0b3IuYXBwZW5k
KCdcbicpOwogICAgIH0KICAgICAqb3V0cHV0ID0gQlN0cmluZyhTdHJpbmc6OmFkb3B0KHZlY3Rv
cikpLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk5vdGlmaWNh
dGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIu
Y3BwCmluZGV4IDMxYzgxMTlhNTAyYjljZWU2NWU0MjBiZjUxN2VlNzlhYTEyODQxYjAuLmM3MTky
ZDhkM2NkYjJjZGFlMmJhYTcxYWU2MGY3YmE5ZDgxZWQ3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyOjpwb3N0Tm90aWZpY2F0aW9uSW50ZXJuYWwoSVdlYk5vdGlmaWNh
dGlvbiogbm90aWZpY2F0CiAKICAgICAvLyBJbnRlbnRpb25hbGx5IG1ha2UgYSBjb3B5IG9mIHRo
ZSBsaXN0IHRvIGF2b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBlcnJvcnMKICAgICAvLyBmcm9tIGEg
bXV0YXRpb24gb2YgdGhlIGxpc3QgaW4gdGhlIG9uTm90aWZ5IGNhbGxiYWNrLgotICAgIE9iamVj
dE9ic2VydmVyTGlzdCBsaXN0ID0gaXQtPnZhbHVlOworICAgIE9iamVjdE9ic2VydmVyTGlzdCBs
aXN0ID0gaXQtPnNlY29uZDsKIAogICAgIE9ic2VydmVyTGlzdEl0ZXJhdG9yIGVuZCA9IGxpc3Qu
ZW5kKCk7CiAgICAgZm9yIChPYnNlcnZlckxpc3RJdGVyYXRvciBpdDIgPSBsaXN0LmJlZ2luKCk7
IGl0MiAhPSBlbmQ7ICsraXQyKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmFkZE9ic2VydmVyKAogICAgIFN0cmlu
ZyBuYW1lKG5vdGlmaWNhdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihub3RpZmljYXRpb25OYW1lKSk7
CiAgICAgTWFwcGVkT2JzZXJ2ZXJzOjppdGVyYXRvciBpdCA9IGQtPm1fbWFwcGVkT2JzZXJ2ZXJz
LmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ICE9IGQtPm1fbWFwcGVkT2JzZXJ2ZXJzLmVuZCgpKQot
ICAgICAgICBpdC0+dmFsdWUuYXBwZW5kKE9iamVjdE9ic2VydmVyUGFpcihhbk9iamVjdCwgb2Jz
ZXJ2ZXIpKTsKKyAgICAgICAgaXQtPnNlY29uZC5hcHBlbmQoT2JqZWN0T2JzZXJ2ZXJQYWlyKGFu
T2JqZWN0LCBvYnNlcnZlcikpOwogICAgIGVsc2UgewogICAgICAgICBPYmplY3RPYnNlcnZlckxp
c3QgbGlzdDsKICAgICAgICAgbGlzdC5hcHBlbmQoT2JqZWN0T2JzZXJ2ZXJQYWlyKGFuT2JqZWN0
LCBvYnNlcnZlcikpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpyZW1vdmVPYnNlcnZlcigKICAgICBpZiAoaXQgPT0g
ZC0+bV9tYXBwZWRPYnNlcnZlcnMuZW5kKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBPYmplY3RPYnNlcnZlckxpc3QmIG9ic2VydmVyTGlzdCA9IGl0LT52YWx1ZTsKKyAgICBPYmpl
Y3RPYnNlcnZlckxpc3QmIG9ic2VydmVyTGlzdCA9IGl0LT5zZWNvbmQ7CiAgICAgT2JzZXJ2ZXJM
aXN0SXRlcmF0b3IgZW5kID0gb2JzZXJ2ZXJMaXN0LmVuZCgpOwogCiAgICAgaW50IGkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCBkNTU3OTcyMzExNjE1OTFkNWZkYjE3MTU4
MDQ0NThkYjc4MmM5MWYyLi4zZjhjOTA3YzczOWYwOGNkYjk5MTZlODM2ZjliMDhkZTY3ODQ1MWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtOTQsOCArOTQsOCBAQCB2b2lkIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqLCBWZWN0b3I8
UGx1Z2luSW5mbz4mIG91dAogICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAgICAgIG1p
bWUudHlwZSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+dmFsdWU7Cisg
ICAgICAgICAgICBtaW1lLnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2Mg
PSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgbWltZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWlt
ZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAgICAgICBpbmZvLm1pbWVz
LmFwcGVuZChtaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRDb2RlcnMuaAppbmRleCBhZjE2M2JlNmQ5YjY0YzMwOWQ5MTlhZDFiNzM2NTg4ZWIyNjMx
Y2JhLi5kZDU0ZGZlZWY5MWE3ZGUzMTE5MTVlOTNkOWFmYmViMTNhMWNiZTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCkBAIC03NSw4
ICs3NSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPHN0ZDo6cGFpcjxULCBVPiA+IHsKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpLZXlWYWx1ZVBhaXI8
S2V5VHlwZSwgVmFsdWVUeXBlPiA+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5
cGU+JiBwYWlyKQogICAgIHsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhaXIua2V5KTsKLSAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhaXIudmFsdWUpOworICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUocGFpci5maXJzdCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShwYWlyLnNlY29uZCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
V1RGOjpLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPiYgcGFpcikKQEAgLTg5LDggKzg5
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUKICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHBhaXIua2V5
ID0ga2V5OwotICAgICAgICBwYWlyLnZhbHVlID0gdmFsdWU7CisgICAgICAgIHBhaXIuZmlyc3Qg
PSBrZXk7CisgICAgICAgIHBhaXIuc2Vjb25kID0gdmFsdWU7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmNwcAppbmRleCAzNDQ5ZTM1MmUxMGNlY2IwNDdiZTA5ZmFiODhlMGFmOTA2OTMyYWQyLi5k
MjJiOGI0YzFiOGM1MjhjZWNiOGIyMWM3MDU0MGYzMDZjYjNlZTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTEwMiwxMiArMTAyLDEy
IEBAIFBhc3NSZWZQdHI8Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZT4gQ29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JDcmVhCiAgICAgU3luY01lc3NhZ2VTdGF0ZU1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5hZGQocnVuTG9vcCwgMCk7CiAK
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKICAgICBSZWZQdHI8U3luY01lc3NhZ2VT
dGF0ZT4gc3luY01lc3NhZ2VTdGF0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jTWVzc2FnZVN0YXRlKHJ1
bkxvb3ApKTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3luY01lc3NhZ2VTdGF0ZS5n
ZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHN5bmNNZXNzYWdlU3RhdGUuZ2V0
KCk7CiAKICAgICByZXR1cm4gc3luY01lc3NhZ2VTdGF0ZS5yZWxlYXNlKCk7CiB9CkBAIC0zNjIs
MTAgKzM2MiwxMCBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2Fp
dEZvck1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgICAgICBIYXNoTWFwPHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdWludDY0X3Q+LCBBcmd1bWVudERlY29kZXIqPjo6aXRlcmF0b3IgaXQg
PSBtX3dhaXRGb3JNZXNzYWdlTWFwLmZpbmQobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKLSAgICAg
ICAgaWYgKGl0LT52YWx1ZSkgeworICAgICAgICBpZiAoaXQtPnNlY29uZCkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IG1fd2FpdEZvck1lc3NhZ2VNYXAgc2hvdWxkIHJlYWxseSBob2xkIE93blB0
cnMgdG8KICAgICAgICAgICAgIC8vIEFyZ3VtZW50RGVjb2RlcnMsIGJ1dCBIYXNoTWFwIGRvZXNu
J3QgY3VycmVudGx5IHN1cHBvcnQgT3duUHRycy4KLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVu
dERlY29kZXI+IGFyZ3VtZW50cyA9IGFkb3B0UHRyKGl0LT52YWx1ZSk7CisgICAgICAgICAgICBP
d25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+c2Vjb25kKTsK
ICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CkBAIC01MzksOCArNTM5
LDggQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnQKICAgICAgICAgCiAgICAgICAgIEhhc2hNYXA8
c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3VtZW50RGVjb2Rlcio+OjppdGVyYXRv
ciBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZmluZChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlSUQu
dG9JbnQoKSwgaW5jb21pbmdNZXNzYWdlLmRlc3RpbmF0aW9uSUQoKSkpOwogICAgICAgICBpZiAo
aXQgIT0gbV93YWl0Rm9yTWVzc2FnZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgaXQtPnZhbHVl
ID0gaW5jb21pbmdNZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKS5sZWFrUHRyKCk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQgPSBpbmNvbWlu
Z01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKKyAgICAgICAgICAgIEFTU0VS
VChpdC0+c2Vjb25kKTsKICAgICAgICAgCiAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29u
ZGl0aW9uLnNpZ25hbCgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAppbmRleCA2ODg1ZDQ4NWJkMTE2ZDMyOGRlY2Qw
MmFhZjU0YzkxODc4MmIyZjE2Li4xZGZhYjgzY2NmYjI0YzlmMDBlZTQwZDJkYWExYzk1YjE2Mzgy
YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcApA
QCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlckV2ZW50U291cmNlSGFu
ZGxlcihpbnQgZmlsZURlc2NyaXB0b3IsIGludCBjb25kaXRpb24sIGNvCiAgICAgICAgIFZlY3Rv
cjxFdmVudFNvdXJjZSo+IHNvdXJjZXM7CiAgICAgICAgIEV2ZW50U291cmNlSXRlcmF0b3IgaXQg
PSBtX2V2ZW50U291cmNlcy5maW5kKGZpbGVEZXNjcmlwdG9yKTsKICAgICAgICAgaWYgKGl0ICE9
IG1fZXZlbnRTb3VyY2VzLmVuZCgpKSAKLSAgICAgICAgICAgIHNvdXJjZXMgPSBpdC0+dmFsdWU7
CisgICAgICAgICAgICBzb3VyY2VzID0gaXQtPnNlY29uZDsKIAogICAgICAgICBzb3VyY2VzLmFw
cGVuZChldmVudFNvdXJjZSk7CiAgICAgICAgIG1fZXZlbnRTb3VyY2VzLnNldChmaWxlRGVzY3Jp
cHRvciwgc291cmNlcyk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBXb3JrUXVldWU6OnVucmVn
aXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yKQogICAgIEFTU0VSVCht
X2V2ZW50U291cmNlcy5jb250YWlucyhmaWxlRGVzY3JpcHRvcikpOwogCiAgICAgaWYgKGl0ICE9
IG1fZXZlbnRTb3VyY2VzLmVuZCgpKSB7Ci0gICAgICAgIFZlY3RvcjxFdmVudFNvdXJjZSo+IHNv
dXJjZXMgPSBpdC0+dmFsdWU7CisgICAgICAgIFZlY3RvcjxFdmVudFNvdXJjZSo+IHNvdXJjZXMg
PSBpdC0+c2Vjb25kOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlcy5z
aXplKCk7IGkrKykKICAgICAgICAgICAgIHNvdXJjZXNbaV0tPmNhbmNlbCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvV29ya1F1ZXVlTWFjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVldWVNYWMuY3BwCmluZGV4IDZlNTRjZWUwYjcw
OTg0MGE1NGY3NmNkYWE0MjRmZWViNDYyOTA5YjEuLmFlNDczZWU1Y2M4NGU1ODQyOWIwNDM5Y2Nk
OTIxYWMyYzQ5MmZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9X
b3JrUXVldWVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3JrUXVl
dWVNYWMuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJN
YWNoUG9ydEV2ZW50SGFuZGxlcihtYWNoX3BvcnRfdCBtYWNoUG9ydCkKICAgICAKICAgICBBU1NF
UlQobV9ldmVudFNvdXJjZXMuY29udGFpbnMobWFjaFBvcnQpKTsKIAotICAgIEV2ZW50U291cmNl
KiBldmVudFNvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICBFdmVudFNvdXJjZSogZXZlbnRTb3VyY2Ug
PSBpdC0+c2Vjb25kOwogICAgIC8vIENhbmNlbCBhbmQgcmVsZWFzZSB0aGUgc291cmNlLiBJdCB3
aWxsIGJlIGRlbGV0ZWQgaW4gaXRzIGZpbmFsaXplIGhhbmRsZXIuCiAgICAgZGlzcGF0Y2hfc291
cmNlX2NhbmNlbChldmVudFNvdXJjZS0+ZGlzcGF0Y2hTb3VyY2UoKSk7CiAgICAgZGlzcGF0Y2hf
cmVsZWFzZShldmVudFNvdXJjZS0+ZGlzcGF0Y2hTb3VyY2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggYjVlYzJk
OWRhMzlmMjZkY2I0MzIwZDk1ZTAzZjJmY2FlNGU3ZDdkZi4uNzY0MWFmNWU4Yzg5MmQxZDM3ZWU5
NmRhOWI3ZTYwNTg5OTczZTg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTlBS
ZW1vdGVPYmplY3RNYXA6OnBsdWdpbkRlc3Ryb3llZChQbHVnaW4qIHBsdWdpbikKIAogICAgIC8v
IEdhdGhlciB0aGUgcmVjZWl2ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBsdWctaW4uCiAgICAg
Zm9yIChIYXNoTWFwPHVpbnQ2NF90LCBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcio+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5iZWdpbigpLCBlbmQgPSBtX3JlZ2lz
dGVyZWROUE9iamVjdHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBOUE9iamVj
dE1lc3NhZ2VSZWNlaXZlciogbnBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgPSBpdC0+dmFsdWU7Cisg
ICAgICAgIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKiBucE9iamVjdE1lc3NhZ2VSZWNlaXZlciA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlmIChucE9iamVjdE1lc3NhZ2VSZWNlaXZlci0+cGx1Z2lu
KCkgPT0gcGx1Z2luKQogICAgICAgICAgICAgbWVzc2FnZVJlY2VpdmVycy5hcHBlbmQobnBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmgKaW5kZXggMmVjNWJiNGQ1MmIyMDc1MWZkYjU3ZWQ2NjI4MGVhOTA3YmQzOWI1
MC4uZWU0YWI2NGZmYTViNjNiOTJjMDk5OTU1NDg1ZjIwZTIxNTU1ZTZjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGlj
OgogICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtYXAuYmVnaW4oKTsKICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1h
cFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICAgICAgICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoaXQt
PmtleSk7Ci0gICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE93bmVyKGl0LT52YWx1ZS5n
ZXQoKSkpOworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShpdC0+Zmlyc3QpOworICAg
ICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShPd25lcihpdC0+c2Vjb25kLmdldCgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCmluZGV4IDNiYTI3ZWRj
MDYwNjc5ZWJkNWRjZWUwYTU3ZmZkN2E1YjlkMGI5ZmQuLjg5NzM0YmYwZWZiMDgwMzgwZWRjNjQ1
ZTNlYzcxZGNkZjM2N2M2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdHlwZW5hbWUgTWFwVHlw
ZTo6TWFwcGVkVHlwZSB2YWx1ZUZvcktleShjb25zdCBNYXBUeXBlJiBtYXAsIGNvbnN0IHR5cGVu
YQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmZpbmQo
a2V5KTsKICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVl
OworICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIHJldHVybiBkZWZhdWx0VmFsdWVG
b3JLZXk8dHlwZW5hbWUgTWFwVHlwZTo6TWFwcGVkVHlwZT4oa2V5KTsKIH0KQEAgLTE4Nyw3ICsx
ODcsNyBAQCBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldEJvb2xWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSkgY29uc3QKICAgICAvLyBGSVhNRTogRXh0ZW5kIG92ZXJyaWRpbmcgdG8g
b3RoZXIga2V5IHR5cGVzIHVzZWQgZnJvbSBUZXN0UnVubmVyLgogICAgIEJvb2xPdmVycmlkZXNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYm9vbFRlc3RSdW5uZXJPdmVycmlkZXNNYXAoKS5maW5k
KGtleSk7CiAgICAgaWYgKGl0ICE9IGJvb2xUZXN0UnVubmVyT3ZlcnJpZGVzTWFwKCkuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwog
ICAgIHJldHVybiB2YWx1ZUZvcktleShtX2Jvb2xWYWx1ZXMsIGtleSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0K
aW5kZXggMGY5ZDNkOGEzYmZiNzM3NDNiMzkzMzUzMzVkYzVmNThjMWQxNDc4MC4uMTk2YWIxMWM3
YTc0MzEwN2QzODAwZTFmZjhmYTViZTFmMmIzYjgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJybwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHN0cmluZ1VzZXJJbmZvTWFwLmJlZ2luKCk7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0cmluZ1VzZXJJ
bmZvTWFwLmVuZCgpOwogICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIFt1c2Vy
SW5mbyBzZXRPYmplY3Q6bnNTdHJpbmcoaXQtPnZhbHVlKSBmb3JLZXk6bnNTdHJpbmcoaXQtPmtl
eSldOworICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0Om5zU3RyaW5nKGl0LT5zZWNvbmQpIGZv
cktleTpuc1N0cmluZyhpdC0+Zmlyc3QpXTsKIAogICAgIGlmIChjZXJ0aWZpY2F0ZS5jZXJ0aWZp
Y2F0ZUNoYWluKCkpCiAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6KE5TQXJyYXkgKiljZXJ0
aWZpY2F0ZS5jZXJ0aWZpY2F0ZUNoYWluKCkgZm9yS2V5OkAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0
ZUNoYWluS2V5Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvQXJndW1l
bnRDb2RlcnNRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvQXJndW1lbnRDb2RlcnNR
dC5jcHAKaW5kZXggYTQzOWNhZmYxZTQ4OGUxMDJjNTUwYWQwNGYzNDZkNTk5NmRkMTg5Mi4uYzg5
YmY0NGYxNzE5MGIwMmM0MTEyYmNiZWQ2ZTBjNDFmYTNjNjc1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcApAQCAtODYsOCArODYsOCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBEcmFnRGF0YQogICAgICAgICBNSU1FRGF0YUhhc2hNYXA6Oml0ZXJhdG9yIGl0
ID0gbWFwLmJlZ2luKCk7CiAgICAgICAgIE1JTUVEYXRhSGFzaE1hcDo6aXRlcmF0b3IgZW5kID0g
bWFwLmVuZCgpOwogICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBRQnl0ZUFycmF5IGJ5dGVzKChjaGFyKilpdC0+dmFsdWUuZGF0YSgpLCBpdC0+dmFsdWUuc2l6
ZSgpKTsKLSAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LT5rZXksIGJ5dGVzKTsKKyAg
ICAgICAgICAgIFFCeXRlQXJyYXkgYnl0ZXMoKGNoYXIqKWl0LT5zZWNvbmQuZGF0YSgpLCBpdC0+
c2Vjb25kLnNpemUoKSk7CisgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC0+Zmlyc3Qs
IGJ5dGVzKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAzM2Q5YmQz
ZmYyMGU2MTkwY2MzY2U0ZmY4NTk5MzhiMDM5NGVkNmMxLi5kYmUyYzUxY2RjZmI3OThhZmFjZDJm
ZDFkYmZhNDkyYjFhMWVmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgUmVzb3VyY2VSCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGVhZGVy
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5
LCBpdC0+dmFsdWUpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZp
cnN0LCBpdC0+c2Vjb25kKTsKIAogICAgIHVpbnQzMl90IHNvdXBNZXNzYWdlRmxhZ3M7CiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoc291cE1lc3NhZ2VGbGFncykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNw
cAppbmRleCAzMWVmNWFmYWZlNmQzNTk5NDJkNDJlNWU3ZDVkNGNmMmZlMjI5MTY5Li5mNmJkMGE3
NjBlNmZlYWVkZjNmZTAzM2M4MWYzYTFhMDlkMWE4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IF9Fd2tfQmFja19Gb3J3YXJkX0xpc3QgewogICAgICAg
ICBJdGVtc01hcDo6aXRlcmF0b3IgaXQgPSB3cmFwcGVyQ2FjaGUuYmVnaW4oKTsKICAgICAgICAg
SXRlbXNNYXA6Oml0ZXJhdG9yIGVuZCA9IHdyYXBwZXJDYWNoZS5lbmQoKTsKICAgICAgICAgZm9y
ICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9p
dGVtX3VucmVmKGl0LT52YWx1ZSk7CisgICAgICAgICAgICBld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbV91bnJlZihpdC0+c2Vjb25kKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggY2YyZmNjM2Y5MjE4YWRm
MDJjNDQ1YmEzMjUwZjJkMGIzZjBiYmRlMS4uNzE1MDRmNjQxZDIwNjVkZjJiZjY4OGRhNDVlOTVk
NWE1MWRiNThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0LmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgX0V3a19Db250ZXh0IHsKICAg
ICAgICAgSGFzaE1hcDx1aW50NjRfdCwgRXdrX0Rvd25sb2FkX0pvYio+OjppdGVyYXRvciBpdCA9
IGRvd25sb2FkSm9icy5iZWdpbigpOwogICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBFd2tfRG93
bmxvYWRfSm9iKj46Oml0ZXJhdG9yIGVuZCA9IGRvd25sb2FkSm9icy5lbmQoKTsKICAgICAgICAg
Zm9yICggOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBld2tfZG93bmxvYWRfam9iX3Vu
cmVmKGl0LT52YWx1ZSk7CisgICAgICAgICAgICBld2tfZG93bmxvYWRfam9iX3VucmVmKGl0LT5z
ZWNvbmQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCBjMDcyN2RkYzQyYjZlMjE4ZTcxNjg4ZWZmMjZiYzE1YmQ0ZDQx
MTQ4Li45ODI1OGFmNmMwYTE2MzlmNjU2YzQ2MzA1YzNjMTA4ZGEwMTliOWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0zNTksNyArMzU5
LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfbG9hZGluZ19yZXNvdXJjZXNfY2xlYXIo
TG9hZGluZ1Jlc291cmNlc01hcCYgbG9hZGluZ1IKICAgICBMb2FkaW5nUmVzb3VyY2VzTWFwOjpp
dGVyYXRvciBpdCA9IGxvYWRpbmdSZXNvdXJjZXNNYXAuYmVnaW4oKTsKICAgICBMb2FkaW5nUmVz
b3VyY2VzTWFwOjppdGVyYXRvciBlbmQgPSBsb2FkaW5nUmVzb3VyY2VzTWFwLmVuZCgpOwogICAg
IGZvciAoIDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBld2tfd2ViX3Jlc291cmNlX3VucmVm
KGl0LT52YWx1ZSk7CisgICAgICAgIGV3a193ZWJfcmVzb3VyY2VfdW5yZWYoaXQtPnNlY29uZCk7
CiAKICAgICBsb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDFmMDFiNDg1
NTU1NTdmOWUwZWRkZTg0OGJkNDY2YTYxMWJhYmUxYTkuLmVlODZkNDQ4YTg4MmE4YTY3YjUxY2M2
OGNkNDUzYmU1YWFiMDdjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBHTGlzdCogd2Vi
a2l0X3dlYl92aWV3X2dldF9zdWJyZXNvdXJjZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgUmVzb3Vy
Y2VzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBwcml2LT5zdWJyZXNvdXJjZXNNYXAuZW5kKCk7
CiAgICAgZm9yIChSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJpdi0+c3VicmVz
b3VyY2VzTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgc3VicmVzb3VyY2Vz
ID0gZ19saXN0X3ByZXBlbmQoc3VicmVzb3VyY2VzLCBpdC0+dmFsdWUuZ2V0KCkpOworICAgICAg
ICBzdWJyZXNvdXJjZXMgPSBnX2xpc3RfcHJlcGVuZChzdWJyZXNvdXJjZXMsIGl0LT5zZWNvbmQu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIGdfbGlzdF9yZXZlcnNlKHN1YnJlc291cmNlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKaW5kZXggMTkwOTExNzMxNjdmZjYzYzcwY2RhZjFmYjkwMTRmOWQ2MTMzZjNiNy4u
NDkyNWI1YTdjMWNlZTljODRmZTU4NDJiY2QwYzFhOTEyMjZlNTk0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApA
QCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVy
Rm9yYWxsKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBnYm9vbGVhbiBpCiAgICAgV2ViS2l0V2Vi
Vmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuID0gcHJpdi0+Y2hpbGRyZW47CiAgICAgV2ViS2l0V2Vi
Vmlld0NoaWxkcmVuTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKICAg
ICBmb3IgKFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcDo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9
IGNoaWxkcmVuLmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgICgq
Y2FsbGJhY2spKGN1cnJlbnQtPmtleSwgY2FsbGJhY2tEYXRhKTsKKyAgICAgICAgKCpjYWxsYmFj
aykoY3VycmVudC0+Zmlyc3QsIGNhbGxiYWNrRGF0YSk7CiAKICAgICBpZiAoaW5jbHVkZUludGVy
bmFscyAmJiBwcml2LT5pbnNwZWN0b3JWaWV3KQogICAgICAgICAoKmNhbGxiYWNrKShwcml2LT5p
bnNwZWN0b3JWaWV3LCBjYWxsYmFja0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBjYTFjYWQ1ODI1OTlmZDBjNjBi
MjUyNGM2YmM3NzI3NjlkMmZkMzlhLi42M2M1ODg5NWY3MTI5M2IxYjU0NThkOWViNjg0MWQwYTA2
NDgxNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1By
aW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1By
aW50aW5nVmlldy5tbQpAQCAtMTk0LDggKzE5NCw4IEBAIHN0YXRpYyBCT09MIGlzRm9yY2luZ1By
ZXZpZXdVcGRhdGU7CiAtICh1aW50NjRfdClfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tGb3JSZWN0
Oihjb25zdCBJbnRSZWN0JilyZWN0CiB7CiAgICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBXZWJD
b3JlOjpJbnRSZWN0Pjo6aXRlcmF0b3IgaXRlciA9IF9leHBlY3RlZFByZXZpZXdDYWxsYmFja3Mu
YmVnaW4oKTsgaXRlciAhPSBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICAgICAgaWYgKGl0ZXItPnZhbHVlICA9PSByZWN0KQotICAgICAgICAgICAgcmV0dXJu
IGl0ZXItPmtleTsKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZCAgPT0gcmVjdCkKKyAgICAgICAg
ICAgIHJldHVybiBpdGVyLT5maXJzdDsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMjks
OCArMjI5LDggQEAgc3RhdGljIHZvaWQgcGFnZURpZERyYXdUb1BERihXS0RhdGFSZWYgZGF0YVJl
ZiwgV0tFcnJvclJlZiwgdm9pZCogdW50eXBlZENvbnRleHQKICAgICAgICAgICAgIEFTU0VSVChb
dmlldyBfaXNQcmludGluZ1ByZXZpZXddKTsKIAogICAgICAgICAgICAgaWYgKGRhdGEpIHsKLSAg
ICAgICAgICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZlY3Rvcjx1aW50OF90PiA+
OjpBZGRSZXN1bHQgZW50cnkgPSB2aWV3LT5fcGFnZVByZXZpZXdzLmFkZChpdGVyLT52YWx1ZSwg
VmVjdG9yPHVpbnQ4X3Q+KCkpOwotICAgICAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBI
YXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZlY3Rvcjx1aW50OF90PiA+OjpBZGRSZXN1bHQgZW50
cnkgPSB2aWV3LT5fcGFnZVByZXZpZXdzLmFkZChpdGVyLT5zZWNvbmQsIFZlY3Rvcjx1aW50OF90
PigpKTsKKyAgICAgICAgICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kLmFwcGVuZChkYXRh
LT5ieXRlcygpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmll
dy0+X2V4cGVjdGVkUHJldmlld0NhbGxiYWNrcy5yZW1vdmUoY29udGV4dC0+Y2FsbGJhY2tJRCk7
CiAgICAgICAgICAgICBib29sIHJlY2VpdmVkUmVzcG9uc2VUb0xhdGVzdFJlcXVlc3QgPSB2aWV3
LT5fbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sgPT0gY29udGV4dC0+Y2FsbGJhY2tJRDsK
QEAgLTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlRGF0YUZvclByaW50aW5nT25T
ZWNvbmRhcnlUaHJlYWQodm9pZCogdW50eXBlZENvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBkZkRhdGFCeXRlcyA9IHBhZ2VQcmV2
aWV3SXRlcmF0b3ItPnZhbHVlOworICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGRmRGF0YUJ5
dGVzID0gcGFnZVByZXZpZXdJdGVyYXRvci0+c2Vjb25kOwogICAgIFJldGFpblB0cjxOU0RhdGE+
IHBkZkRhdGEoQWRvcHROUywgW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cGRmRGF0YUJ5
dGVzLmRhdGEoKSBsZW5ndGg6cGRmRGF0YUJ5dGVzLnNpemUoKV0pOwogICAgIFJldGFpblB0cjxQ
REZEb2N1bWVudD4gcGRmRG9jdW1lbnQoQWRvcHROUywgW1twZGZEb2N1bWVudENsYXNzKCkgYWxs
b2NdIGluaXRXaXRoRGF0YTpwZGZEYXRhLmdldCgpXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAxOTNhMWQwNTJjZTI5YzMxMWU0ODBkYTNmODU1
NWI5M2QxMjA4NTRlLi5lYjZiODE5YzVkNDA1NjM5ODE1ZWU3YjE4OTU2ZWM3MTA4YTVkYTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC00MjMsNyAr
NDIzLDcgQEAgc3RhdGljIFN0cmluZyBjb21tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3Rv
cikKICAgICBzdGF0aWMgY29uc3QgU2VsZWN0b3JOYW1lTWFwKiBleGNlcHRpb25NYXAgPSBjcmVh
dGVTZWxlY3RvckV4Y2VwdGlvbk1hcCgpOwogICAgIFNlbGVjdG9yTmFtZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBleGNlcHRpb25NYXAtPmZpbmQoc2VsZWN0b3IpOwogICAgIGlmIChpdCAhPSBl
eGNlcHRpb25NYXAtPmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gaXQtPnNlY29uZDsKICAgICAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbG9u
LgogICAgIC8vIE5vIG5lZWQgdG8gY2FwaXRhbGl6ZSB0aGUgY29tbWFuZCBuYW1lIHNpbmNlIEVk
aXRvciBjb21tYW5kIG5hbWVzIGFyZQpAQCAtNzM3LDcgKzczNyw3IEBAIHN0YXRpYyB2b2lkIHZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFdLU3RyaW5nUmVmIGNvbW1hbmROYW1lLCBib29sIGlzRW5h
YmxlZCwgaW50CiAKICAgICAvLyBBZGQgdGhpcyBpdGVtIHRvIHRoZSB2ZWN0b3Igb2YgaXRlbXMg
Zm9yIGEgZ2l2ZW4gY29tbWFuZCB0aGF0IGFyZSBhd2FpdGluZyB2YWxpZGF0aW9uLgogICAgIFZh
bGlkYXRpb25NYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlkYXRpb25NYXAu
YWRkKGNvbW1hbmROYW1lLCBWYWxpZGF0aW9uVmVjdG9yKCkpOwotICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGl0ZW0pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
LmFwcGVuZChpdGVtKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
Ly8gSWYgd2UgYXJlIG5vdCBhbHJlYWR5IGF3YWl0aW5nIHZhbGlkYXRpb24gZm9yIHRoaXMgY29t
bWFuZCwgc3RhcnQgdGhlIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIHByb2Nlc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBUaGVvcmV0aWNhbGx5LCB0aGVyZSBpcyBhIHJhY2UgaGVyZTsgd2hlbiB3ZSBn
ZXQgdGhlIGFuc3dlciBpdCBtaWdodCBiZSBvbGQsIGZyb20gYSBwcmV2aW91cyB0aW1lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNzdmZGMwYTI2
Zjg4ZDQzMDdhN2I2MDA3ZGFiZDUzZjI5MDZkNTQ3ZS4uODRmNmViZDJmMTY1OGU2OTk2NWU0NzFi
YTM2MjVhOTIyODlmYWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zCiB7
CiAgICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9y
IGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7
Ci0gICAgaXQtPnZhbHVlLmluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotICAgIGl0LT52YWx1ZS5z
ZXRCYWNrQnVmZmVyKHRhcmdldFJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7
CisgICAgaXQtPnNlY29uZC5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKKyAgICBpdC0+c2Vjb25k
LnNldEJhY2tCdWZmZXIodGFyZ2V0UmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0
KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZT46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CiAgICAgZm9y
IChIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGl0LT52YWx1ZS50ZXh0dXJlKCk7CisgICAgICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gaXQtPnNlY29uZC50ZXh0dXJlKCk7CiAg
ICAgICAgIGlmICh0ZXh0dXJlKQogICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7CiAgICAgfQpA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgSGFzaE1hcDxp
bnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMu
ZW5kKCk7CiAgICAgRmxvYXRSZWN0IGNvdmVyZWRSZWN0OwogICAgIGZvciAoSGFzaE1hcDxpbnQs
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlJiB0aWxlID0gaXQtPnZhbHVlOworICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRp
bGUmIHRpbGUgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAoIXRpbGUudGV4dHVyZSgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyKQogCiAgICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46
Oml0ZXJhdG9yIHRpbGVzRW5kID0gbV90aWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8aW50
LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVn
aW4oKTsgaXQgIT0gdGlsZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS5zd2FwQnVmZmVy
cyh0ZXh0dXJlTWFwcGVyKTsKKyAgICAgICAgaXQtPnNlY29uZC5zd2FwQnVmZmVycyh0ZXh0dXJl
TWFwcGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDBkMDhmMzExOGU3NThlYTU3OTYw
ZDkyN2RkOTY5ZTE0OGQzNjY4NDguLmU2ZjU4MmYyMjAzNDE2MjIyMmNkNGY0YWE4OGMzNGNlMzll
MDc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBk
YXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zCiAgICAgICAgICAg
ICBzdXJmYWNlID0gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKHVwZGF0ZUluZm8uc3VyZmFjZUhh
bmRsZSk7CiAgICAgICAgICAgICBtX3N1cmZhY2VzLmFkZCh0b2tlbiwgc3VyZmFjZSk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgc3VyZmFjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAg
IHN1cmZhY2UgPSBpdC0+c2Vjb25kOwogICAgIH0gZWxzZQogICAgICAgICBzdXJmYWNlID0gU2hh
cmVhYmxlU3VyZmFjZTo6Y3JlYXRlKHVwZGF0ZUluZm8uc3VyZmFjZUhhbmRsZSk7CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDVlMGNlMmY4ZDE1MTM1ODY2
YjJmY2Q3YmRmOWU0YTdjNzhlODVmMmYuLjQ4MWI5Zjc0Yjg5ODYxMTk0NmNiNjg3NGRkYmFlMjk1
MjIwNzlkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTE4Myw3
ICsxODMsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjphZGp1c3RQb3NpdGlvbkZvckZpeGVk
TGF5ZXJzKCkKIAogICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX2ZpeGVkTGF5ZXJzLmVu
ZCgpOwogICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9maXhlZExheWVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKGl0LT52
YWx1ZSktPnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChkZWx0YSk7CisgICAgICAgIHRv
VGV4dHVyZU1hcHBlckxheWVyKGl0LT5zZWNvbmQpLT5zZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZO
ZWVkZWQoZGVsdGEpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkaWRDaGFuZ2VTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyhXZWJMYXllcklEIGlkLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjYW52YXMKICAgICAgICAgY2FudmFzQmFja2luZ1N0b3JlID0gVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgICAgICBtX3N1cmZh
Y2VCYWNraW5nU3RvcmVzLnNldChpZCwgY2FudmFzQmFja2luZ1N0b3JlKTsKICAgICB9IGVsc2UK
LSAgICAgICAgY2FudmFzQmFja2luZ1N0b3JlID0gaXQtPnZhbHVlOworICAgICAgICBjYW52YXNC
YWNraW5nU3RvcmUgPSBpdC0+c2Vjb25kOwogCiAgICAgY2FudmFzQmFja2luZ1N0b3JlLT5zZXRH
cmFwaGljc1N1cmZhY2UoZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNhbnZhc1NpemUsIGZyb250QnVm
ZmVyKTsKICAgICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKGNhbnZhc0JhY2tpbmdTdG9yZS5n
ZXQoKSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5
ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4KIHsKICAg
ICBlbnN1cmVMYXllcihpZCk7CiAgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9sYXllcnMu
ZmluZChpZCk7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBpdC0+dmFsdWU7CisgICAgR3Jh
cGhpY3NMYXllciogbGF5ZXIgPSBpdC0+c2Vjb25kOwogICAgIFZlY3RvcjxHcmFwaGljc0xheWVy
Kj4gY2hpbGRyZW47CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkSURzLnNpemUo
KTsgKytpKSB7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0
TGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGYKICAg
ICBMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKICAgICBBU1NFUlQo
aXQgIT0gbV9sYXllcnMuZW5kKCkpOwogCi0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBpdC0+
dmFsdWU7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBpdC0+c2Vjb25kOwogICAgIGxheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogI2VuZGlmCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShXZWJMYXllcklEIGlkLCBjb25zdCBX
ZWJMYXllckluZm8mIGxheWVySW4KICAgICBMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVy
cy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV9sYXllcnMuZW5kKCkpOwogCi0gICAgR3Jh
cGhpY3NMYXllciogbGF5ZXIgPSBpdC0+dmFsdWU7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIg
PSBpdC0+c2Vjb25kOwogCiAgICAgbGF5ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJ
RChsYXllckluZm8ucmVwbGljYSkpOwogICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlE
KGxheWVySW5mby5tYXNrKSk7CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6YXNzaWduSW1hZ2VUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQ2NF90IGlt
YWdlSUQKIAogICAgIEhhc2hNYXA8aW50NjRfdCwgUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+ID46Oml0ZXJhdG9yIGl0ID0gbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZXMuZmluZChp
bWFnZUlEKTsKICAgICBBU1NFUlQoaXQgIT0gbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZXMuZW5k
KCkpOwotICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnZhbHVlLmdldCgpKTsKKyAg
ICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKGl0LT5zZWNvbmQuZ2V0KCkpOwogfQogCiB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRUaWxlT3BlcmF0aW9ucygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMGQ0MTYzNTU0NjVmZjkwZGE2YmNmMDhl
YzM1Yjg0YzE3MWE1Mzk5Ni4uNzFiZWFmNWE1YzMxZDQ1NWNhOGQyYjFhMjg4MWNhMmE3MjcxNDdi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNDIsNyAr
NDIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Omlu
dmFsaWRhdGVSZXF1ZXN0cygpCiAgICAgUGVuZGluZ1JlcXVlc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9wZW5kaW5nUmVxdWVzdHMuYmVnaW4oKTsKICAgICBQZW5kaW5nUmVxdWVzdE1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVxdWVzdHMuZW5kKCk7CiAgICAgZm9yICg7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5pbnZhbGlkYXRlKCk7CisgICAg
ICAgIGl0LT5zZWNvbmQtPmludmFsaWRhdGUoKTsKIAogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNs
ZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggM2E5ZTIzZWVkZjk3
YjY0ZGI4MTZlM2FiYmRiYzI5ZDZiYjg3ZjJiOC4uZWNiMTcxYmI0NzJiNmJhZWYzZWZjMjkyN2Y3
MThhNjFhZjQ0Y2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtNjcsNyAr
NjcsNyBAQCBXZWJJbnNwZWN0b3JTZXJ2ZXI6On5XZWJJbnNwZWN0b3JTZXJ2ZXIoKQogICAgIC8v
IENsb3NlIGFueSByZW1haW5pbmcgb3BlbiBjb25uZWN0aW9ucy4KICAgICBIYXNoTWFwPHVuc2ln
bmVkLCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj46Oml0ZXJhdG9yIGVuZCA9IG1fY29ubmVj
dGlvbk1hcC5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsIFdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24qPjo6aXRlcmF0b3IgaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24gPSBpdC0+dmFsdWU7CisgICAgICAgIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24gPSBpdC0+c2Vjb25kOwogICAgICAgICBXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50
ID0gbV9jbGllbnRNYXAuZ2V0KGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CiAgICAgICAgIGNs
b3NlQ29ubmVjdGlvbihjbGllbnQsIGNvbm5lY3Rpb24pOwogICAgIH0KQEAgLTc4LDcgKzc4LDcg
QEAgaW50IFdlYkluc3BlY3RvclNlcnZlcjo6cmVnaXN0ZXJQYWdlKFdlYkluc3BlY3RvclByb3h5
KiBjbGllbnQpCiAjaWZuZGVmIEFTU0VSVF9ESVNBQkxFRAogICAgIENsaWVudE1hcDo6aXRlcmF0
b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CiAgICAgZm9yIChDbGllbnRNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBBU1NF
UlQoaXQtPnZhbHVlICE9IGNsaWVudCk7CisgICAgICAgIEFTU0VSVChpdC0+c2Vjb25kICE9IGNs
aWVudCk7CiAjZW5kaWYKIAogICAgIGludCBwYWdlSWQgPSBtX25leHRBdmFpbGFibGVQYWdlSWQr
KzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGJlZGE1
M2RiN2M0YTY1MzY2NThmYmRiZTg5YWUwOGJjZWNlNTAwZjQuLjU3MjA2ZWI3YmI1MmE4ZDhhODQ4
ZGY1OTY3YTEwYzRiNzBlMDc3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIHZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbjo6c2VuZEhUVFBSZXNwb25zZUhlYWRlcihpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyCiAg
ICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGl0LT5maXJzdCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZChpdC0+dmFsdWUgKyAiXHJcbiIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChpdC0+c2Vjb25kICsgIlxyXG4iKTsKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4i
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9xdC9XZWJJbnNwZWN0b3JTZXJ2ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL3F0L1dlYkluc3BlY3RvclNlcnZlclF0LmNwcAppbmRleCBhOTNlYTkx
NjJiYzljYWY0MTAxZmUzM2QxMWU2MTBiMGMyZDVlZjg3Li44ZGUwZjkzMmRiMjYwM2FlODk4OGRl
YmIzMDI3MTI2MGMwYzZhYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL3F0L1dlYkluc3BlY3RvclNlcnZlclF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3F0L1dlYkluc3BlY3RvclNlcnZlclF0
LmNwcApAQCAtODMsMTYgKzgzLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBh
Z2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBidWls
ZGVyLmFwcGVuZCgiWyAiKTsKICAgICBDbGllbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2xpZW50
TWFwLmVuZCgpOwogICAgIGZvciAoQ2xpZW50TWFwOjppdGVyYXRvciBpdCA9IG1fY2xpZW50TWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2UgPSBpdC0+dmFsdWUtPnBhZ2UoKTsKKyAgICAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0g
aXQtPnNlY29uZC0+cGFnZSgpOwogICAgICAgICBpZiAoaXQgIT0gbV9jbGllbnRNYXAuYmVnaW4o
KSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgieyBcImlkXCI6ICIgKyBTdHJpbmc6Om51bWJlcihpdC0+a2V5KSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJ7IFwiaWRcIjogIiArIFN0cmluZzo6bnVtYmVyKGl0LT5maXJzdCkpOwog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBcInRpdGxlXCI6IFwiIik7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHdlYlBhZ2UtPnBhZ2VUaXRsZSgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlwiLCBcInVybFwiOiBcIiIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCh3ZWJQYWdlLT5hY3Rp
dmVVUkwoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiwgXCJpbnNwZWN0b3JVcmxcIjog
XCIiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocmVtb3RlSW5zcGVjdG9yUGFnZVBhdGgoKSAr
IFN0cmluZzo6bnVtYmVyKGl0LT5rZXkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmVtb3Rl
SW5zcGVjdG9yUGFnZVBhdGgoKSArIFN0cmluZzo6bnVtYmVyKGl0LT5maXJzdCkpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXCIgfSIpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgiIF0i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAppbmRleCA0YTBjNDc1MjkzN2I4NzJkNWRlMjY5YzkxNjk0ZTIyMThk
MzIwZTFkLi4wNzkyMjk4NWU0NTY1ZjNjNzNjYWRjM2EwY2Y0NTUyMTdjNjE5OTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiAgICAgUGVuZGluZ1JlcXVl
c3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUmVxdWVzdHMuYmVnaW4oKTsKICAg
ICBQZW5kaW5nUmVxdWVzdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nUmVxdWVz
dHMuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5pbnZhbGlkYXRlKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPmludmFsaWRhdGUoKTsKICAgICAK
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDlk
ZGFjOGU1MTFmNjhiOTliZWI4NDA5NmIzNDQ3Y2IzNzVlOWY1Zi4uMTJhYmY2ZGMyZTRmMmEwY2Ex
NjJiNGYxOWIzMmVhMDU2ZmFlODIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0xNDksMTAgKzE0OSwx
MCBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCkKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGll
cy5pc0VtcHR5KCkpCi0gICAgICAgIGRpZEdldFNpdGVzV2l0aERhdGEoVmVjdG9yPFN0cmluZz4o
KSwgbV9wZW5kaW5nR2V0U2l0ZXNSZXBsaWVzLmJlZ2luKCktPmtleSk7CisgICAgICAgIGRpZEdl
dFNpdGVzV2l0aERhdGEoVmVjdG9yPFN0cmluZz4oKSwgbV9wZW5kaW5nR2V0U2l0ZXNSZXBsaWVz
LmJlZ2luKCktPmZpcnN0KTsKIAogICAgIHdoaWxlICghbV9wZW5kaW5nQ2xlYXJTaXRlRGF0YVJl
cGxpZXMuaXNFbXB0eSgpKQotICAgICAgICBkaWRDbGVhclNpdGVEYXRhKG1fcGVuZGluZ0NsZWFy
U2l0ZURhdGFSZXBsaWVzLmJlZ2luKCktPmtleSk7CisgICAgICAgIGRpZENsZWFyU2l0ZURhdGEo
bV9wZW5kaW5nQ2xlYXJTaXRlRGF0YVJlcGxpZXMuYmVnaW4oKS0+Zmlyc3QpOwogCiAgICAgLy8g
VGVsbCB0aGUgcGx1Zy1pbiBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgcGx1
Zy1pbiBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAg
IG1fcGx1Z2luUHJvY2Vzc01hbmFnZXItPnJlbW92ZVBsdWdpblByb2Nlc3NQcm94eSh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCA4MWNkZTI1MzBhYWQ2
MjE0NTZkMzg5NzNlNWE0YWYwODM2NDg0Y2RiLi45MTgyZjEzODQ2N2U5M2FjYjQzMWNkNDdiMDk0
ZDExMzE0ZDRlMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBA
IC05MTUsNyArOTE1LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YWJsZURpY3Rpb25hcnk+IGNy
ZWF0ZURpY3Rpb25hcnlGcm9tSGFzaE1hcChjb25zdCBIYXNoTWFwPFMKICAgICBSZWZQdHI8TXV0
YWJsZURpY3Rpb25hcnk+IHJlc3VsdCA9IE11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAuZW5k
KCk7CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3VsdC0+c2V0KGl0
LT5rZXksIFJlZlB0cjxXZWJVSW50NjQ+KFdlYlVJbnQ2NDo6Y3JlYXRlKGl0LT52YWx1ZSkpLmdl
dCgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXQoaXQtPmZpcnN0LCBSZWZQdHI8V2ViVUludDY0PihX
ZWJVSW50NjQ6OmNyZWF0ZShpdC0+c2Vjb25kKSkuZ2V0KCkpOwogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3Bw
CmluZGV4IGQyYTEwNmZlMDZlY2MyOTFlNGZkODVlNWU5YzEwZDMyYmU5MjAzMDUuLmMwYzcwNjE3
YmUyN2FkNGQyMGM0MjBmMWRlNDM2OTE4M2Q1MjkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC0yNjMsMTQgKzI2MywxNCBAQCB2b2lkIFdl
Ykljb25EYXRhYmFzZTo6ZGlkRmluaXNoVVJMSW1wb3J0KCkKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBTdHJpbmc+OjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXAuZW5k
KCk7CiAgICAgCiAgICAgZm9yICg7IGkgIT0gZW5kOyArK2kpIHsKLSAgICAgICAgTE9HKEljb25E
YXRhYmFzZSwgIldLMiBVSVByb2Nlc3MgcGVyZm9ybWluZyBkZWxheWVkIGNhbGxiYWNrIG9uIGNh
bGxiYWNrIElEICVpIGZvciBwYWdlIHVybCAlcyIsIChpbnQpaS0+a2V5LCBpLT52YWx1ZS5hc2Np
aSgpLmRhdGEoKSk7Ci0gICAgICAgIEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBtX2ljb25E
YXRhYmFzZUltcGwtPnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChpLT52YWx1ZSwg
MCk7CisgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIHBlcmZvcm1pbmcg
ZGVsYXllZCBjYWxsYmFjayBvbiBjYWxsYmFjayBJRCAlaSBmb3IgcGFnZSB1cmwgJXMiLCAoaW50
KWktPmZpcnN0LCBpLT5zZWNvbmQuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBJY29uTG9hZERl
Y2lzaW9uIGRlY2lzaW9uID0gbV9pY29uRGF0YWJhc2VJbXBsLT5zeW5jaHJvbm91c0xvYWREZWNp
c2lvbkZvckljb25VUkwoaS0+c2Vjb25kLCAwKTsKIAogICAgICAgICAvLyBEZWNpc2lvbnMgc2hv
dWxkIG5ldmVyIGJlIHVua25vd24gYWZ0ZXIgdGhlIGluaXRhbCBpbXBvcnQgaXMgY29tcGxldGUK
ICAgICAgICAgQVNTRVJUKGRlY2lzaW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAgICAg
Ly8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBXZSBuZWVkIHRvIGtub3cgd2hpY2ggY29ubmVj
dGlvbiB0byBzZW5kIHRoaXMgbWVzc2FnZSB0by4KLSAgICAgICAgbV93ZWJDb250ZXh0LT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkljb25EYXRhYmFzZVByb3h5OjpSZWNlaXZlZElj
b25Mb2FkRGVjaXNpb24oc3RhdGljX2Nhc3Q8aW50PihkZWNpc2lvbiksIGktPmtleSkpOworICAg
ICAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRh
dGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihzdGF0aWNfY2FzdDxpbnQ+KGRl
Y2lzaW9uKSwgaS0+Zmlyc3QpKTsKICAgICB9CiAgICAgCiAgICAgbV9wZW5kaW5nTG9hZERlY2lz
aW9uVVJMTWFwLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0
YS5jcHAKaW5kZXggYzZkOGM2NGJhODU5NjI1MWQ1ZDM2Y2ZlOTE5YTI5NjM4MjcxMTk0Yy4uNjMy
YWEzYjc1NTRkYjI0M2JkMzc1ZGQ3OTIxMzk1MzFlNjlhZTFmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcApAQCAtNzgsNyArNzgsNyBAQCBQYXNzUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0CiAgICAg
SW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0
b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFzLnNl
dChpdC0+a2V5LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+dmFsdWUpKTsKKyAgICAgICAgd2tFeHRy
YXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOwogCiAgICAg
cmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYTIwZTQ2N2ZlNzY3
ZDY0NDQ4OTJlYzYxNTIyM2M4ZjYyOGZiYjJhOC4uMjJhMmI3ZjJjN2EyNDFjZWRlOTZiOTc0YmUz
NGFiNDQ2MGI3MTdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTI2Niw5ICsyNjYsOSBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tV
UkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVybCkKICAgICAvLyBJdGVtcyBp
biBiYWNrL2ZvcndhcmQgbGlzdCBoYXZlIGJlZW4gYWxyZWFkeSBjaGVja2VkLgogICAgIC8vIE9u
ZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgc2FuZGJveCBleHRlbnNpb25zIGZvciBmaWxlIFVS
THMgaW4gYi9mIGxpc3QgaXMgaWYgdGhlIGxpc3QgaGFzIGJlZW4gcmVpbnN0YXRlZCBhZnRlciBh
IGNyYXNoIG9yIGEgYnJvd3NlciByZXN0YXJ0LgogICAgIGZvciAoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbU1hcDo6aXRlcmF0b3IgaXRlciA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5iZWdpbigp
LCBlbmQgPSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpIHsKLSAgICAgICAgaWYgKEtVUkwoS1VSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkpLmZpbGVT
eXN0ZW1QYXRoKCkgPT0gcGF0aCkKKyAgICAgICAgaWYgKEtVUkwoS1VSTCgpLCBpdGVyLT5zZWNv
bmQtPnVybCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgaWYgKEtVUkwoS1VSTCgpLCBpdGVyLT52YWx1ZS0+b3JpZ2luYWxVUkwo
KSkuZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0
ZXItPnNlY29uZC0+b3JpZ2luYWxVUkwoKSkuZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRoKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yOTEsMTUgKzI5MSwxNSBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbAogCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsK
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0
aXRsZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRl
bUlEKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJkRGF0YS5k
YXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7Ci0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+c2V0VVJMKHVybCk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0
VGl0bGUodGl0bGUpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNldEJhY2tGb3J3YXJk
RGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpKTsKKyAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0T3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpOwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRVUkwodXJsKTsKKyAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC0+c2V0VGl0bGUodGl0bGUpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLT5zZXRCYWNrRm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0Zvcndh
cmREYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kRGlkR2V0UGx1
Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4g
cGx1Z2luSW5mb3MpCkBAIC01NzgsNyArNTc4LDcgQEAgc2l6ZV90IFdlYlByb2Nlc3NQcm94eTo6
ZnJhbWVDb3VudEluUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpIGNvbnN0CiB7CiAgICAgc2l6ZV90
IHJlc3VsdCA9IDA7CiAgICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQ
cm94eT4gPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fZnJhbWVNYXAuYmVnaW4oKTsgaXRlciAh
PSBtX2ZyYW1lTWFwLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXItPnZhbHVlLT5w
YWdlKCkgPT0gcGFnZSkKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZC0+cGFnZSgpID09IHBhZ2Up
CiAgICAgICAgICAgICArK3Jlc3VsdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXgg
ZmNhNzFhMWQwOTVmZWVmYWJhMDVhNmE3MjVmZGI0MzYzNTgxNGI2Ni4uZDZiZGI4ZTE1MzE0NTBi
MTJhYmM4MmQ4NmIyZmMwMTNmMTM1NDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0
aW9uKEdlb2xvY2F0aW8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9nZW9sb2NhdGlvblRvSURN
YXAucmVtb3ZlKGl0KTsKLSAgICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5yZW1vdmUoaXQtPnZhbHVl
KTsKKyAgICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5yZW1vdmUoaXQtPnNlY29uZCk7CiB9CiAKIHZv
aWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVHZW9sb2Nh
dGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBnZW9sb2NhdGlvbklELCBib29sIGFsbG93
ZWQpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvCiAgICAgaWYgKGl0
ID09IG1faWRUb0dlb2xvY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24gPSBpdC0+dmFsdWU7CisgICAgR2VvbG9jYXRpb24qIGdl
b2xvY2F0aW9uID0gaXQtPnNlY29uZDsKICAgICBnZW9sb2NhdGlvbi0+c2V0SXNBbGxvd2VkKGFs
bG93ZWQpOwogCiAgICAgbV9pZFRvR2VvbG9jYXRpb25NYXAucmVtb3ZlKGl0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IDc3ZTAzMDkzZDVm
ZDBkOTY0MjRkMzE1NGY3N2M5NGQ0MTk0YjE2ZWEuLjBjNDI5NWU2MTJjZGQ3NmYwM2E1MzEzZDQ1
ZTZjZWMxZmIxZTg1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlLmNwcApAQCAtNjksMTAgKzY5LDEwIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUqCiAK
ICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCku
YWRkKG5vZGUsIDApOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y3JlYXRl
KG5vZGUpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBub2RlSGFuZGxlLmdldCgpOwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbm9kZUhhbmRsZS5nZXQoKTsKICAgICByZXR1
cm4gbm9kZUhhbmRsZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggZDYwMDBhYjkxMzMyOWNkNTdkYWIzZTNmZDY0
MDE0Yzc2ZTk1MmRjMi4uMWI3NGYwMTI0MDA4ZGIzYzA3ODI4ZWE2ZjZkMmMwNWFjMDU5YzMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAg
LTQ4LDEwICs0OCwxMCBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbgogCiAgICAgRE9NSGFuZGxl
Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7
CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAg
ICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PiByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShyYW5nZSk7
Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHJhbmdlSGFuZGxlLmdldCgpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJuIHJh
bmdlSGFuZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNw
cAppbmRleCBkOGFjM2EyNWRmMzViNGEwNWYwMjJjMTBhMzM4NDdmNjZmZjk2ZThjLi45MmRlNjFj
NmMyYmQ2ZTllNDJjNDc1ZGFhMDdjMDE3NzliMTc1N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAogICAgIEltbXV0YWJs
ZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGV4dHJhcy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGV4dHJhcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFzLnNldChpdC0+a2V5LCBXZWJTdHJpbmc6OmNy
ZWF0ZShpdC0+dmFsdWUpKTsKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3Ry
aW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOwogCiAgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25h
cnk6OmFkb3B0KHdrRXh0cmFzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAppbmRleCA3MTQ0YzZiNmI4OWI2NjJkMmM1NDA3OWQxOTg3NjIwYzVhYWQ3MjAyLi4wYTY1YTJk
NDhmYjQwY2EyZjY4YTVlYWI0ODc5ZDNjN2Q2ZjgwNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpwb2xpY3lGb3JPcmlnaW4oV2ViQ29yZTo6
CiAgICAgQVNTRVJUKCFvcmlnaW4tPmlzVW5pcXVlKCkpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBi
b29sPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Blcm1pc3Npb25zTWFwLmZpbmQob3JpZ2luLT50
b1Jhd1N0cmluZygpKTsKICAgICBpZiAoaXQgIT0gbV9wZXJtaXNzaW9uc01hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGl0LT52YWx1ZSA/IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFs
bG93ZWQgOiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kID8gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCA6
IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDsKICNlbmRpZgogICAgIAogICAg
IHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOwpAQCAtMTIz
LDcgKzEyMyw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBtX25vdGlmaWNhdGlvbklETWFw
LnNldChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKICAgICAKICAgICBOb3RpZmljYXRp
b25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQo
bm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4o
KSkuaXRlcmF0b3I7Ci0gICAgaXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CisgICAg
aXQtPnNlY29uZC5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNh
dGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb25VUkwoKS5zdHJpbmcoKSwgbm90aWZpY2F0
aW9uLT50YWcoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkp
OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJO
b3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgaWYgKGl0
ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKKyAg
ICBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+c2Vjb25kOwogICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdl
SUQoKSk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKQEAgLTI0MCwxMCArMjQwLDEwIEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRl
eHRNYXAodWludDY0X3Qgbm90aWZpY2F0CiAgICAgLy8gVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlv
biBmb3IgbWFuYWdpbmcgdGhlIGhhc2ggbWFwcy4KICAgICBOb3RpZmljYXRpb25Db250ZXh0TWFw
OjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKG5vdGlmaWNhdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoaXQgIT0gbV9ub3RpZmlj
YXRpb25Db250ZXh0TWFwLmVuZCgpKTsKLSAgICBzaXplX3QgaW5kZXggPSBpdC0+dmFsdWUuZmlu
ZChub3RpZmljYXRpb25JRCk7CisgICAgc2l6ZV90IGluZGV4ID0gaXQtPnNlY29uZC5maW5kKG5v
dGlmaWNhdGlvbklEKTsKICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52
YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQorICAgIGl0
LT5zZWNvbmQucmVtb3ZlKGluZGV4KTsKKyAgICBpZiAoaXQtPnNlY29uZC5pc0VtcHR5KCkpCiAg
ICAgICAgIG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDBjZTcwM2MwYWQ4ODAzY2EyOGRk
NTQzMThlNzE4OTQzNjM2ZDY5NjIuLjM1ODUzM2ZlYmZjODYyN2I5YzNhY2FmNjYwNjgxNGViOGRk
MjcxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0yMTIsNyArMjEy
LDcgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmludmFsaWRhdGUoKQogICAgIFZlY3RvcjxO
UE9iamVjdCo+IG9iamVjdHM7CiAKICAgICBmb3IgKEhhc2hNYXA8TlBPYmplY3QqLCBKU0M6Oldl
YWs8SlNOUE9iamVjdD4gPjo6aXRlcmF0b3IgcHRyID0gbV9qc05QT2JqZWN0cy5iZWdpbigpLCBl
bmQgPSBtX2pzTlBPYmplY3RzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICBK
U05QT2JqZWN0KiBqc05QT2JqZWN0ID0gcHRyLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgSlNOUE9i
amVjdCoganNOUE9iamVjdCA9IHB0ci0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWpzTlBP
YmplY3QpIC8vIFNraXAgem9tYmllcy4KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBv
YmplY3RzLmFwcGVuZChqc05QT2JqZWN0LT5sZWFrTlBPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcAppbmRleCBmMWU3OWU0NWQ4MTZkMjcwY2I0NWMxMDMwODM1ZjQ2ZjkzMjNhMDU2
Li5iMjA3NDMyMTNiYzVlYTQxM2MyZjA5NjNkMzljNmEyMjMzNGZkMTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKQEAgLTE5OSw4ICsxOTksOCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2lu
OjpkZXN0cm95U3RyZWFtKE5QU3RyZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbikKICAgICBO
ZXRzY2FwZVBsdWdpblN0cmVhbSogcGx1Z2luU3RyZWFtID0gMDsKIAogICAgIGZvciAoU3RyZWFt
c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0cmVhbXMuYmVnaW4oKSwgZW5kID0gbV9zdHJl
YW1zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS0+bnBT
dHJlYW0oKSA9PSBzdHJlYW0pIHsKLSAgICAgICAgICAgIHBsdWdpblN0cmVhbSA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPm5wU3RyZWFtKCkgPT0gc3RyZWFtKSB7
CisgICAgICAgICAgICBwbHVnaW5TdHJlYW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6dW5zY2hlZHVsZVRpbWVyKHVuc2lnbmVkIHRpbWVySUQpCiAgICAgaWYgKGl0
ID09IG1fdGltZXJzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8VGltZXI+
IHRpbWVyID0gYWRvcHRQdHIoaXQtPnZhbHVlKTsKKyAgICBPd25QdHI8VGltZXI+IHRpbWVyID0g
YWRvcHRQdHIoaXQtPnNlY29uZCk7CiAgICAgbV90aW1lcnMucmVtb3ZlKGl0KTsKIAogICAgIHRp
bWVyLT5zdG9wKCk7CkBAIC03NjIsOCArNzYyLDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6ZnJh
bWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBpZiAoaXQgPT0gbV9w
ZW5kaW5nVVJMTm90aWZpY2F0aW9ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIHVybCA9IGl0LT52YWx1ZS5maXJzdDsKLSAgICB2b2lkKiBub3RpZmljYXRpb25EYXRhID0g
aXQtPnZhbHVlLnNlY29uZDsKKyAgICBTdHJpbmcgdXJsID0gaXQtPnNlY29uZC5maXJzdDsKKyAg
ICB2b2lkKiBub3RpZmljYXRpb25EYXRhID0gaXQtPnNlY29uZC5zZWNvbmQ7CiAKICAgICBtX3Bl
bmRpbmdVUkxOb3RpZmljYXRpb25zLnJlbW92ZShpdCk7CiAgICAgCkBAIC03NzgsOCArNzc4LDgg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6ZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Ym9vbCB3YXNDYW5jZWxsZWQpCiAgICAgaWYgKGl0ID09IG1fcGVuZGluZ1VSTE5vdGlmaWNhdGlv
bnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmwgPSBpdC0+dmFsdWUu
Zmlyc3Q7Ci0gICAgdm9pZCogbm90aWZpY2F0aW9uRGF0YSA9IGl0LT52YWx1ZS5zZWNvbmQ7Cisg
ICAgU3RyaW5nIHVybCA9IGl0LT5zZWNvbmQuZmlyc3Q7CisgICAgdm9pZCogbm90aWZpY2F0aW9u
RGF0YSA9IGl0LT5zZWNvbmQuc2Vjb25kOwogCiAgICAgbV9wZW5kaW5nVVJMTm90aWZpY2F0aW9u
cy5yZW1vdmUoaXQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDY0YWUxYTRlNGIyOGQzOGFiYzY3NzlmYmNiZjA2ZWFl
YjEzNmQ5ZDkuLmQwN2Y4Yjc5ZDZhODAyYWY3OTQwN2JhOTU2NjAxNTY5MmJlNWY1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkSFRUUEhlYWRlcnMoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGxvbmcgbG9uZyYgZXhwZQogICAgIAogICAgIEhUVFBI
ZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMo
KS5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+a2V5LmNoYXJhY3RlcnMoKSwgaXQtPmtleS5s
ZW5ndGgoKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5maXJzdC5jaGFyYWN0
ZXJzKCksIGl0LT5maXJzdC5sZW5ndGgoKSk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHNlcGFyYXRvci5jaGFyYWN0ZXJzKCksIHNlcGFyYXRvci5sZW5ndGgoKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT52YWx1ZS5jaGFyYWN0ZXJzKCksIGl0LT52YWx1ZS5sZW5n
dGgoKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5zZWNvbmQuY2hhcmFjdGVy
cygpLCBpdC0+c2Vjb25kLmxlbmd0aCgpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7CiAgICAgfQogICAgIApAQCAtMjg0LDcgKzI4NCw3IEBAIFBsdWdpblZpZXc6On5QbHVn
aW5WaWV3KCkKIAogICAgIC8vIENhbmNlbCBhbGwgcGVuZGluZyBmcmFtZSBsb2Fkcy4KICAgICBm
b3IgKEZyYW1lTG9hZE1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmJlZ2lu
KCksIGVuZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgaXQtPmtleS0+c2V0TG9hZExpc3RlbmVyKDApOworICAgICAgICBpdC0+Zmlyc3QtPnNl
dExvYWRMaXN0ZW5lcigwKTsKIAogICAgIGlmIChtX3BsdWdpbikgewogICAgICAgICBtX2lzQmVp
bmdEZXN0cm95ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNzM1NjA5NGRlODYxODlhMGU1ODQz
NmE3YWQ3NzIxNzJiOGRiOTFkMi4uNGYxNzZkZDg2YTQ1NWIzNzUwOTMxZjJjYzk0ZmI5Y2U3ODE1
YWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpsYXllckJ5SUQoV2ViS2l0OjpXZWJMYXll
cklECiAgICAgSGFzaE1hcDxXZWJMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6
aXRlcmF0b3IgaXQgPSB0YWJsZS5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gdGFibGUuZW5kKCkp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CiB9CiAKIHN0YXRpYyBXZWJMYXllcklEIHRvV2ViTGF5ZXJJRChHcmFwaGljc0xh
eWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcAppbmRleCA1NzRjMDc5ZGNmNGI0ZWU3NDRjNjRhZWE3MDlkMDUyMDNmYjFl
MjYyLi5hM2E1NzI5MDczYmRlOWZmNzMzNWU3YzJhN2E4NGNlYTNlZDU4M2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgaW50NjRfdCBMYXllclRyZWVDb29yZGluYXRvcjo6YWRvcHRJbWFnZUJh
Y2tpbmdTdG9yZShJbWFnZSogaW1hZ2UpCiAgICAgSGFzaE1hcDxpbnQ2NF90LCBpbnQ+OjppdGVy
YXRvciBpdCA9IG1fZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZWZDb3VudHMuZmluZChrZXkpOwog
CiAgICAgaWYgKGl0ICE9IG1fZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZWZDb3VudHMuZW5kKCkp
IHsKLSAgICAgICAgKysoaXQtPnZhbHVlKTsKKyAgICAgICAgKysoaXQtPnNlY29uZCk7CiAgICAg
ICAgIHJldHVybiBrZXk7CiAgICAgfQogCkBAIC00NzksOSArNDc5LDkgQEAgdm9pZCBMYXllclRy
ZWVDb29yZGluYXRvcjo6cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKGludDY0X3Qga2V5KQogICAg
IGlmIChpdCA9PSBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlUmVmQ291bnRzLmVuZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpdC0+dmFsdWUtLTsKKyAgICBpdC0+c2Vjb25kLS07CiAKLSAg
ICBpZiAoaXQtPnZhbHVlKQorICAgIGlmIChpdC0+c2Vjb25kKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlUmVmQ291bnRzLnJlbW92ZShpdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCBiZTgyYTE5N2E3MzZkNjIzMmE1NDM3ZGE5YzI5MDJl
YjA1Y2EzYTBiLi40Y2E0ZTVmZGI3MmNmY2VhYzY5NTQ1ZGQxN2Q5ZjdhMmNjODQ2ODM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTEzMCw5ICsxMzAsOSBAQCB2b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBpZiAoaXQg
PT0gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAg
Ci0gICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnJlbW92ZShpdC0+dmFsdWUuZ2V0KCkpOworICAg
IFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5yZW1vdmUoaXQtPnNlY29uZC5nZXQoKSk7CiAKLSAgICBo
aXN0b3J5SXRlbVRvSURNYXAoKS5yZW1vdmUoaXQtPnZhbHVlKTsKKyAgICBoaXN0b3J5SXRlbVRv
SURNYXAoKS5yZW1vdmUoaXQtPnNlY29uZCk7CiAgICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkucmVt
b3ZlKGl0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDIyMjczYzFmNjQ2MjFkOWZmMDI4MGU3NWNlNjEzNWJh
NWQyNWFiNzMuLmMyZjAxNjUzNzU5NTNiNTNjYzNjZDFiOWViNDMxZGI1ZWNlYjkzYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0
b3JOYW1lKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JOYW1lKQogICAgIHN0YXRpYyBjb25zdCBTZWxl
Y3Rvck5hbWVNYXAqIGV4Y2VwdGlvbk1hcCA9IGNyZWF0ZVNlbGVjdG9yRXhjZXB0aW9uTWFwKCk7
CiAgICAgU2VsZWN0b3JOYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGV4Y2VwdGlvbk1hcC0+
ZmluZChzZWxlY3Rvck5hbWUpOwogICAgIGlmIChpdCAhPSBleGNlcHRpb25NYXAtPmVuZCgpKQot
ICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAog
ICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgY29sb24uCiAgICAgLy8gTm8gbmVlZCB0byBjYXBp
dGFsaXplIHRoZSBjb21tYW5kIG5hbWUgc2luY2UgRWRpdG9yIGNvbW1hbmQgbmFtZXMgYXJlIG5v
dCBjYXNlIHNlbnNpdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDZhYTkyMDQxNTk2YzkzOWZhOWYyMTQ4MWE5YzdlYmE0ZDU4YjY5ZDguLjE0OTBmZjNj
YWY3NDM3M2NjNmJkNjAzMWY0YmJjNWFkNzg5OTg4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
dmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYg
bGlua0hhCiAgICAgICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94
eT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BhZ2VHcm91cE1hcC5iZWdpbigpOwogICAgICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcGFnZUdyb3VwTWFwLmVuZCgpOwogICAgICAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICAgICAgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3Jv
dXA6OnBhZ2VHcm91cChpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGxpbmtIYXNoZXNbaV0pOwor
ICAgICAgICAgICAgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXA6OnBhZ2VHcm91
cChpdC0+c2Vjb25kLT5pZGVudGlmaWVyKCkpLCBsaW5rSGFzaGVzW2ldKTsKICAgICB9CiAKICAg
ICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CkBAIC0z
NTEsNyArMzUxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjphbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdl
ZCgpCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fcGFnZUdyb3VwTWFwLmJlZ2luKCk7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX3BhZ2VHcm91cE1hcC5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICBQYWdlOjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cDo6cGFnZUdyb3VwKGl0
LT52YWx1ZS0+aWRlbnRpZmllcigpKSk7CisgICAgICAgIFBhZ2U6OmFsbFZpc2l0ZWRTdGF0ZUNo
YW5nZWQoUGFnZUdyb3VwOjpwYWdlR3JvdXAoaXQtPnNlY29uZC0+aWRlbnRpZmllcigpKSk7CiAK
ICAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9
CkBAIC01MjcsNyArNTI3LDcgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2Uo
KSBjb25zdAogeyAgICAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wYWdlTWFwLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlTWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJQYWdlKiBwYWdlID0gKCpp
dCkudmFsdWUuZ2V0KCk7CisgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSAoKml0KS5zZWNvbmQuZ2V0
KCk7CiAgICAgICAgIGlmIChwYWdlLT53aW5kb3dBbmRXZWJQYWdlQXJlRm9jdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHBhZ2U7CiAgICAgfQpAQCAtNTQ1LDE0ICs1NDUsMTQgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQg
Ym90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdh
eS4gCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgMCk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBwYXJhbWV0
ZXJzKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgcGFyYW1l
dGVycyk7CiAKICAgICAgICAgLy8gQmFsYW5jZWQgYnkgYW4gZW5hYmxlVGVybWluYXRpb24gaW4g
cmVtb3ZlV2ViUGFnZS4KICAgICAgICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAgICAgfQogCi0g
ICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIEFTU0VSVChyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQpCkBAIC03ODksMTEgKzc4OSwxMSBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2Vi
UHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERh
dAogewogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VH
cm91cElELCAwKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJU
KCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CisgICAgICAgIEFT
U0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnNlY29uZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQpAQCAtOTEyLDcgKzkxMiw3IEBAIHN0YXRpYyB2b2lkIGZyb21Db3VudGVkU2V0VG9IYXNo
TWFwKFR5cGVDb3VudFNldCogY291bnRlZFNldCwgSGFzaE1hcDxTdHJpbmcsIHVpCiB7CiAgICAg
VHlwZUNvdW50U2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb3VudGVkU2V0LT5lbmQoKTsKICAg
ICBmb3IgKFR5cGVDb3VudFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3VudGVkU2V0LT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIG1hcC5zZXQoaXQtPmtleSwgaXQtPnZhbHVl
KTsKKyAgICAgICAgbWFwLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogfQogCiBzdGF0aWMg
dm9pZCBnZXRXZWJDb3JlTWVtb3J5Q2FjaGVTdGF0aXN0aWNzKFZlY3RvcjxIYXNoTWFwPFN0cmlu
ZywgdWludDY0X3Q+ID4mIHJlc3VsdCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6c2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hl
Y2tlclN0YXRlKQogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46Oml0
ZXJhdG9yIGVuZCA9IG1fcGFnZU1hcC5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlPiA+OjppdGVyYXRvciBpdCA9IG1fcGFnZU1hcC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2ViUGFnZSogcGFnZSA9ICgqaXQpLnZhbHVlLmdldCgp
OworICAgICAgICBXZWJQYWdlKiBwYWdlID0gKCppdCkuc2Vjb25kLmdldCgpOwogICAgICAgICBp
ZiAoY29udGludW91c1NwZWxsQ2hlY2tpbmdUdXJuZWRPZmYpCiAgICAgICAgICAgICBwYWdlLT51
bm1hcmtBbGxNaXNzcGVsbGluZ3MoKTsKICAgICAgICAgaWYgKGdyYW1tYXJDaGVja2luZ1R1cm5l
ZE9mZikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBhOWE1ZTgzNzUxZjVmYTY4ZWJmNmNiZTE3MTg4YjliODgxYTZiMzhlLi4xYTQzYTc4ZjJmY2Fh
YjI1NmZhMzczZTA3MDQ0YTlkYTgyNDRlZTU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDgtMjggIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEyNjkxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUyMzkKKworICAgICAgICBpdCBicmVha3MgZXZlcnl0aGluZyBhbmQgZml4ZXMg
bm90aGluZyAoUmVxdWVzdGVkIGJ5IHBpemxvIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjphZGRNb2NrUmVj
b2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05vdGlm
aWNhdGlvblByZXNlbnRlci5jcHA6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNp
bXVsYXRlQ2xpY2spOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaG93KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL0NwcEJvdW5kQ2xhc3Mu
Y3BwOgorICAgICAgICAoQ3BwQm91bmRDbGFzczo6fkNwcEJvdW5kQ2xhc3MpOgorICAgICAgICAo
Q3BwQm91bmRDbGFzczo6aW52b2tlKToKKyAgICAgICAgKENwcEJvdW5kQ2xhc3M6OmdldFByb3Bl
cnR5KToKKyAgICAgICAgKENwcEJvdW5kQ2xhc3M6OnNldFByb3BlcnR5KToKKyAgICAgICAgKENw
cEJvdW5kQ2xhc3M6OmJpbmRDYWxsYmFjayk6CisgICAgICAgIChDcHBCb3VuZENsYXNzOjpiaW5k
UHJvcGVydHkpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKGFwcGx5Rm9udE1hcCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnByaW50
UmVzb3VyY2VEZXNjcmlwdGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW06CisgICAgICAgICh3b3JsZElERm9yV29ybGQpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6fkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjp3aW5Ob3RpZmljYXRpb25SZWNlaXZlZCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjpkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgorICAg
ICAgICAod29ybGRJREZvcldvcmxkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmV2YWx1YXRlU2Ny
aXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
X0J1bmRsZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Ondv
cmxkSURGb3JXb3JsZCk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0
SW5Jc29sYXRlZFdvcmxkKToKKwogMjAxMi0wOC0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJh
IEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBm
aXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIuY3BwCmluZGV4IDEzYzhmZjFlYzRjMWNkZTU1MDc2Njk4ZGZjZmU1ZTg3MTI2
YTgyZWIuLjcxNjIyMmY5YWNjZmU4ZmZiZTM1OTk3ODUzODM3NjQ3MDZjNjRlMWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlcjo6YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0cmlu
ZyYgcmVzCiAgICAgICAgIFN0cmluZyBsYW5nU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChsYW5n
dWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKCFtX3JlY29nbml0aW9uUmVzdWx0cy5j
b250YWlucyhsYW5nU3RyaW5nKSkKICAgICAgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHRzLnNl
dChsYW5nU3RyaW5nLCBWZWN0b3I8V2ViU3BlZWNoSW5wdXRSZXN1bHQ+KCkpOwotICAgICAgICBt
X3JlY29nbml0aW9uUmVzdWx0cy5maW5kKGxhbmdTdHJpbmcpLT52YWx1ZS5hcHBlbmQocmVzKTsK
KyAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdHMuZmluZChsYW5nU3RyaW5nKS0+c2Vjb25kLmFw
cGVuZChyZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKaW5kZXggYTIxNTg4Zjc0NGU1YzNm
NWFiNzBkYmRiMDNjMjc1YzUwNzA4ZjAzYS4uMGM1NDAwZjVlOWU4ZjcxNzBlY2Y1OTlhODFiZDQy
NmZiZDc3MjkxZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTm90
aWZpY2F0aW9uUHJlc2VudGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNrKGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCiAg
ICAgaWYgKG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5kKGlkKSA9PSBtX2FjdGl2ZU5vdGlmaWNh
dGlvbnMuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBjb25zdCBXZWJO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiA9IG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5kKGlk
KS0+dmFsdWU7CisgICAgY29uc3QgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24gPSBtX2Fj
dGl2ZU5vdGlmaWNhdGlvbnMuZmluZChpZCktPnNlY29uZDsKICAgICBXZWJOb3RpZmljYXRpb24g
ZXZlbnRUYXJnZXQobm90aWZpY2F0aW9uKTsKICAgICBldmVudFRhcmdldC5kaXNwYXRjaENsaWNr
RXZlbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OnNob3coY29uc3QgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24p
CiAgICAgICAgIFdURjo6U3RyaW5nIHJlcGxhY2VJZChub3RpZmljYXRpb24ucmVwbGFjZUlkKCku
ZGF0YSgpLCBub3RpZmljYXRpb24ucmVwbGFjZUlkKCkubGVuZ3RoKCkpOwogICAgICAgICBpZiAo
bV9yZXBsYWNlbWVudHMuZmluZChyZXBsYWNlSWQpICE9IG1fcmVwbGFjZW1lbnRzLmVuZCgpKQog
ICAgICAgICAgICAgcHJpbnRmKCJSRVBMQUNJTkcgTk9USUZJQ0FUSU9OICVzXG4iLAotICAgICAg
ICAgICAgICAgICAgIG1fcmVwbGFjZW1lbnRzLmZpbmQocmVwbGFjZUlkKS0+dmFsdWUudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgbV9yZXBsYWNlbWVudHMuZmluZChyZXBsYWNl
SWQpLT5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgbV9yZXBsYWNlbWVudHMuc2V0
KHJlcGxhY2VJZCwgV1RGOjpTdHJpbmcoaWRlbnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIubGVu
Z3RoKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL0NwcEJvdW5kQ2xhc3MuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9DcHBCb3VuZENsYXNzLmNwcAppbmRleCAxYjI5ZDJiMGY1NWQwMWY3
Mzg3MTQ1Nzg3N2Y5ZGJkZjA2ZjFiNDkxLi45YjRhM2I2NDY0NWQwNTdiNDE3MmUxYzdkZmEwN2M3
YTYyZTc3Y2Y4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL0NwcEJvdW5kQ2xhc3MuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvQ3BwQm91bmRDbGFzcy5jcHAKQEAgLTIwMywxMCArMjAzLDEwIEBAIGJv
b2wgQ3BwTlBPYmplY3Q6OnNldFByb3BlcnR5KE5QT2JqZWN0KiBucE9iaiwgTlBJZGVudGlmaWVy
IGlkZW50LCBjb25zdCBOUFZhcmlhCiBDcHBCb3VuZENsYXNzOjp+Q3BwQm91bmRDbGFzcygpCiB7
CiAgICAgZm9yIChNZXRob2RMaXN0OjppdGVyYXRvciBpID0gbV9tZXRob2RzLmJlZ2luKCk7IGkg
IT0gbV9tZXRob2RzLmVuZCgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAg
ICAgZGVsZXRlIGktPnNlY29uZDsKIAogICAgIGZvciAoUHJvcGVydHlMaXN0OjppdGVyYXRvciBp
ID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGkgIT0gbV9wcm9wZXJ0aWVzLmVuZCgpOyArK2kpCi0g
ICAgICAgIGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIGktPnNlY29uZDsKIAogICAg
IC8vIFVucmVnaXN0ZXIgb3Vyc2VsdmVzIGlmIHdlIHdlcmUgYm91bmQgdG8gYSBmcmFtZS4KICAg
ICBpZiAobV9ib3VuZFRvRnJhbWUpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDcHBCb3VuZENs
YXNzOjppbnZva2UoTlBJZGVudGlmaWVyIGlkZW50LAogICAgICAgICB9CiAgICAgICAgIGNhbGxi
YWNrID0gbV9mYWxsYmFja0NhbGxiYWNrLmdldCgpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxs
YmFjayA9ICgqbWV0aG9kKS52YWx1ZTsKKyAgICAgICAgY2FsbGJhY2sgPSAoKm1ldGhvZCkuc2Vj
b25kOwogCiAgICAgLy8gQnVpbGQgYSBDcHBBcmd1bWVudExpc3QgYXJndW1lbnQgdmVjdG9yIGZy
b20gdGhlIE5QVmFyaWFudHMgY29taW5nIGluLgogICAgIENwcEFyZ3VtZW50TGlzdCBjcHBBcmd1
bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBDcHBCb3VuZENs
YXNzOjpnZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRlbnQsIE5QVmFyaWFudCogcmVzdWx0KSBj
b25zdAogICAgIH0KIAogICAgIENwcFZhcmlhbnQgY3BwVmFsdWU7Ci0gICAgaWYgKCFjYWxsYmFj
ay0+dmFsdWUtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCisgICAgaWYgKCFjYWxsYmFjay0+c2Vjb25k
LT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY3BwVmFs
dWUuY29weVRvTlBWYXJpYW50KHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzQsNyAr
Mjc0LDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRl
bnQsIGNvbnN0IE5QVmFyaWFudCogdmFsdWUpCiAKICAgICBDcHBWYXJpYW50IGNwcFZhbHVlOwog
ICAgIGNwcFZhbHVlLnNldCgqdmFsdWUpOwotICAgIHJldHVybiAoKmNhbGxiYWNrKS52YWx1ZS0+
c2V0VmFsdWUoY3BwVmFsdWUpOworICAgIHJldHVybiAoKmNhbGxiYWNrKS5zZWNvbmQtPnNldFZh
bHVlKGNwcFZhbHVlKTsKIH0KIAogdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2soY29u
c3Qgc3RyaW5nJiBuYW1lLCBDYWxsYmFjayogY2FsbGJhY2spCkBAIC0yODIsNyArMjgyLDcgQEAg
dm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBDYWxs
YmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gV2ViQmluZGluZ3M6Omdl
dFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsKICAgICBNZXRob2RMaXN0OjppdGVyYXRv
ciBvbGRDYWxsYmFjayA9IG1fbWV0aG9kcy5maW5kKGlkZW50KTsKICAgICBpZiAob2xkQ2FsbGJh
Y2sgIT0gbV9tZXRob2RzLmVuZCgpKSB7Ci0gICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+dmFs
dWU7CisgICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+c2Vjb25kOwogICAgICAgICBpZiAoIWNh
bGxiYWNrKSB7CiAgICAgICAgICAgICBtX21ldGhvZHMucmVtb3ZlKG9sZENhbGxiYWNrKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIENwcEJvdW5kQ2xhc3M6
OmJpbmRQcm9wZXJ0eShjb25zdCBzdHJpbmcmIG5hbWUsIFByb3BlcnR5Q2FsbGJhY2sqIGNhbGxi
YWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVu
dGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgUHJvcGVydHlMaXN0OjppdGVyYXRvciBvbGRDYWxs
YmFjayA9IG1fcHJvcGVydGllcy5maW5kKGlkZW50KTsKICAgICBpZiAob2xkQ2FsbGJhY2sgIT0g
bV9wcm9wZXJ0aWVzLmVuZCgpKSB7Ci0gICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+dmFsdWU7
CisgICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+c2Vjb25kOwogICAgICAgICBpZiAoIWNhbGxi
YWNrKSB7CiAgICAgICAgICAgICBtX3Byb3BlcnRpZXMucmVtb3ZlKG9sZENhbGxiYWNrKTsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlByZWZlcmVuY2VzLmNwcAppbmRleCA2ZWMwZTQzNGRkZjRlMWZmNGJjODNkN2VlOTc2MjFmMmY4
NjA0NTE4Li5jNGRlMGFiYzE0NDUwYTEwOWFhY2E3Zjk3N2EyOWU4OTM5YjI2Y2U0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0x
NTYsOSArMTU2LDkgQEAgdHlwZWRlZiB2b2lkICgqU2V0Rm9udEZhbWlseVdyYXBwZXIpKFdlYlNl
dHRpbmdzKiwgY29uc3QgV2ViU3RyaW5nJiwgVVNjcmlwdENvZGUKIHN0YXRpYyB2b2lkIGFwcGx5
Rm9udE1hcChXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlByZWZlcmVuY2VzOjpTY3Jp
cHRGb250RmFtaWx5TWFwJiBtYXAsIFNldEZvbnRGYW1pbHlXcmFwcGVyIHNldHRlcikKIHsKICAg
ICBmb3IgKFdlYlByZWZlcmVuY2VzOjpTY3JpcHRGb250RmFtaWx5TWFwOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gbWFwLmJlZ2luKCk7IGl0ZXIgIT0gbWFwLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBmb250ID0gaXRlci0+dmFsdWU7CisgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgZm9udCA9IGl0ZXItPnNlY29uZDsKICAgICAgICAgaWYgKCFmb250LmlzTnVsbCgp
ICYmICFmb250LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICgqc2V0dGVyKShzZXR0aW5ncywgZm9u
dCwgc3RhdGljX2Nhc3Q8VVNjcmlwdENvZGU+KGl0ZXItPmtleSkpOworICAgICAgICAgICAgKCpz
ZXR0ZXIpKHNldHRpbmdzLCBmb250LCBzdGF0aWNfY2FzdDxVU2NyaXB0Q29kZT4oaXRlci0+Zmly
c3QpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAppbmRleCA0ZTNlNTkyZjRiOWFkOGVjNmUwZWI3ZjUyZjU3MGJiZWFiMzEwMzFl
Li5kYjBlYTVlZWZmMjlmYWZkYmMxMDJhMTFmNTZkMGY4MjZhODJhNmY2IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xNzYzLDcgKzE3NjMs
NyBAQCB2b2lkIFdlYlZpZXdIb3N0OjpwcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoV2ViRnJh
bWUqIHdlYmZyYW1lLCBjb25zdCBjaGFyKiBtcwogdm9pZCBXZWJWaWV3SG9zdDo6cHJpbnRSZXNv
dXJjZURlc2NyaXB0aW9uKHVuc2lnbmVkIGlkZW50aWZpZXIpCiB7CiAgICAgUmVzb3VyY2VNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZmluZChpZGVudGlmaWVyKTsK
LSAgICBwcmludGYoIiVzIiwgaXQgIT0gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkgPyBp
dC0+dmFsdWUuY19zdHIoKSA6ICI8dW5rbm93bj4iKTsKKyAgICBwcmludGYoIiVzIiwgaXQgIT0g
bV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkgPyBpdC0+c2Vjb25kLmNfc3RyKCkgOiAiPHVu
a25vd24+Iik7CiB9CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnNldFBlbmRpbmdFeHRyYURhdGEoUGFz
c093blB0cjxUZXN0U2hlbGxFeHRyYURhdGE+IGV4dHJhRGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggMjY2YjIwNzllY2M3NTQ3OTRkOWNhNzVmZWMy
NDRiMGNlMmUyNDFlZC4uYjM2YThhYzNiYmQwNmIxMTYxMzE4NTdlNDlmZjI1ZTAzMWI1NjZiMSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTkwOSw4ICs5
MDksOCBAQCB1bnNpZ25lZCB3b3JsZElERm9yV29ybGQoV2ViU2NyaXB0V29ybGQgKndvcmxkKQog
ewogICAgIFdvcmxkTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB3b3JsZE1hcCgpLmVuZCgpOwog
ICAgIGZvciAoV29ybGRNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gd29ybGRNYXAoKS5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZSA9PSB3b3JsZCkKLSAg
ICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgICAgICBpZiAoaXQtPnNlY29uZCA9PSB3b3Js
ZCkKKyAgICAgICAgICAgIHJldHVybiBpdC0+Zmlyc3Q7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBKU09iamVjdFJlZiBnbG8KICAgICBpZiAoIXdv
cmxkSUQpCiAgICAgICAgIHdvcmxkID0gW1dlYlNjcmlwdFdvcmxkIHdvcmxkXTsKICAgICBlbHNl
IHsKLSAgICAgICAgUmV0YWluUHRyPFdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0gd29ybGRN
YXAoKS5hZGQod29ybGRJRCwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBSZXRhaW5QdHI8
V2ViU2NyaXB0V29ybGQ+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgICAgICBpZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdv
cmxkU2xvdC5hZG9wdE5TKFtbV2ViU2NyaXB0V29ybGQgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
d29ybGQgPSB3b3JsZFNsb3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAppbmRleCBlYjM4YjU0MzVjMTY5
ZDJiZGZiMDU2OGM2M2VhMjAzYjVjNmZhM2RjLi43ZjlhYTZjYzJlZTkyOWIyYmY4ZWE0MTZmNWQ2
NWJiMDU2ZTNlYWQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6On5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCiAgICAgICAgIFVuaG9v
a1dpbkV2ZW50KG1fbm90aWZpY2F0aW9uc0V2ZW50SG9vayk7CiAKICAgICBmb3IgKEhhc2hNYXA8
UGxhdGZvcm1VSUVsZW1lbnQsIEpTT2JqZWN0UmVmPjo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNh
dGlvbkxpc3RlbmVycy5iZWdpbigpOyBpdCAhPSBtX25vdGlmaWNhdGlvbkxpc3RlbmVycy5lbmQo
KTsgKytpdCkKLSAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChmcmFtZS0+Z2xvYmFsQ29udGV4dCgp
LCBpdC0+dmFsdWUpOworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGZyYW1lLT5nbG9iYWxDb250
ZXh0KCksIGl0LT5zZWNvbmQpOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCkBAIC0yOTMsNyAr
MjkzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIoKQogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6d2luTm90aWZpY2F0aW9u
UmVjZWl2ZWQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgY29uc3Qgc3RyaW5nJiBldmVudE5h
bWUpCiB7CiAgICAgZm9yIChIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50LCBKU09iamVjdFJlZj46
Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25MaXN0ZW5lcnMuYmVnaW4oKTsgaXQgIT0gbV9u
b3RpZmljYXRpb25MaXN0ZW5lcnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgQ09NUHRyPElTZXJ2
aWNlUHJvdmlkZXI+IHRoaXNTZXJ2aWNlUHJvdmlkZXIoUXVlcnksIGl0LT5rZXkpOworICAgICAg
ICBDT01QdHI8SVNlcnZpY2VQcm92aWRlcj4gdGhpc1NlcnZpY2VQcm92aWRlcihRdWVyeSwgaXQt
PmZpcnN0KTsKICAgICAgICAgaWYgKCF0aGlzU2VydmljZVByb3ZpZGVyKQogICAgICAgICAgICAg
Y29udGludWU7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjp3aW5Ob3RpZmljYXRpb25SZWNlaXZlZChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LAog
CiAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbihBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZXZlbnROYW1lLmNfc3RyKCkpKTsKICAgICAg
ICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKGZyYW1lLT5nbG9iYWxD
b250ZXh0KCksIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICAgICAgSlNPYmplY3RDYWxsQXNG
dW5jdGlvbihmcmFtZS0+Z2xvYmFsQ29udGV4dCgpLCBpdC0+dmFsdWUsIDAsIDEsICZhcmd1bWVu
dCwgMCk7CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oZnJhbWUtPmdsb2JhbENvbnRl
eHQoKSwgaXQtPnNlY29uZCwgTlVMTCwgMSwgJmFyZ3VtZW50LCBOVUxMKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3Bw
CmluZGV4IDY4NTk3ODBmMzkyZjE4ZTMwNjYxYjA0OTI3YjRjY2NiZjNjNDcxYTIuLjkwYjlhZTBm
Y2MzZjYxN2Y0ZmY2NzU1NjJkYTI5NmVlNWUyYmJjMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcApAQCAtNjYsNyArNjYsNyBAQCB3
c3RyaW5nIFJlc291cmNlTG9hZERlbGVnYXRlOjpkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdCh1bnNpZ25lZCBsb25nIGlkZQogICAgIGlmIChpdCA9PSBtX3VybE1hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIEwiPHVua25vd24+IjsKIAotICAgIHJldHVybiB1cmxTdWl0YWJsZUZvclRl
c3RSZXN1bHQoaXQtPnZhbHVlKTsKKyAgICByZXR1cm4gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0
KGl0LT5zZWNvbmQpOwogfQogCiB3c3RyaW5nIFJlc291cmNlTG9hZERlbGVnYXRlOjpkZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCAzNWY1MTBkMDM4ZWU1
NjIzMzM3ZDc0ZmFlOWU2MTVjYzA2OWZiZjg1Li41MzAyNjBiYmJmNjBlNTNlZmIzOGQ0MWM2ODBl
YjgxMDdjMTQxZDcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1
bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4u
Y3BwCkBAIC0xMjQ2LDggKzEyNDYsOCBAQCB1bnNpZ25lZCB3b3JsZElERm9yV29ybGQoSVdlYlNj
cmlwdFdvcmxkKiB3b3JsZCkKIHsKICAgICBXb3JsZE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
d29ybGRNYXAoKS5lbmQoKTsKICAgICBmb3IgKFdvcmxkTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IHdvcmxkTWFwKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+
dmFsdWUgPT0gd29ybGQpCi0gICAgICAgICAgICByZXR1cm4gaXQtPmtleTsKKyAgICAgICAgaWYg
KGl0LT5zZWNvbmQgPT0gd29ybGQpCisgICAgICAgICAgICByZXR1cm4gaXQtPmZpcnN0OwogICAg
IH0KIAogICAgIHJldHVybiAwOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgdm9pZCBUZXN0UnVubmVy
OjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBKU09iamVj
dFJlZiBnbG8KICAgICAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1aWRv
ZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZ3b3JsZCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAg
ICAgICBDT01QdHI8SVdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQo
d29ybGRJRCwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBDT01QdHI8SVdlYlNjcmlwdFdv
cmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICAgICAgaWYgKCF3b3JsZFNsb3QgJiYgRkFJTEVEKFdlYktpdENyZWF0ZUluc3Rh
bmNlKF9fdXVpZG9mKFdlYlNjcmlwdFdvcmxkKSwgMCwgX191dWlkb2Yod29ybGRTbG90KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3b3JsZFNsb3QpKSkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNf
QnVuZGxlLmNwcAppbmRleCA1YjEyOTZmNDdkMTlkMjhiOWRlN2ZjZThkMTMxYWE0MDU0NzZiZGQx
Li45OGJmYWIzNWFmNDZjZjQ5YzYyYmNjOWIwYTg1OTQ1N2Y0OGNjMWMxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNf
QnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlUmVmKQogICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGlu
dD46Oml0ZXJhdG9yIGl0ID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5iZWdpbigpOwogICAgIEhh
c2hNYXA8V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD46Oml0ZXJhdG9yIGVuZCA9
IG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXAuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChpdC0+a2V5LCBSZW1vdmVk
KTsKLSAgICAgICAgV0tSZWxlYXNlKGl0LT5rZXkpOworICAgICAgICB1cGRhdGVFeHRlbnNpb25T
dGF0ZVJlY29yZChpdC0+Zmlyc3QsIFJlbW92ZWQpOworICAgICAgICBXS1JlbGVhc2UoaXQtPmZp
cnN0KTsKICAgICB9CiAKICAgICBtX2V4dGVuc2lvblRvUmVjb3JkTWFwLmNsZWFyKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5z
aW9uTm9DYWNoZV9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcAppbmRleCA0MTFlMTE1ZWE0NGZi
ZTQ4NzBlN2YxZjMxZDkwNWU4NTc3ZjA3ZTIyLi44ZjZjZDdiMzczNWI1YWUyNzlkMGFkYjc3MTg1
YzVkMjgwNzExY2FlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHAKQEAgLTE3OCw4ICsxNzgsOCBAQCB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU6Ondp
bGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKQogICAgIEhhc2hNYXA8
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD46Oml0ZXJhdG9yIGl0ID0gbV9leHRl
bnNpb25Ub1JlY29yZE1hcC5iZWdpbigpOwogICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25SZWYsIGludD46Oml0ZXJhdG9yIGVuZCA9IG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXAu
ZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1cGRhdGVFeHRl
bnNpb25TdGF0ZVJlY29yZChpdC0+a2V5LCBSZW1vdmVkKTsKLSAgICAgICAgV0tSZWxlYXNlKGl0
LT5rZXkpOworICAgICAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChpdC0+Zmlyc3QsIFJl
bW92ZWQpOworICAgICAgICBXS1JlbGVhc2UoaXQtPmZpcnN0KTsKICAgICB9CiAKICAgICBtX2V4
dGVuc2lvblRvUmVjb3JkTWFwLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBmODQyOTc4NDFmZjc0MjE0
ZGJhYWEyZDJmMTlkY2Q3MmU0YTcwNTk0Li5iOTRlNWQ0NzYzYTExOGM0ZWQ2ZDg1MmQ0MTc4NDJh
MDVlMTRiNDRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQ1NSw4ICs0NTUsOCBAQCB1bnNpZ25lZCBUZXN0UnVu
bmVyOjp3b3JsZElERm9yV29ybGQoV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKIHsKICAg
ICBXb3JsZE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gd29ybGRNYXAoKS5lbmQoKTsKICAgICBm
b3IgKFdvcmxkTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHdvcmxkTWFwKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUgPT0gd29ybGQpCi0gICAgICAg
ICAgICByZXR1cm4gaXQtPmtleTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gd29ybGQpCisg
ICAgICAgICAgICByZXR1cm4gaXQtPmZpcnN0OwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHVuc2lnbmVkIHdvCiAgICAgaWYgKCF3b3JsZElE
KQogICAgICAgICB3b3JsZC5hZG9wdChXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+
JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+dmFsdWU7
CisgICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+JiB3b3JsZFNsb3Qg
PSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBp
ZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdvcmxkU2xvdC5hZG9wdChXS0J1bmRsZVNjcmlw
dFdvcmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>