<?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>101790</bug_id>
          
          <creation_ts>2012-11-09 13:27:08 -0800</creation_ts>
          <short_desc>REGRESSION(r134101): IDBDatabaseBackendTest.BackingStoreRetention failing (Requested by jsbell|gardener on #webkit).</short_desc>
          <delta_ts>2012-11-09 13:43:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>101415</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763266</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 13:27:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134101 broke the build:
IDBDatabaseBackendTest.BackingStoreRetention failing (Requested by jsbell|gardener 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>763268</commentid>
    <comment_count>1</comment_count>
      <attachid>173352</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 13:27:49 -0800</bug_when>
    <thetext>Created attachment 173352
ROLLOUT of r134101

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>763280</commentid>
    <comment_count>2</comment_count>
      <attachid>173352</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-09 13:43:21 -0800</bug_when>
    <thetext>Comment on attachment 173352
ROLLOUT of r134101

Clearing flags on attachment: 173352

Committed r134105: &lt;http://trac.webkit.org/changeset/134105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763281</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-09 13:43:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173352</attachid>
            <date>2012-11-09 13:27:49 -0800</date>
            <delta_ts>2012-11-09 13:43:21 -0800</delta_ts>
            <desc>ROLLOUT of r134101</desc>
            <filename>bug-101790-20121109213409.patch</filename>
            <type>text/plain</type>
            <size>87814</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk1ZGI2ODg0MDBhZmMz
YTQwZTZhNzY1M2YxZTA0OWQ1NTAzNTY0OS4uN2MxZjI0OWExYjIwMDUzNmEwZDI4OTgzZTJlNTRl
YTZhNTE1YzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTExLTA5ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTM0MTAxLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMzQxMDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMTc5MAorCisgICAgICAgIElEQkRhdGFiYXNlQmFja2VuZFRlc3QuQmFja2lu
Z1N0b3JlUmV0ZW50aW9uIGZhaWxpbmcKKyAgICAgICAgKFJlcXVlc3RlZCBieSBqc2JlbGx8Z2Fy
ZGVuZXIgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6On5JREJMZXZlbERCQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJh
c2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJ
REJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
T2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5n
U3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUludmFsaWRSZWNvcmRJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0
ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRL
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJC
YWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhE
YXRhRm9yUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3Jl
S2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9w
ZW5JbmRleEtleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpvcGVuSW5kZXhDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmJlZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpj
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmJhY2tpbmdTdG9yZUV4aXN0cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChJREJCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoUmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJC
YWNraW5nU3RvcmU6OkN1cnNvcjo6fkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uOjp+VHJhbnNhY3Rpb24pOgorICAgICAgICAoVHJhbnNhY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5n
U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkxldmVsREJCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5k
ZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1
dEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUludGVybmFsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTExLTA5
ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjEyNTIzOSk6IGNsYXNzTGlzdCBjb250YWlucygpIGRvZXNuJ3Qgd29yayBhZnRlciBlbGVt
ZW50IHdhcyBtb3ZlZCBmcm9tIHN0cmljdCBtb2RlIGRvY3VtZW50IHRvIHF1aXJrcyBtb2RlIGRv
Y3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBiZjVkODZhMjNmZmI0NTEyMGIw
YTczNDhlZDNiZjUzN2IwMjMxM2YuLmVjOGZiNGViYzkwYzdlN2M4YjM3MTVkYTYyMmVkNWEwMjZj
MWYzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MTEtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQxMDEuCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNDEwMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNzkwCisKKyAgICAgICAgSURCRGF0YWJhc2VCYWNrZW5k
VGVzdC5CYWNraW5nU3RvcmVSZXRlbnRpb24gZmFpbGluZworICAgICAgICAoUmVxdWVzdGVkIGJ5
IGpzYmVsbHxnYXJkZW5lciBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHRlc3RzL0lEQkZha2VC
YWNraW5nU3RvcmUuaDoKKwogMjAxMi0xMS0wOSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBDb21iaW5lIElEQkJhY2tpbmdTdG9yZSBh
bmQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMGYzZDgyOTFkNjBlNzU3NjEzM2U4ZTgzM2JlNmJjZjE0YTYzYzI3MC4uZjUzYTNmNzFlY2Ux
ZmZjODhjZjI0NmJmZTFiZjQ4YWUyMmQwMjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xODIxLDcgKzE4MjEsNiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBcCkBAIC0xODYxLDYgKzE4NjAs
OCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkNvZGluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTWV0YWRhdGEuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwZmNiMTk3MGRmNTA1N2IwODFjMTUxMDZlMTEz
OGFhYTIzMzdiNWU0Li42NjNlMzUyYmExMzZiNDc5MGMwM2QzODRlNmIxMWFjYjY2YzI2OTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIK
IAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2lmIFVTRShMRVZFTERCKQogCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhpc3RvZ3JhbVN1cHBvcnQuaCIKQEAgLTM0
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJMZXZlbERCQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiSURCTGV2ZWxEQkNvZGluZy5oIgogI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgpAQCAtMjIxLDcgKzIyMyw3IEBAIHN0YXRp
YyBpbnQ2NF90IGdldE1heE9iamVjdFN0b3JlSWQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBtYXhPCiAgICAgcmV0dXJuIG1heE9iamVjdFN0b3JlSWQ7CiB9CiAKLUlE
QkJhY2tpbmdTdG9yZTo6SURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
SURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFz
ZT4gZGIpCitJREJMZXZlbERCQmFja2luZ1N0b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBQ
YXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV9kYihkYikKQEAgLTIyOSwx
MSArMjMxLDcgQEAgSURCQmFja2luZ1N0b3JlOjpJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwKICAgICBtX2ZhY3RvcnktPmFkZElE
QkJhY2tpbmdTdG9yZShpZGVudGlmaWVyLCB0aGlzKTsKIH0KIAotSURCQmFja2luZ1N0b3JlOjpJ
REJCYWNraW5nU3RvcmUoKQotewotfQotCi1JREJCYWNraW5nU3RvcmU6On5JREJCYWNraW5nU3Rv
cmUoKQorSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6fklEQkxldmVsREJCYWNraW5nU3RvcmUoKQog
ewogICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCQmFja2luZ1N0b3JlKG1faWRlbnRpZmllcik7CiAK
QEAgLTI1Myw5ICsyNTEsOSBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVPcGVuUmVzdWx0
IHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCwKIH07CiAKLVBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZp
bGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnkpCitQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0
cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSkKIHsK
LSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3BlbiIpOworICAgIElEQl9UUkFDRSgi
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbiIpOwogICAgIFN0cmluZyBwYXRoQmFzZSA9IHBh
dGhCYXNlQXJnOwogCiAgICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0g
YWRvcHRQdHIobmV3IENvbXBhcmF0b3IoKSk7CkBAIC0zMDcsNyArMzA1LDcgQEAgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU+IElEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4KIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgY29tcGFyYXRvciBuYW1lIGNo
YW5nZXMuCiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoYWRvcHRS
ZWYobmV3IElEQkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFz
ZSgpKSkpOworICAgIFJlZlB0cjxJREJMZXZlbERCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUo
YWRvcHRSZWYobmV3IElEQkxldmVsREJCYWNraW5nU3RvcmUoZmlsZUlkZW50aWZpZXIsIGZhY3Rv
cnksIGRiLnJlbGVhc2UoKSkpKTsKICAgICBiYWNraW5nU3RvcmUtPm1fY29tcGFyYXRvciA9IGNv
bXBhcmF0b3IucmVsZWFzZSgpOwogCiAgICAgaWYgKCFzZXRVcE1ldGFkYXRhKGJhY2tpbmdTdG9y
ZS0+bV9kYi5nZXQoKSwgZmlsZUlkZW50aWZpZXIpKQpAQCAtMzE2LDcgKzMxNCw3IEBAIFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luCiAgICAgcmV0dXJuIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCk7CiB9
CiAKLVZlY3RvcjxTdHJpbmc+IElEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcygpCitW
ZWN0b3I8U3RyaW5nPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXREYXRhYmFzZU5hbWVzKCkK
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBmb3VuZE5hbWVzOwogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBzdGFydEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlTWluS2V5Rm9yT3JpZ2luKG1faWRl
bnRpZmllcik7CkBAIC0zMzgsNyArMzM2LDcgQEAgVmVjdG9yPFN0cmluZz4gSURCQmFja2luZ1N0
b3JlOjpnZXREYXRhYmFzZU5hbWVzKCkKICAgICByZXR1cm4gZm91bmROYW1lczsKIH0KIAotYm9v
bCBJREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiBtZXRhZGF0YSkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRh
dGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkg
PSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwogCkBAIC0zODQs
NyArMzgyLDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJh
c2UqIGRiKQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkKK2Jvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBp
bnQ2NF90JiByb3dJZCkKIHsKICAgICByb3dJZCA9IGdldE5ld0RhdGFiYXNlSWQobV9kYi5nZXQo
KSk7CiAgICAgaWYgKHJvd0lkIDwgMCkKQEAgLTQwNCw3ICs0MDIsNyBAQCBib29sIElEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6
dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24pCitib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCByb3dJZCwgaW50NjRf
dCBpbnRWZXJzaW9uKQogewogICAgIGlmIChpbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikKICAgICAgICAgaW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRh
dGE6OkRlZmF1bHRJbnRWZXJzaW9uOwpAQCAtNDEzLDcgKzQxMSw3IEBAIGJvb2wgSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbioKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OnVw
ZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK2Jvb2wgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQogewogICAgIHB1dFN0cmluZyhUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbiksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJ
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCB2ZXJzaW9uKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTQyNyw5ICs0MjUsOSBAQCBzdGF0aWMgdm9pZCBkZWxldGVSYW5nZShMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGJlZwogfQog
CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0
YWJhc2UiKTsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURh
dGFiYXNlIik7CiAgICAgT3duUHRyPExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24gPSBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OmNyZWF0ZShtX2RiLmdldCgpKTsK
IAogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGE7CkBAIC00NjMsOSArNDYxLDkgQEAg
c3RhdGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShjb25zdCBMZXZlbERC
SXRlcmF0b3IqIGl0LCBjb25zdCBWZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE+IElEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGlu
dDY0X3QgZGF0YWJhc2VJZCkKK1ZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkKQogewot
ICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMiKTsKKyAgICBJ
REJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyIpOwogICAg
IFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBvYmplY3RTdG9yZXM7CiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIDEsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQpOwpAQCAtNTY3LDEwICs1
NjUsMTAgQEAgc3RhdGljIGJvb2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0
ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7Ci0g
ICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlIik7Ci0gICAg
TGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBJ
REJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlIik7Cisg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6
bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAgICAgaWYgKCFzZXRNYXhPYmpl
Y3RTdG9yZUlkKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTk2LDEwICs1OTQsMTAgQEAgYm9vbCBJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3Rv
cmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK3ZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQogewotICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpkZWxldGVP
YmplY3RTdG9yZSIpOwotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9u
ID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0
cmFuc2FjdGlvbik7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxl
dGVPYmplY3RTdG9yZSIpOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwog
CiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKICAgICBnZXRTdHJpbmcobGV2ZWxEQlRyYW5z
YWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSksIG9iamVjdFN0b3JlTmFtZSk7
CkBAIC02MTQsMTAgKzYxMiwxMCBAQCB2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIGNsZWFy
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwogfQog
Ci1TdHJpbmcgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSkKK1N0cmluZyBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtl
eSkKIHsKLSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkIik7Ci0gICAg
TGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBJ
REJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCIpOworICAgIExldmVs
REJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJU
cmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxl
dmVsZGJLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBrZXkpOwogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwpAQCAtNjM2LDYgKzYzNCwyNyBA
QCBTdHJpbmcgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludAogICAgIHJldHVybiBkZWNvZGVTdHJpbmcocCwgZGF0
YS5lbmQoKSk7CiB9CiAKK25hbWVzcGFjZSB7CitjbGFzcyBMZXZlbERCUmVjb3JkSWRlbnRpZmll
ciA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPExldmVsREJSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGUoY29u
c3QgVmVjdG9yPGNoYXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBMZXZlbERCUmVjb3JkSWRlbnRpZmllcihwcmltYXJ5S2V5LCB2ZXJzaW9uKSk7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZXZlbERCUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IExldmVsREJSZWNvcmRJZGVudGlmaWVyKCkpOyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleS5p
c0VtcHR5KCk7IH0KKyAgICBWZWN0b3I8Y2hhcj4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWFyeUtleTsgfQorICAgIHZvaWQgc2V0UHJpbWFyeUtleShjb25zdCBWZWN0b3I8Y2hh
cj4mIHByaW1hcnlLZXkpIHsgbV9wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsgfQorICAgIGludDY0
X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIHZvaWQgc2V0VmVy
c2lvbihpbnQ2NF90IHZlcnNpb24pIHsgbV92ZXJzaW9uID0gdmVyc2lvbjsgfQorCitwcml2YXRl
OgorICAgIExldmVsREJSZWNvcmRJZGVudGlmaWVyKGNvbnN0IFZlY3RvcjxjaGFyPiYgcHJpbWFy
eUtleSwgaW50NjRfdCB2ZXJzaW9uKSA6IG1fcHJpbWFyeUtleShwcmltYXJ5S2V5KSwgbV92ZXJz
aW9uKHZlcnNpb24pIHsgQVNTRVJUKCFwcmltYXJ5S2V5LmlzRW1wdHkoKSk7IH0KKyAgICBMZXZl
bERCUmVjb3JkSWRlbnRpZmllcigpIDogbV9wcmltYXJ5S2V5KCksIG1fdmVyc2lvbigtMSkgeyB9
CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9wcmltYXJ5S2V5OyAvLyBGSVhNRTogTWFrZSBpdCBtb3Jl
IGNsZWFyIHRoYXQgdGhpcyBpcyB0aGUgKmVuY29kZWQqIHZlcnNpb24gb2YgdGhlIGtleS4KKyAg
ICBpbnQ2NF90IG1fdmVyc2lvbjsKK307Cit9CisKIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNp
b25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxh
c3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okxhc3RWZXJzaW9uKTsKQEAg
LTY1NCwxMSArNjczLDExIEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJuIHZl
cnNpb247CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKK2Jvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6cHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqIHJlY29yZElk
ZW50aWZpZXIpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCIp
OworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkIik7CiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkpOwotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxE
QlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERC
VHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2Fj
dGlvbik7CiAgICAgaW50NjRfdCB2ZXJzaW9uID0gZ2V0TmV3VmVyc2lvbk51bWJlcihsZXZlbERC
VHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBvYmplY3RTdG9yZWRhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXkpOwogCkBAIC02NzEsMzcgKzY5MCw0NCBAQCBi
b29sIElEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRy
eUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
a2V5KTsKICAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChleGlzdHNFbnRyeUtleSwgZW5jb2Rl
SW50KHZlcnNpb24pKTsKIAotICAgIHJlY29yZElkZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5j
b2RlSURCS2V5KGtleSkpOwotICAgIHJlY29yZElkZW50aWZpZXItPnNldFZlcnNpb24odmVyc2lv
bik7CisgICAgTGV2ZWxEQlJlY29yZElkZW50aWZpZXIqIGxldmVsREJSZWNvcmRJZGVudGlmaWVy
ID0gc3RhdGljX2Nhc3Q8TGV2ZWxEQlJlY29yZElkZW50aWZpZXIqPihyZWNvcmRJZGVudGlmaWVy
KTsKKyAgICBsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+c2V0UHJpbWFyeUtleShlbmNvZGVJREJL
ZXkoa2V5KSk7CisgICAgbGV2ZWxEQlJlY29yZElkZW50aWZpZXItPnNldFZlcnNpb24odmVyc2lv
bik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSURCQmFja2luZ1N0b3JlOjpjbGVhck9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK3ZvaWQgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQp
CiB7Ci0gICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUiKTsK
LSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwor
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSIp
OworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rp
b246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdGFydEtleSA9IEtleVByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAw
KS5lbmNvZGUoKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IEtleVByZWZpeChk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkICsgMSwgMCkuZW5jb2RlKCk7CiAKICAgICBkZWxldGVS
YW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0S2V5LCBzdG9wS2V5KTsKIH0KIAotdm9pZCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCitQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKQogewotICAgIElEQl9UUkFDRSgiSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVSZWNvcmQiKTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVs
REJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFu
c2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIHJldHVybiBMZXZlbERCUmVjb3JkSWRlbnRp
Zmllcjo6Y3JlYXRlKCk7Cit9CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVE
YXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgcmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKK3ZvaWQgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKK3sKKyAgICBJREJfVFJBQ0Uo
IklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCIpOworICAgIExldmVsREJUcmFu
c2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2Fj
dGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVy
KiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNv
cmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRpZmllcik7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gb2JqZWN0U3RvcmVEYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgbGV2ZWxEQlJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXko
KSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUob2JqZWN0U3RvcmVEYXRhS2V5KTsK
IAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5S2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci0+cHJp
bWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlz
dHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGxldmVsREJSZWNv
cmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5KCkpOwogICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVt
b3ZlKGV4aXN0c0VudHJ5S2V5KTsKIH0KIAogCi1pbnQ2NF90IElEQkJhY2tpbmdTdG9yZTo6Z2V0
S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCitp
bnQ2NF90IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1i
ZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAgIExldmVsREJUcmFuc2FjdGlv
biogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2
ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9u
KiBsZXZlbERCVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSh0cmFuc2FjdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3Vy
cmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJy
ZW50TnVtYmVyKTsKIApAQCAtNzQxLDkgKzc2Nyw5IEBAIGludDY0X3QgSURCQmFja2luZ1N0b3Jl
OjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
CiAgICAgcmV0dXJuIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXI7CiB9CiAKLWJvb2wgSURCQmFj
a2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQp
Citib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3Vy
cmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVy
LCBib29sIGNoZWNrQ3VycmVudCkKIHsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2Fj
dGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRy
YW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rp
b24pOwogCiAgICAgaWYgKGNoZWNrQ3VycmVudCkgewogICAgICAgICBpbnQ2NF90IGN1cnJlbnRO
dW1iZXIgPSBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKHRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkKTsKQEAgLTc1NiwxMCArNzgyLDEwIEBAIGJvb2wgSURCQmFja2lu
Z1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0
b3JlOjpUcmFuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5JiBrZXksIFJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikKK2Jv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBSZWNvcmRJZGVudGlmaWVy
KiBmb3VuZFJlY29yZElkZW50aWZpZXIpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3Rv
cmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUiKTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxl
dmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJU
cmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSIpOworICAgIExldmVsREJUcmFuc2Fj
dGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlv
bkZyb20odHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRiS2V5ID0g
T2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5
KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIApAQCAtNzcwLDggKzc5Niw5IEBAIGJvb2wgSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zCiAgICAgaWYgKCFkZWNvZGVWYXJJbnQoZGF0YS5iZWdpbigpLCBkYXRh
LmVuZCgpLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm91bmRSZWNv
cmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICBmb3Vu
ZFJlY29yZElkZW50aWZpZXItPnNldFZlcnNpb24odmVyc2lvbik7CisgICAgTGV2ZWxEQlJlY29y
ZElkZW50aWZpZXIqIGxldmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8TGV2ZWxE
QlJlY29yZElkZW50aWZpZXIqPihmb3VuZFJlY29yZElkZW50aWZpZXIpOworICAgIGxldmVsREJS
ZWNvcmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKKyAgICBs
ZXZlbERCUmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNzkxLDkgKzgxOCw5IEBAIHN0YXRpYyBib29sIGNoZWNrSW5kZXhBbmRN
ZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hhCiB9
CiAKIAotVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IElEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK1ZlY3RvcjxJREJJ
bmRleE1ldGFkYXRhPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAgIElEQl9UUkFDRSgiSURC
QmFja2luZ1N0b3JlOjpnZXRJbmRleGVzIik7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJbmRleGVzIik7CiAgICAgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IGlu
ZGV4ZXM7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQgKyAxLCAwLCAwKTsKQEAgLTg2MiwxMCArODg5LDEwIEBAIHN0YXRpYyBi
b29sIHNldE1heEluZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBp
c1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpCiB7Ci0gICAgSURCX1RSQUNFKCJJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4Iik7Ci0gICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJh
bnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rp
b25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4Iik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNh
Y3Rpb24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7
CiAgICAgaWYgKCFzZXRNYXhJbmRleElkKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODgx
LDEwICs5MDgsMTAgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCkKIHsKLSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgiKTsKLSAg
ICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAg
IElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgiKTsKKyAgICBM
ZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uOjpsZXZl
bERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBpbmRleE1ldGFEYXRhU3RhcnQgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGlu
ZGV4TWV0YURhdGFFbmQgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CkBAIC04OTUsMTggKzkyMiwxOSBAQCB2b2lkIElE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludAogICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgaW5k
ZXhEYXRhU3RhcnQsIGluZGV4RGF0YUVuZCk7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpw
dXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKiByZWNv
cmRJZGVudGlmaWVyKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFG
b3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYga2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVy
KQogewotICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNv
cmQiKTsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0
YUZvclJlY29yZCIpOwogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpKTsKICAgICBBU1NFUlQoaW5k
ZXhJZCA+PSBNaW5pbXVtSW5kZXhJZCk7CisgICAgY29uc3QgTGV2ZWxEQlJlY29yZElkZW50aWZp
ZXIqIGxldmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgTGV2ZWxEQlJl
Y29yZElkZW50aWZpZXIqPihyZWNvcmRJZGVudGlmaWVyKTsKIAotICAgIExldmVsREJUcmFuc2Fj
dGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6
bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAgY29uc3QgVmVjdG9yPGNo
YXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLT5w
cmltYXJ5S2V5KCkpOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9u
ID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBlbmNvZGVJREJLZXkoa2V5KSwgbGV2
ZWxEQlJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4g
ZGF0YTsKLSAgICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci0+dmVy
c2lvbigpKSk7Ci0gICAgZGF0YS5hcHBlbmQocmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgp
KTsKKyAgICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQobGV2ZWxEQlJlY29yZElkZW50aWZpZXIt
PnZlcnNpb24oKSkpOworICAgIGRhdGEuYXBwZW5kKGxldmVsREJSZWNvcmRJZGVudGlmaWVyLT5w
cmltYXJ5S2V5KCkpOwogCiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoaW5kZXhEYXRhS2V5
LCBkYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk0MCw3ICs5NjgsNyBAQCBzdGF0aWMgYm9v
bCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikKK2Jv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90LCBjb25z
dCBSZWNvcmRJZGVudGlmaWVyKikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBuZWVkZWQg
c2luY2Ugd2UgaW52YWxpZGF0ZSBpbmRleCBkYXRhIHZpYSB0aGUgdmVyc2lvbiBudW1iZXIgbWVj
aGFuaXNtLgogICAgIHJldHVybiB0cnVlOwpAQCAtOTU3LDEyICs5ODUsMTIgQEAgc3RhdGljIGJv
b2wgdmVyc2lvbkV4aXN0cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGkKICAgICByZXR1cm4gZGVjb2RlSW50KGRhdGEuYmVnaW4oKSwgZGF0YS5l
bmQoKSkgPT0gdmVyc2lvbjsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbklu
ZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmIGtleSwgVmVjdG9yPGNoYXI+JiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KQorYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFy
PiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkKIHsKLSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdT
dG9yZTo6ZmluZEtleUluSW5kZXgiKTsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5n
U3RvcmU6OmZpbmRLZXlJbkluZGV4Iik7CiAgICAgQVNTRVJUKGZvdW5kRW5jb2RlZFByaW1hcnlL
ZXkuaXNFbXB0eSgpKTsKIAotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSh0cmFuc2FjdGlvbik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXkpOwogICAgIE93blB0cjxMZXZl
bERCSXRlcmF0b3I+IGl0ID0gbGV2ZWxEQlRyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOwog
ICAgIGl0LT5zZWVrKGxldmVsZGJLZXkpOwpAQCAtOTkyLDkgKzEwMjAsOSBAQCBib29sIElEQkJh
Y2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPElEQktleT4gSURCQmFja2luZ1N0
b3JlOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5KQorUGFzc1JlZlB0cjxJREJLZXk+IElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXkpCiB7Ci0g
ICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRleCIpOwor
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUlu
ZGV4Iik7CiAKICAgICBWZWN0b3I8Y2hhcj4gZm91bmRFbmNvZGVkUHJpbWFyeUtleTsKICAgICBp
ZiAoZmluZEtleUluSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpIHsKQEAgLTEwMDYsOSArMTAz
NCw5IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlW
aWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wg
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURC
S2V5PiYgZm91bmRQcmltYXJ5S2V5KQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5
KQogewotICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4Iik7
CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4
Iik7CiAKICAgICBWZWN0b3I8Y2hhcj4gZm91bmRFbmNvZGVkUHJpbWFyeUtleTsKICAgICBpZiAo
IWZpbmRLZXlJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBpbmRleEtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpCkBAIC0xMDE4LDIyICsx
MDQ2LDY0IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUlEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IqIG90aGVyKQotICAgIDogbV90cmFuc2FjdGlvbihvdGhlci0+bV90cmFuc2FjdGlvbikK
LSAgICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+bV9jdXJzb3JPcHRpb25zKQotICAgICwgbV9j
dXJyZW50S2V5KG90aGVyLT5tX2N1cnJlbnRLZXkpCi17Ci0gICAgaWYgKG90aGVyLT5tX2l0ZXJh
dG9yKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRv
cigpOworbmFtZXNwYWNlIHsKKworc3RydWN0IEN1cnNvck9wdGlvbnMgeworICAgIFZlY3Rvcjxj
aGFyPiBsb3dLZXk7CisgICAgYm9vbCBsb3dPcGVuOworICAgIFZlY3RvcjxjaGFyPiBoaWdoS2V5
OworICAgIGJvb2wgaGlnaE9wZW47CisgICAgYm9vbCBmb3J3YXJkOworICAgIGJvb2wgdW5pcXVl
OworfTsKKworY2xhc3MgQ3Vyc29ySW1wbENvbW1vbiA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6
OkN1cnNvciB7CitwdWJsaWM6CisgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKKyAgICB2
aXJ0dWFsIGJvb2wgYWR2YW5jZSh1bnNpZ25lZCBsb25nKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29u
dGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0dXJuIG1fY3VycmVudEtl
eTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVy
biBtX2N1cnJlbnRLZXk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBvYmpl
Y3RTdG9yZVJlY29yZElkZW50aWZpZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1
cnJlbnRSb3coKSA9IDA7CisgICAgYm9vbCBmaXJzdFNlZWsoKTsKKworcHJvdGVjdGVkOgorICAg
IEN1cnNvckltcGxDb21tb24oTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3Qg
Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKKyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQorICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQorICAg
IHsKKyAgICB9CiAKLSAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgICAgIG1faXRlcmF0b3ItPnNlZWsob3RoZXItPm1faXRlcmF0b3ItPmtleSgpKTsK
LSAgICAgICAgICAgIEFTU0VSVChtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpOworICAgIEN1cnNvcklt
cGxDb21tb24oY29uc3QgQ3Vyc29ySW1wbENvbW1vbiogb3RoZXIpCisgICAgICAgIDogbV90cmFu
c2FjdGlvbihvdGhlci0+bV90cmFuc2FjdGlvbikKKyAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMo
b3RoZXItPm1fY3Vyc29yT3B0aW9ucykKKyAgICAgICAgLCBtX2N1cnJlbnRLZXkob3RoZXItPm1f
Y3VycmVudEtleSkKKyAgICB7CisgICAgICAgIGlmIChvdGhlci0+bV9pdGVyYXRvcikgeworICAg
ICAgICAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CisK
KyAgICAgICAgICAgIGlmIChvdGhlci0+bV9pdGVyYXRvci0+aXNWYWxpZCgpKSB7CisgICAgICAg
ICAgICAgICAgbV9pdGVyYXRvci0+c2VlayhvdGhlci0+bV9pdGVyYXRvci0+a2V5KCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpm
aXJzdFNlZWsoKQorICAgIHZpcnR1YWwgfkN1cnNvckltcGxDb21tb24oKSB7IH0KKworICAgIGJv
b2wgaXNQYXN0Qm91bmRzKCkgY29uc3Q7CisgICAgYm9vbCBoYXZlRW50ZXJlZFJhbmdlKCkgY29u
c3Q7CisKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247CisgICAgQ3Vyc29y
T3B0aW9ucyBtX2N1cnNvck9wdGlvbnM7CisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gbV9p
dGVyYXRvcjsKKyAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7Cit9OworCitib29sIEN1
cnNvckltcGxDb21tb246OmZpcnN0U2VlaygpCiB7CiAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNh
Y3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJk
KQpAQCAtMTA0NCw3ICsxMTE0LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Zmly
c3RTZWVrKCkKICAgICByZXR1cm4gY29udGludWVGdW5jdGlvbigwLCBSZWFkeSk7CiB9CiAKLWJv
b2wgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCkK
K2Jvb2wgQ3Vyc29ySW1wbENvbW1vbjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50KQogewog
ICAgIHdoaWxlIChjb3VudC0tKSB7CiAgICAgICAgIGlmICghY29udGludWVGdW5jdGlvbigpKQpA
QCAtMTA1Myw3ICsxMTIzLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6YWR2YW5j
ZSh1bnNpZ25lZCBsb25nIGNvdW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJ
dGVyYXRvclN0YXRlIG5leHRTdGF0ZSkKK2Jvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUpCiB7CiAg
ICAgUmVmUHRyPElEQktleT4gcHJldmlvdXNLZXkgPSBtX2N1cnJlbnRLZXk7CiAKQEAgLTExNDUs
NyArMTIxNSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmNvbnRpbnVlRnVuY3Rp
b24oY29uc3QgSURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6aGF2ZUVudGVyZWRSYW5nZSgpIGNvbnN0
Citib29sIEN1cnNvckltcGxDb21tb246OmhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdAogewogICAg
IGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgewogICAgICAgICBpZiAobV9jdXJzb3JPcHRp
b25zLmxvd09wZW4pCkBAIC0xMTU5LDcgKzEyMjksNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6
Q3Vyc29yOjpoYXZlRW50ZXJlZFJhbmdlKCkgY29uc3QKICAgICByZXR1cm4gY29tcGFyZUluZGV4
S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDw9IDA7CiB9
CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OmlzUGFzdEJvdW5kcygpIGNvbnN0Citi
b29sIEN1cnNvckltcGxDb21tb246OmlzUGFzdEJvdW5kcygpIGNvbnN0CiB7CiAgICAgaWYgKG1f
Y3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CiAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuaGln
aE9wZW4pCkBAIC0xMTcyLDkgKzEyNDIsOSBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
Ojppc1Bhc3RCb3VuZHMoKSBjb25zdAogICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1faXRl
cmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8IDA7CiB9CiAKLWNsYXNzIE9i
amVjdFN0b3JlS2V5Q3Vyc29ySW1wbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6OkN1cnNvciB7
CitjbGFzcyBPYmplY3RTdG9yZUtleUN1cnNvckltcGwgOiBwdWJsaWMgQ3Vyc29ySW1wbENvbW1v
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVLZXlDdXJzb3JJ
bXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9u
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVLZXlDdXJz
b3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKSk7CiAgICAgfQpAQCAtMTE4NCwyNiAr
MTI1NCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3Rv
cmVLZXlDdXJzb3JJbXBsKHRoaXMpKTsKICAgICB9CiAKLSAgICAvLyBJREJCYWNraW5nU3RvcmU6
OkN1cnNvcgotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIE9WRVJSSURF
CisgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgorICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gb2JqZWN0U3RvcmVSZWNv
cmRJZGVudGlmaWVyKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXI7CiAgICAgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRl
OgotICAgIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKLSAgICAgICAgOiBJREJCYWNraW5nU3RvcmU6OkN1cnNvcih0cmFuc2FjdGlv
biwgY3Vyc29yT3B0aW9ucykKKyAgICBPYmplY3RTdG9yZUtleUN1cnNvckltcGwoTGV2ZWxEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9u
cykKKyAgICAgICAgOiBDdXJzb3JJbXBsQ29tbW9uKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25z
KQogICAgIHsKICAgICB9CiAKICAgICBPYmplY3RTdG9yZUtleUN1cnNvckltcGwoY29uc3QgT2Jq
ZWN0U3RvcmVLZXlDdXJzb3JJbXBsKiBvdGhlcikKLSAgICAgICAgOiBJREJCYWNraW5nU3RvcmU6
OkN1cnNvcihvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJbXBsQ29tbW9uKG90aGVyKQogICAgIHsK
ICAgICB9CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBt
X2lkZW50aWZpZXI7CisgICAgUmVmUHRyPExldmVsREJSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50
aWZpZXI7CiB9OwogCiBib29sIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRS
b3coKQpAQCAtMTIyOCwxNCArMTI5OCwxNCBAQCBib29sIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29k
ZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgotICAgIG1faWRlbnRp
ZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKGVuY29kZUlE
QktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9pZGVudGlmaWVyID0gTGV2ZWxE
QlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZl
cnNpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWNsYXNzIE9iamVjdFN0b3JlQ3Vyc29y
SW1wbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6OkN1cnNvciB7CitjbGFzcyBPYmplY3RTdG9y
ZUN1cnNvckltcGwgOiBwdWJsaWMgQ3Vyc29ySW1wbENvbW1vbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVDdXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNv
ck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8T2JqZWN0U3Rv
cmVDdXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29u
c3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRp
b25zKSk7CiAgICAgfQpAQCAtMTI0NSwyOCArMTMxNSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKHRoaXMpKTsKICAgICB9CiAK
LSAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyKCkg
T1ZFUlJJREUKKyAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCisgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
ZmllcigpIE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyOwogICAg
IH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKIAogcHJpdmF0ZToKLSAgICBP
YmplY3RTdG9yZUN1cnNvckltcGwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29u
c3QgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMp
Ci0gICAgICAgIDogSURCQmFja2luZ1N0b3JlOjpDdXJzb3IodHJhbnNhY3Rpb24sIGN1cnNvck9w
dGlvbnMpCisgICAgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgICAgIDog
Q3Vyc29ySW1wbENvbW1vbih0cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucykKICAgICB7CiAgICAg
fQogCiAgICAgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKGNvbnN0IE9iamVjdFN0b3JlQ3Vyc29ySW1w
bCogb3RoZXIpCi0gICAgICAgIDogSURCQmFja2luZ1N0b3JlOjpDdXJzb3Iob3RoZXIpCisgICAg
ICAgIDogQ3Vyc29ySW1wbENvbW1vbihvdGhlcikKICAgICAgICAgLCBtX2N1cnJlbnRWYWx1ZShv
dGhlci0+bV9jdXJyZW50VmFsdWUpCiAgICAgewogICAgIH0KIAogICAgIFN0cmluZyBtX2N1cnJl
bnRWYWx1ZTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBt
X2lkZW50aWZpZXI7CisgICAgUmVmUHRyPExldmVsREJSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50
aWZpZXI7CiB9OwogCiBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3co
KQpAQCAtMTI5MSwxNiArMTM2MSwxNiBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9h
ZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29kZXMgd2hh
dCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgotICAgIG1faWRlbnRpZmllciA9
IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKGVuY29kZUlEQktleSgq
bV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9pZGVudGlmaWVyID0gTGV2ZWxEQlJlY29y
ZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24p
OwogCiAgICAgbV9jdXJyZW50VmFsdWUgPSBkZWNvZGVTdHJpbmcodmFsdWVQb3NpdGlvbiwgbV9p
dGVyYXRvci0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3Mg
SW5kZXhLZXlDdXJzb3JJbXBsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yIHsKK2Ns
YXNzIEluZGV4S2V5Q3Vyc29ySW1wbCA6IHB1YmxpYyBDdXJzb3JJbXBsQ29tbW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmRleEtleUN1cnNvckltcGw+IGNyZWF0ZShMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmU6OkN1cnNv
cjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bmRleEtleUN1cnNvckltcGw+IGNyZWF0ZShMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBjb25zdCBDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9w
dGlvbnMpKTsKICAgICB9CkBAIC0xMzEwLDIwICsxMzgwLDIwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodGhpcykpOwogICAgIH0KIAot
ICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWUo
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9w
cmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAwOyB9CisgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgorICAgIHZpcnR1YWwgU3RyaW5n
IHZhbHVlKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fcHJpbWFy
eUtleTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElk
ZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAK
IHByaXZhdGU6Ci0gICAgSW5kZXhLZXlDdXJzb3JJbXBsKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBj
dXJzb3JPcHRpb25zKQotICAgICAgICA6IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yKHRyYW5zYWN0
aW9uLCBjdXJzb3JPcHRpb25zKQorICAgIEluZGV4S2V5Q3Vyc29ySW1wbChMZXZlbERCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQor
ICAgICAgICA6IEN1cnNvckltcGxDb21tb24odHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpCiAg
ICAgewogICAgIH0KIAogICAgIEluZGV4S2V5Q3Vyc29ySW1wbChjb25zdCBJbmRleEtleUN1cnNv
ckltcGwqIG90aGVyKQotICAgICAgICA6IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yKG90aGVyKQor
ICAgICAgICA6IEN1cnNvckltcGxDb21tb24ob3RoZXIpCiAgICAgICAgICwgbV9wcmltYXJ5S2V5
KG90aGVyLT5tX3ByaW1hcnlLZXkpCiAgICAgewogICAgIH0KQEAgLTEzNzcsOSArMTQ0Nyw5IEBA
IGJvb2wgSW5kZXhLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWNsYXNzIEluZGV4Q3Vyc29ySW1wbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6
OkN1cnNvciB7CitjbGFzcyBJbmRleEN1cnNvckltcGwgOiBwdWJsaWMgQ3Vyc29ySW1wbENvbW1v
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5kZXhDdXJzb3JJbXBsPiBjcmVh
dGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5kZXhDdXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JP
cHRpb25zKSk7CiAgICAgfQpAQCAtMTM4OSwyMCArMTQ1OSwyMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRoaXMpKTsKICAgICB9CiAKLSAg
ICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVu
dGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KKyAgICAvLyBDdXJz
b3JJbXBsQ29tbW9uCisgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJu
IG1fcHJpbWFyeUtleTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6
OlJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwog
CiBwcml2YXRlOgotICAgIEluZGV4Q3Vyc29ySW1wbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKLSAgICAgICAgOiBJREJCYWNraW5nU3RvcmU6OkN1cnNvcih0cmFuc2FjdGlv
biwgY3Vyc29yT3B0aW9ucykKKyAgICBJbmRleEN1cnNvckltcGwoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKKyAgICAg
ICAgOiBDdXJzb3JJbXBsQ29tbW9uKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKQogICAgIHsK
ICAgICB9CiAKICAgICBJbmRleEN1cnNvckltcGwoY29uc3QgSW5kZXhDdXJzb3JJbXBsKiBvdGhl
cikKLSAgICAgICAgOiBJREJCYWNraW5nU3RvcmU6OkN1cnNvcihvdGhlcikKKyAgICAgICAgOiBD
dXJzb3JJbXBsQ29tbW9uKG90aGVyKQogICAgICAgICAsIG1fcHJpbWFyeUtleShvdGhlci0+bV9w
cmltYXJ5S2V5KQogICAgICAgICAsIG1fdmFsdWUob3RoZXItPm1fdmFsdWUpCiAgICAgICAgICwg
bV9wcmltYXJ5TGV2ZWxEQktleShvdGhlci0+bV9wcmltYXJ5TGV2ZWxEQktleSkKQEAgLTE0NjMs
NyArMTUzMyw3IEBAIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9u
IGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNv
ck9wdGlvbnMpCitib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rp
b24sIEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAgYm9vbCBsb3dlckJvdW5k
ID0gcmFuZ2UgJiYgcmFuZ2UtPmxvd2VyKCk7CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2Ug
JiYgcmFuZ2UtPnVwcGVyKCk7CkBAIC0xNTEwLDcgKzE1ODAsNyBAQCBib29sIG9iamVjdFN0b3Jl
Q3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFu
Z2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJz
b3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitib29sIGluZGV4Q3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGJvb2wgbG93ZXJC
b3VuZCA9IHJhbmdlICYmIHJhbmdlLT5sb3dlcigpOwpAQCAtMTU1MywxMSArMTYyMywxMyBAQCBi
b29sIGluZGV4Q3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9y
ZUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiBy
YW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQorfQorCitQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0
U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBJREJfVFJB
Q0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yIik7Ci0gICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICBJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOworICAgIElEQl9U
UkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yIik7Cisg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6
bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgQ3Vyc29yT3B0aW9ucyBj
dXJzb3JPcHRpb25zOwogICAgIGlmICghb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKGxldmVsREJU
cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmFuZ2UsIGRpcmVjdGlvbiwg
Y3Vyc29yT3B0aW9ucykpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxPYmplY3RTdG9y
ZUN1cnNvckltcGw+IGN1cnNvciA9IE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6Y3JlYXRlKGxldmVs
REJUcmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucyk7CkBAIC0xNTY3LDExICsxNjM5LDExIEBAIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9i
amVjdFN0b3JlQ3Vyc29yKElEQkJhCiAgICAgcmV0dXJuIGN1cnNvci5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkJhY2tpbmdTdG9yZTo6b3Bl
bk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpv
cGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
LSAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
Iik7Ci0gICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9u
KTsKLSAgICBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRp
b25zOworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0
b3JlS2V5Q3Vyc29yIik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rp
b24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Cisg
ICAgQ3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOwogICAgIGlmICghb2JqZWN0U3RvcmVDdXJz
b3JPcHRpb25zKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
cmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yT3B0aW9ucykpCiAgICAgICAgIHJldHVybiAwOwogICAg
IFJlZlB0cjxPYmplY3RTdG9yZUtleUN1cnNvckltcGw+IGN1cnNvciA9IE9iamVjdFN0b3JlS2V5
Q3Vyc29ySW1wbDo6Y3JlYXRlKGxldmVsREJUcmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucyk7CkBA
IC0xNTgxLDExICsxNjUzLDExIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IElEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElECiAgICAgcmV0dXJu
IGN1cnNvci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFu
Z2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgSURCX1RS
QUNFKCJJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOwotICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAgSURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMgY3Vyc29yT3B0aW9uczsKKyAgICBJREJfVFJB
Q0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOworICAgIExl
dmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVs
REJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIEN1cnNvck9wdGlvbnMgY3Vyc29y
T3B0aW9uczsKICAgICBpZiAoIWluZGV4Q3Vyc29yT3B0aW9ucyhsZXZlbERCVHJhbnNhY3Rpb24s
IGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIHJhbmdlLCBkaXJlY3Rpb24sIGN1
cnNvck9wdGlvbnMpKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8SW5kZXhLZXlDdXJz
b3JJbXBsPiBjdXJzb3IgPSBJbmRleEtleUN1cnNvckltcGw6OmNyZWF0ZShsZXZlbERCVHJhbnNh
Y3Rpb24sIGN1cnNvck9wdGlvbnMpOwpAQCAtMTU5NSwxMSArMTY2NywxMSBAQCBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1
cnNvcihJREJCYWNraQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1
cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpv
cGVuSW5kZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewotICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJzb3Ii
KTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
OwotICAgIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zIGN1cnNvck9wdGlv
bnM7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJz
b3IiKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBDdXJzb3JP
cHRpb25zIGN1cnNvck9wdGlvbnM7CiAgICAgaWYgKCFpbmRleEN1cnNvck9wdGlvbnMobGV2ZWxE
QlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCByYW5nZSwg
ZGlyZWN0aW9uLCBjdXJzb3JPcHRpb25zKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRy
PEluZGV4Q3Vyc29ySW1wbD4gY3Vyc29yID0gSW5kZXhDdXJzb3JJbXBsOjpjcmVhdGUobGV2ZWxE
QlRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKTsKQEAgLTE2MDksMzUgKzE2ODEsNjAgQEAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlOjpvcGVuSW5k
ZXhDdXJzb3IoSURCQmFja2luZ1MKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAot
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24oSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24+
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZVRyYW5zYWN0aW9uKCkKK3sKKyAgICByZXR1
cm4gVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzKTsKK30KKworUGFzc1JlZlB0cjxJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb246OmNyZWF0ZShJREJMZXZlbERCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2FjdGlvbihiYWNraW5nU3RvcmUpKTsKK30KKwor
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uKElEQkxldmVs
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSkKICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKIHsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpiZWdp
bigpCit2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpiZWdpbigpCiB7
Ci0gICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpiZWdpbiIpOwor
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmJlZ2lu
Iik7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9uID0gTGV2
ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobV9iYWNraW5nU3RvcmUtPm1fZGIuZ2V0KCkpOwogfQog
Ci1ib29sIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCgpCitib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpjb21taXQoKQogewotICAgIElEQl9UUkFD
RSgiSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CisgICAgSURCX1RSQUNF
KCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CiAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb24pOwogICAgIGJvb2wgcmVzdWx0ID0gbV90cmFuc2FjdGlvbi0+Y29t
bWl0KCk7CiAgICAgbV90cmFuc2FjdGlvbi5jbGVhcigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQordm9pZCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogewotICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6cm9sbGJhY2siKTsKKyAgICBJ
REJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpyb2xsYmFjayIp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9uLT5yb2xsYmFj
aygpOwogICAgIG1fdHJhbnNhY3Rpb24uY2xlYXIoKTsKIH0KIAorYm9vbCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnKQoreworICAgIFN0
cmluZyBwYXRoQmFzZSA9IHBhdGhCYXNlQXJnOworCisgICAgaWYgKHBhdGhCYXNlLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVu
dHVhbGx5IHVzZSB0aGUgc2FtZSBMZXZlbERCIGRhdGFiYXNlIGZvciBhbGwgb3JpZ2lucy4KKyAg
ICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgc2VjdXJp
dHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsgIi5pbmRleGVkZGIubGV2ZWxkYiIpOwor
CisgICAgLy8gRklYTUU6IHRoaXMgaXMgY2hlY2tpbmcgZm9yIHByZXNlbmNlIG9mIHRoZSBkb21h
aW4sIG5vdCB0aGUgZGF0YWJhc2UgaXRzZWxmCisgICAgcmV0dXJuIGZpbGVFeGlzdHMocGF0aCsi
L0NVUlJFTlQiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gVVNF
KExFVkVMREIpCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI1
MmRlZTFmNWEyODkxZjc0Njc2ZTE1YmI3M2UzMDE5MzVhODVhOGIuLjNjOTQ1MWNjMDc0YzIwZTZm
MjE3YzQ5NDg3YTNkODM1MmYyNzAyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0yOSw3MyArMjksNjAgQEAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgorI2luY2x1
ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkxl
dmVsREJUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZXZlbERCQ29t
cGFyYXRvcjsKLWNsYXNzIExldmVsREJEYXRhYmFzZTsKLWNsYXNzIExldmVsREJUcmFuc2FjdGlv
bjsKLWNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktleTsKIGNsYXNzIElE
QktleVJhbmdlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRh
ZGF0YTsKIAogY2xhc3MgSURCQmFja2luZ1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQmFj
a2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVHJhbnNhY3Rpb247CiAKLSAgICB2aXJ0
dWFsIH5JREJCYWNraW5nU3RvcmUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlLCBjb25z
dCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqKTsKKyAgICB2
aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gZ2V0RGF0YWJhc2VOYW1lcygpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSopOwotICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lk
KTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24p
OwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkRhdGFiYXNlTWV0YWRhdGEqIGZvdW5kTWV0YWRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nVmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24pID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93
SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVE
YXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgVmVjdG9yPElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQp
OwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Cisg
ICAgdmlydHVhbCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gZ2V0T2JqZWN0U3RvcmVz
KGludDY0X3QgZGF0YWJhc2VJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RT
dG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAg
ICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElkZW50
aWZpZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElk
ZW50aWZpZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3Qg
dmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlY29yZElkZW50aWZpZXIocHJpbWFyeUtl
eSwgdmVyc2lvbikpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZp
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWNvcmRJZGVudGlmaWVyKCkpOyB9
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIH5SZWNvcmRJZGVudGlmaWVyKCkgeyB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXkuaXNFbXB0eSgpOyB9Ci0gICAgICAgIFZl
Y3RvcjxjaGFyPiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0g
ICAgICAgIHZvaWQgc2V0UHJpbWFyeUtleShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXkp
IHsgbV9wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsgfQotICAgICAgICBpbnQ2NF90IHZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KLSAgICAgICAgdm9pZCBzZXRWZXJzaW9uKGlu
dDY0X3QgdmVyc2lvbikgeyBtX3ZlcnNpb24gPSB2ZXJzaW9uOyB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBSZWNvcmRJZGVudGlmaWVyKGNvbnN0IFZlY3RvcjxjaGFyPiYgcHJpbWFyeUtleSwg
aW50NjRfdCB2ZXJzaW9uKSA6IG1fcHJpbWFyeUtleShwcmltYXJ5S2V5KSwgbV92ZXJzaW9uKHZl
cnNpb24pIHsgQVNTRVJUKCFwcmltYXJ5S2V5LmlzRW1wdHkoKSk7IH0KLSAgICAgICAgUmVjb3Jk
SWRlbnRpZmllcigpIDogbV9wcmltYXJ5S2V5KCksIG1fdmVyc2lvbigtMSkgeyB9Ci0KLSAgICAg
ICAgVmVjdG9yPGNoYXI+IG1fcHJpbWFyeUtleTsgLy8gRklYTUU6IE1ha2UgaXQgbW9yZSBjbGVh
ciB0aGF0IHRoaXMgaXMgdGhlICplbmNvZGVkKiB2ZXJzaW9uIG9mIHRoZSBrZXkuCi0gICAgICAg
IGludDY0X3QgbV92ZXJzaW9uOwogICAgIH07Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNv
cmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcHV0
UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgUmVjb3JkSWRlbnRpZmllciopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3Jl
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKLSAgICB2aXJ0dWFsIGludDY0X3Qg
Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIHZpcnR1
YWwgYm9vbCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCk7Ci0gICAgdmlydHVhbCBi
b29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBSZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpOwotCi0gICAgdmlydHVh
bCBWZWN0b3I8SURCSW5kZXhNZXRhZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSk7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsK
LSAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKik7
Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jik7Ci0gICAgdmlydHVhbCBib29sIGtl
eUV4aXN0c0luSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXkpOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRl
bnRpZmllcigpID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXkmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHB1dFJlY29yZChUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXIqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGdldEtleUdl
bmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJy
ZW50KSA9IDA7CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoVHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5JiwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKSA9IDA7CisK
KyAgICB2aXJ0dWFsIFZlY3RvcjxJREJJbmRleE1ldGFkYXRhPiBnZXRJbmRleGVzKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGV0
ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFJlY29yZElkZW50aWZp
ZXIqKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZp
YUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBrZXlFeGlzdHNJbkluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZWlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRl
eEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkgPSAwOwogCiAgICAgY2xhc3Mg
Q3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yPiB7CiAgICAgcHVibGljOgpAQCAtMTA0
LDg0ICs5MSwzMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBTZWVrCiAgICAgICAgIH07CiAKLSAg
ICAgICAgc3RydWN0IEN1cnNvck9wdGlvbnMgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGxv
d0tleTsKLSAgICAgICAgICAgIGJvb2wgbG93T3BlbjsKLSAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBoaWdoS2V5OwotICAgICAgICAgICAgYm9vbCBoaWdoT3BlbjsKLSAgICAgICAgICAgIGJvb2wg
Zm9yd2FyZDsKLSAgICAgICAgICAgIGJvb2wgdW5pcXVlOwotICAgICAgICB9OwotCi0gICAgICAg
IEN1cnNvcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBDdXJzb3JPcHRp
b25zJiBjdXJzb3JPcHRpb25zKQotICAgICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQotICAgICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9ucykKLSAgICAg
ICAgewotICAgICAgICB9Ci0gICAgICAgIEN1cnNvcihjb25zdCBJREJCYWNraW5nU3RvcmU6OkN1
cnNvciogb3RoZXIpOwotCi0gICAgICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KLSAgICAgICAgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNv
bnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlID0gU2Vlayk7Ci0gICAgICAgIGJvb2wgYWR2
YW5jZSh1bnNpZ25lZCBsb25nKTsKLSAgICAgICAgYm9vbCBmaXJzdFNlZWsoKTsKLQogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKLSAgICAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dEtleTsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKLSAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIo
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgfkN1cnNvcigpIHsgfQotICAgICAgICB2aXJ0dWFsIGJv
b2wgbG9hZEN1cnJlbnRSb3coKSA9IDA7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGJvb2wg
aXNQYXN0Qm91bmRzKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaGF2ZUVudGVyZWRSYW5nZSgpIGNv
bnN0OwotCi0gICAgICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbjsKLSAgICAg
ICAgY29uc3QgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlvbnM7Ci0gICAgICAgIE93blB0cjxM
ZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7Ci0gICAgICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vy
cmVudEtleTsKKyAgICAgICAgdmlydHVhbCBib29sIGFkdmFuY2UodW5zaWduZWQgbG9uZykgPSAw
OworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0g
MCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQktleT4ga2V5KCkgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5KCkgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKKyAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVj
b3JkSWRlbnRpZmllcigpID0gMDsKKyAgICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9OwogICAg
IH07CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlD
dXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGly
ZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVD
dXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGly
ZWN0aW9uKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJz
b3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9w
ZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vy
c29yOjpEaXJlY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVu
T2JqZWN0U3RvcmVLZXlDdXJzb3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVj
dGlvbikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1
cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJz
b3IoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0
aW9uKSA9IDA7CiAKLSAgICBjbGFzcyBUcmFuc2FjdGlvbiB7CisgICAgY2xhc3MgVHJhbnNhY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFuc2FjdGlvbj4gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVHJhbnNhY3Rpb24oSURCQmFja2luZ1N0b3JlKik7Ci0gICAgICAgIHZvaWQgYmVnaW4oKTsK
LSAgICAgICAgYm9vbCBjb21taXQoKTsKLSAgICAgICAgdm9pZCByb2xsYmFjaygpOwotCi0gICAg
ICAgIHN0YXRpYyBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbkZyb20oVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHJhbnNhY3Rpb24qPih0cmFuc2FjdGlvbiktPm1fdHJhbnNhY3Rpb24uZ2V0KCk7
Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIElEQkJhY2tpbmdTdG9yZSogbV9i
YWNraW5nU3RvcmU7Ci0gICAgICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IG1fdHJhbnNh
Y3Rpb247CisgICAgICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uKCkgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBiZWdpbigpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGNvbW1pdCgpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJvbGxiYWNrKCkgPSAwOwogICAgIH07Ci0KLXByb3RlY3Rl
ZDoKLSAgICBJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOwotCi0gICAgLy8g
U2hvdWxkIG9ubHkgdXNlZCBmb3IgbW9ja2luZy4KLSAgICBJREJCYWNraW5nU3RvcmUoKTsKLQot
cHJpdmF0ZToKLSAgICBib29sIGZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1h
cnlLZXkpOwotCi0gICAgU3RyaW5nIG1faWRlbnRpZmllcjsKLSAgICBSZWZQdHI8SURCRmFjdG9y
eUJhY2tlbmRJbXBsPiBtX2ZhY3Rvcnk7Ci0gICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbV9k
YjsKLSAgICBPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+IG1fY29tcGFyYXRvcjsKLQorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb24oKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKyNlbmRpZgogCiAjZW5kaWYgLy8gSURCQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuY3BwCmluZGV4IGVhYTczM2E1MjhlZjQ1NGFjMzgwZWMyZjBjNjFkNDUxM2NiZjcwOWMu
LjU1YzhkYWI0YTc4MTY2NjlmYzE4N2IzMjE4MjZjNzNiYzczYjk2NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQkxldmVsREJCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC0xMzMsNyArMTM0LDEyIEBAIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAgICAgaWYgKGl0MiAhPSBtX2JhY2tpbmdTdG9yZU1hcC5l
bmQoKSkKICAgICAgICAgYmFja2luZ1N0b3JlID0gaXQyLT52YWx1ZTsKICAgICBlbHNlIHsKLSAg
ICAgICAgYmFja2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2lu
LmdldCgpLCBkYXRhRGlyZWN0b3J5LCBmaWxlSWRlbnRpZmllciwgdGhpcyk7CisjaWYgVVNFKExF
VkVMREIpCisgICAgICAgIGJhY2tpbmdTdG9yZSA9IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9w
ZW4oc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyLCB0
aGlzKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhRGlyZWN0b3J5KTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoYmFja2lu
Z1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYjI3MjUxNGExZjI4MTIwMzUw
ODM1M2EzOTQyMTA3MjNjNGIzODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSwxMTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIElEQkxldmVsREJCYWNraW5nU3RvcmVfaAorI2RlZmluZSBJREJM
ZXZlbERCQmFja2luZ1N0b3JlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2lm
IFVTRShMRVZFTERCKQorCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExldmVsREJDb21w
YXJhdG9yOworY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9u
OworY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsOworCitjbGFzcyBJREJMZXZlbERCQmFja2lu
Z1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpOworCisg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCk7CisgICAgdmlydHVh
bCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRh
YmFzZU1ldGFkYXRhKik7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50
VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lk
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRh
YmFzZUludFZlcnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93
SWQsIGludDY0X3QgaW50VmVyc2lvbik7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxJREJPYmplY3RTdG9y
ZU1ldGFkYXRhPiBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmll
cigpOworICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleSYpOworICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRl
bnRpZmllciopOworICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAgdmlydHVhbCBib29sIG1heWJlVXBkYXRlS2V5R2Vu
ZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3U3RhdGUsIGJv
b2wgY2hlY2tDdXJyZW50KTsKKyAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9y
ZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlY29yZElkZW50aWZpZXIqIGZvdW5k
UmVjb3JkSWRlbnRpZmllcik7CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxJREJJbmRleE1ldGFkYXRh
PiBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlx
dWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOworICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRl
eERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBSZWNvcmRJZGVudGlmaWVyKik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0
UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXkmKTsKKyAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElE
QktleT4mIGZvdW5kUHJpbWFyeUtleSk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlS
YW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vy
c29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlS
YW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vy
c29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CisK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNhY3Rpb24+IGNyZWF0ZVRyYW5zYWN0aW9uKCk7
CisKKyAgICBzdGF0aWMgYm9vbCBiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UpOworCitwcm90ZWN0ZWQ6
CisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCosIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CisKK3By
aXZhdGU6CisgICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiBmb3VuZEVuY29kZWRQcmltYXJ5
S2V5KTsKKworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPElEQkZhY3RvcnlC
YWNrZW5kSW1wbD4gbV9mYWN0b3J5OworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IG1fZGI7
CisgICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBtX2NvbXBhcmF0b3I7CisKKyAgICBjbGFz
cyBUcmFuc2FjdGlvbiA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uPiBjcmVhdGUo
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgYmVnaW4oKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGNvbW1pdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcm9s
bGJhY2soKTsKKworICAgICAgICBzdGF0aWMgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJh
bnNhY3Rpb25Gcm9tKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qPih0cmFuc2FjdGlvbiktPm1fdHJhbnNhY3Rpb24uZ2V0KCk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFRyYW5zYWN0aW9uKElEQkxldmVs
REJCYWNraW5nU3RvcmUqKTsKKyAgICAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSogbV9iYWNr
aW5nU3RvcmU7CisgICAgICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rp
b247CisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworCisjZW5kaWYgLy8g
VVNFKExFVkVMREIpCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRp
ZiAvLyBJREJMZXZlbERCQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
aW5kZXggM2Q5NWQ0MzAzMWJlMjcyN2Q5NTJiZDFlNTEzNDJlNzExNzdiYjQzYS4uYjU0ZjAwOGM2
OWU5N2VhZWI5MmMyYzU4MjM3ZmM2NTM0MmZhODk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogCiAgICAgLy8gRklYTUU6IFRo
aXMgbWV0aG9kIGNvdWxkIGJlIGFzeW5jaHJvbm91cywgYnV0IHdlIG5lZWQgdG8gZXZhbHVhdGUg
aWYgaXQncyB3b3J0aCB0aGUgZXh0cmEgY29tcGxleGl0eS4KLSAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gSURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0b3JlKCkt
PmNyZWF0ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUo
KS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBpZCgpLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmll
ci5nZXQoKSkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1
dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAgQVNT
RVJUKGtleSAmJiBrZXktPmlzVmFsaWQoKSk7CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdT
dG9yZSgpLT5jcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmllcigpOwogICAgIGlmIChwdXRNb2Rl
ID09IEFkZE9ubHkgJiYgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9i
amVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RT
dG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRp
Zmllci5nZXQoKSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJLZXkgYWxy
ZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTM2Nyw3ICszNjcsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogICAgIGlmIChiYWNraW5n
U3RvcmVDdXJzb3IpIHsKIAogICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZWNvcmRJZGVudGlm
aWVyID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCk7CisgICAgICAgICAg
ICByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5vYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXIoKTsKIAogICAgICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmJlZ2lu
KCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAg
ICAgICAgICBib29sIHN1Y2Nlc3MgPSBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0
ZUluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5rZXks
IHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRl
eCAzMjQwNWM2ZWM3MjA5MWFiZWFjMmI3YzYyNDQ0ZTEzYzBmYTliZGY1Li5lMzcyNjJhNGYyNDli
NDBjMTNhYzJiMjBjMzQ0NzRhNTI4MzMyYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cApAQCAtNDksNyArNDksNyBAQCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZQogICAgICwgbV9tb2Rl
KG1vZGUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKICAgICAsIG1fZGF0YWJhc2UoZGF0YWJhc2Up
Ci0gICAgLCBtX3RyYW5zYWN0aW9uKGRhdGFiYXNlLT5iYWNraW5nU3RvcmUoKS5nZXQoKSkKKyAg
ICAsIG1fdHJhbnNhY3Rpb24oZGF0YWJhc2UtPmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVUcmFuc2Fj
dGlvbigpKQogICAgICwgbV90YXNrVGltZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OnRhc2tUaW1lckZpcmVkKQogICAgICwgbV90YXNrRXZlbnRUaW1lcih0aGlzLCAmSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGlu
Z1ByZWVtcHRpdmVFdmVudHMoMCkKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3Ip
CiAgICAgbV90YXNrRXZlbnRUaW1lci5zdG9wKCk7CiAKICAgICBpZiAod2FzUnVubmluZykKLSAg
ICAgICAgbV90cmFuc2FjdGlvbi5yb2xsYmFjaygpOworICAgICAgICBtX3RyYW5zYWN0aW9uLT5y
b2xsYmFjaygpOwogCiAgICAgLy8gUnVuIHRoZSBhYm9ydCB0YXNrcywgaWYgYW55LgogICAgIHdo
aWxlICghbV9hYm9ydFRhc2tRdWV1ZS5pc0VtcHR5KCkpIHsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAgICAgYm9vbCB1bnVzZWQg
PSBtX3N0YXRlID09IFVudXNlZDsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7CiAKLSAgICBib29s
IGNvbW1pdHRlZCA9IHVudXNlZCB8fCBtX3RyYW5zYWN0aW9uLmNvbW1pdCgpOworICAgIGJvb2wg
Y29tbWl0dGVkID0gdW51c2VkIHx8IG1fdHJhbnNhY3Rpb24tPmNvbW1pdCgpOwogCiAgICAgLy8g
QmFja2luZyBzdG9yZSByZXNvdXJjZXMgKGhlbGQgdmlhIGN1cnNvcnMpIG11c3QgYmUgcmVsZWFz
ZWQgYmVmb3JlIHNjcmlwdCBjYWxsYmFja3MKICAgICAvLyBhcmUgZmlyZWQsIGFzIHRoZSBzY3Jp
cHQgY2FsbGJhY2tzIG1heSByZWxlYXNlIHJlZmVyZW5jZXMgYW5kIGFsbG93IHRoZSBiYWNraW5n
IHN0b3JlCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojp0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPioKICAgICBB
U1NFUlQoIWlzVGFza1F1ZXVlRW1wdHkoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGFydFBl
bmRpbmcpIHsKLSAgICAgICAgbV90cmFuc2FjdGlvbi5iZWdpbigpOworICAgICAgICBtX3RyYW5z
YWN0aW9uLT5iZWdpbigpOwogICAgICAgICBtX3N0YXRlID0gUnVubmluZzsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuaAppbmRleCAyNzdmMjUzZGUxNDg2M2MyMjU2MGRmYjgyZjU4OTZh
NGYyMWRjNmY1Li5lNjI0ZWQ0MGM1OGY5Zjk2MGFjYjY0OTI0YTFlNDNkN2QxY2EzZDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFBlbmRpbmdFdmVudHMoaW50KTsKICAgICB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIHsg
bV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cysrOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVByZWVt
cHRpdmVFdmVudCgpIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cy0tOyBBU1NFUlQobV9wZW5k
aW5nUHJlZW1wdGl2ZUV2ZW50cyA+PSAwKTsgfQotICAgIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIGJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkgeyByZXR1cm4gJm1fdHJhbnNhY3Rpb247
IH0KKyAgICBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiBiYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqKTsKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFRhc2tRdWV1ZSBtX3ByZWVtcHRpdmVUYXNr
UXVldWU7CiAgICAgVGFza1F1ZXVlIG1fYWJvcnRUYXNrUXVldWU7CiAKLSAgICBJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uIG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAKICAgICAvLyBGSVhNRTogZGVsZXRl
IHRoZSB0aW1lciBvbmNlIHdlIGhhdmUgdGhyZWFkcyBpbnN0ZWFkLgogICAgIFRpbWVyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IG1fdGFza1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkyMzU0YTAxYjIzZjI0MDkw
NjU3MjE5ZWRjZGYyNWU2Yzg0YmViNjYuLjFiY2RkMThjNjc3ZGM2OWVhY2U1YzQ1ZTRlODM3OTk1
YjE2NThjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM0MzQsNyArMzQzNCw2IEBACiAJCTk3MTJBNUFFMTUwMDRFREEwMDQ4
QUYxMCAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNTU1MTUwMDRFREEwMDQ4QUYxMCAvKiBET01X
aW5kb3dJbmRleGVkRGF0YWJhc2UuaCAqLzsgfTsKIAkJOTcxMkE1QjAxNTAwNEVEQTAwNDhBRjEw
IC8qIElEQkFueS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzEyQTU1NzE1MDA0RURBMDA0OEFGMTAgLyogSURCQW55LmNwcCAqLzsgfTsKIAkJOTcx
MkE1QjExNTAwNEVEQTAwNDhBRjEwIC8qIElEQkFueS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxMkE1NTgxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkFu
eS5oICovOyB9OwotCQk5NzEyQTVFNTE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3Jl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJB
NThDMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJCYWNraW5nU3RvcmUuY3BwICovOyB9OwogCQk5NzEy
QTVCMzE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU1QTE1MDA0RURBMDA0OEFGMTAg
LyogSURCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTk3MTJBNUI0MTUwMDRFREEwMDQ4QUYxMCAv
KiBJREJDYWxsYmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3MTJBNTVCMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJDYWxsYmFja3MuaCAqLzsgfTsK
IAkJOTcxMkE1QjUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU1QzE1MDA0RURBMDA0OEFG
MTAgLyogSURCQ3Vyc29yLmNwcCAqLzsgfTsKQEAgLTM0NzQsNiArMzQ3Myw4IEBACiAJCTk3MTJB
NURGMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU4NjE1MDA0RURBMDA0OEFGMTAgLyogSURC
S2V5UGF0aC5oICovOyB9OwogCQk5NzEyQTVFMjE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5UmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcx
MkE1ODkxNTAwNEVEQTAwNDhBRjEwIC8qIElEQktleVJhbmdlLmNwcCAqLzsgfTsKIAkJOTcxMkE1
RTMxNTAwNEVEQTAwNDhBRjEwIC8qIElEQktleVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEyQTU4QTE1MDA0RURBMDA0OEFGMTAgLyogSURC
S2V5UmFuZ2UuaCAqLzsgfTsKKwkJOTcxMkE1RTUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkJhY2tp
bmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzEyQTU4QzE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmNwcCAqLzsgfTsK
KwkJOTcxMkE1RTYxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNThEMTUw
MDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQmFja2luZ1N0b3JlLmggKi87IH07CiAJCTk3MTJB
NUU3MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MTJBNThFMTUwMDRFREEwMDQ4QUYx
MCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCAqLzsgfTsKIAkJOTcxMkE1RTgxNTAwNEVEQTAwNDhB
RjEwIC8qIElEQkxldmVsREJDb2RpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MTJBNThGMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQ29k
aW5nLmggKi87IH07CiAJCTk3MTJBNUU5MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJPYmplY3RTdG9y
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzEy
QTU5MDE1MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuY3BwICovOyB9OwpAQCAtMTA3
MDMsNyArMTA3MDQsNyBAQAogCQk5NzEyQTU4QTE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5UmFu
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSURCS2V5UmFuZ2UuaDsgcGF0
aCA9IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MTJBNThCMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlSYW5nZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gSURCS2V5UmFuZ2UuaWRsOyBwYXRoID0gTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5UmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzEy
QTU4QzE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElEQkJhY2tpbmdTdG9yZS5jcHA7IHBhdGggPSBNb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5NzEyQTU4RDE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElEQkJhY2tpbmdTdG9yZS5oOyBwYXRoID0g
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk3MTJBNThEMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQmFja2luZ1N0
b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElEQkxldmVsREJCYWNraW5n
U3RvcmUuaDsgcGF0aCA9IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxMkE1OEUxNTAwNEVEQTAwNDhBRjEw
IC8qIElEQkxldmVsREJDb2RpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSURCTGV2ZWxEQkNvZGluZy5jcHA7IHBhdGggPSBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcxMkE1OEYx
NTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJDb2RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSURCTGV2ZWxEQkNvZGluZy5oOyBwYXRoID0gTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzEy
QTU5MDE1MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSURCT2JqZWN0U3RvcmUuY3BwOyBwYXRoID0gTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTc4NTIsNyArMTc4NTMsNiBAQAogCQkJCTk3MTJBNTU4MTUwMDRFREEwMDQ4QUYxMCAv
KiBJREJBbnkuaCAqLywKIAkJCQk5NzEyQTU1OTE1MDA0RURBMDA0OEFGMTAgLyogSURCQW55Lmlk
bCAqLywKIAkJCQk5NzEyQTU1QTE1MDA0RURBMDA0OEFGMTAgLyogSURCQmFja2luZ1N0b3JlLmgg
Ki8sCi0JCQkJOTcxMkE1OEMxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkJhY2tpbmdTdG9yZS5jcHAg
Ki8sCiAJCQkJOTcxMkE1NUIxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkNhbGxiYWNrcy5oICovLAog
CQkJCTk3MTJBNTVDMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJDdXJzb3IuY3BwICovLAogCQkJCTk3
MTJBNTVEMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJDdXJzb3IuaCAqLywKQEAgLTE3ODk5LDYgKzE3
ODk5LDggQEAKIAkJCQk5NzEyQTU4OTE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5UmFuZ2UuY3Bw
ICovLAogCQkJCTk3MTJBNThBMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlSYW5nZS5oICovLAog
CQkJCTk3MTJBNThCMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlSYW5nZS5pZGwgKi8sCisJCQkJ
OTcxMkE1OEMxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkJhY2tpbmdTdG9yZS5jcHAgKi8sCisJCQkJ
OTcxMkE1OEQxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJCYWNraW5nU3RvcmUuaCAqLywK
IAkJCQk5NzEyQTU4RTE1MDA0RURBMDA0OEFGMTAgLyogSURCTGV2ZWxEQkNvZGluZy5jcHAgKi8s
CiAJCQkJOTcxMkE1OEYxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJDb2RpbmcuaCAqLywK
IAkJCQlCQ0M2NTE0NTE1OTI5NEMzMDBBQ0M5RTQgLyogSURCTWV0YWRhdGEuaCAqLywKQEAgLTIz
ODIzLDYgKzIzODI1LDcgQEAKIAkJCQk5NzEyQTVEQzE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzEyQTVERjE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5
UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcxMkE1RTMxNTAwNEVEQTAwNDhBRjEwIC8qIElE
QktleVJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzEyQTVFNjE1MDA0RURBMDA0OEFGMTAg
LyogSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcxMkE1RTgx
NTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3MTJBNUVBMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTcxMkE1RUQxNTAwNEVEQTAwNDhBRjEwIC8qIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjcwMDksNyArMjcwMTIsNiBAQAogCQkJCTUxRTFF
Q0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3MTJBNUIwMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJOTcxMkE1RTUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkJhY2tpbmdTdG9yZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDNTg1QTY2MjExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVCNTE1MDA0RURBMDA0OEFGMTAg
LyogSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUI4MTUwMDRFREEwMDQ4
QUYxMCAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MDI3
LDYgKzI3MDI5LDcgQEAKIAkJCQk5NzEyQTVEQjE1MDA0RURBMDA0OEFGMTAgLyogSURCS2V5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNURFMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJLZXlQ
YXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUUyMTUwMDRFREEwMDQ4QUYxMCAvKiBJ
REJLZXlSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzEyQTVFNTE1MDA0RURBMDA0OEFG
MTAgLyogSURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUU3MTUw
MDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3MTJBNUU5MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzEyQTVFQzE1MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggMDJkMmQ1ZDQyMGNmMzMzOTE4NTA1
NDY4ZDQ1OTVkYTMzZGE4OWE0NC4uNGUzN2QzZWFhOTA0ZjZiOTIyZjI4ZDIwYjg5ZWUwYjFkNTBj
MWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KIAorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmllcigp
IE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8UmVjb3JkSWRlbnRpZmllcj4oKTsgfQorCiAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBib29sIHB1dFJlY29yZChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7
IH0KQEAgLTYzLDYgKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6
RGlyZWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPEN1cnNvcj4oKTsgfQogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5JbmRleEtleUN1cnNvcihUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURF
IHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3BlbkluZGV4Q3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFu
Z2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxD
dXJzb3I+KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb24oKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uPigp
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>