<?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>207437</bug_id>
          
          <creation_ts>2020-02-08 21:08:32 -0800</creation_ts>
          <short_desc>IndexedDB: iteration of cursors skip records if deleted</short_desc>
          <delta_ts>2020-02-12 13:43:17 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190917</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1616652</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-08 21:08:32 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=190917 did not fix the issue correctly. When records with same index key are deleted before cursor comes to their position, cursor would not be able to visit them. See modified test for the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616656</commentid>
    <comment_count>1</comment_count>
      <attachid>390196</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-08 21:48:35 -0800</bug_when>
    <thetext>Created attachment 390196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617630</commentid>
    <comment_count>2</comment_count>
      <attachid>390424</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-11 14:25:53 -0800</bug_when>
    <thetext>Created attachment 390424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617667</commentid>
    <comment_count>3</comment_count>
      <attachid>390440</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-11 14:53:30 -0800</bug_when>
    <thetext>Created attachment 390440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617754</commentid>
    <comment_count>4</comment_count>
      <attachid>390440</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-11 16:27:23 -0800</bug_when>
    <thetext>Comment on attachment 390440
Patch

Two copies of the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617768</commentid>
    <comment_count>5</comment_count>
      <attachid>390465</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-11 16:46:11 -0800</bug_when>
    <thetext>Created attachment 390465
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617770</commentid>
    <comment_count>6</comment_count>
      <attachid>390466</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-11 16:47:40 -0800</bug_when>
    <thetext>Created attachment 390466
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617780</commentid>
    <comment_count>7</comment_count>
      <attachid>390466</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 17:05:53 -0800</bug_when>
    <thetext>Comment on attachment 390466
Patch for landing

Clearing flags on attachment: 390466

Committed r256414: &lt;https://trac.webkit.org/changeset/256414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617781</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 17:05:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617782</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-11 17:06:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/59370439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618185</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 13:40:39 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618186</commentid>
    <comment_count>11</comment_count>
      <attachid>390552</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 13:40:40 -0800</bug_when>
    <thetext>Created attachment 390552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618187</commentid>
    <comment_count>12</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 13:43:04 -0800</bug_when>
    <thetext>Patch is associated to the wrong bug..</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390196</attachid>
            <date>2020-02-08 21:48:35 -0800</date>
            <delta_ts>2020-02-11 14:25:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207437-20200208214825.patch</filename>
            <type>text/plain</type>
            <size>14837</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYxNDU3MGJmZmNlNjgx
ZjcwN2U5YTQ5MDg2NGJjN2RhYzRiYzQ0ZC4uMDU5MjE4NWUxMTIyNWQ5MTIxYjA1OGY2MWFiYzFj
MjkwYjU2M2NlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byBy
ZWNvcmRzLCBjdXJzb3JzIHdpbGwgZHVtcCBjYWNoZWQgcmVjb3JkcyBhbmQgc2V0IG5ldyBrZXkg
cmFuZ2UgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhlIG5ldyByYW5nZSBkaWQgbm90IGluY2x1
ZGUga2V5IG9mIGN1cnJlbnQgY3Vyc29yIHJlY29yZCwgd2hpY2ggaXMgd3JvbmcgYmVjYXVzZSB0
d28gaW5kZXggcmVjb3JkcyBjYW4gaGF2ZSAKKyAgICAgICAgdGhlIHNhbWUga2V5IGJ1dCBkaWZm
ZXJlbnQgdmFsdWVzLgorICAgICAgICByMjM3NTkwIHRyaWVkIGZpeGluZyB0aGlzIGlzc3VlIGJ5
IGNhY2hpbmcgYWxsIHRoZSBmb2xsb3dpbmcgcmVjb3JkcyB3aGljaCBoYXZlIHRoZSBzYW1lIGtl
eSBhcyBjdXJyZW50IHJlY29yZC4KKyAgICAgICAgVGhhdCBpcyBub3QgcmlnaHQgYXMgdGhlcmUg
Y291bGQgYmUgY2hhbmdlcyBvbiB0aGUgY2FjaGVkIHJlY29yZHMsIGFuZCB0aGUgY2FjaGVkIHJl
Y29yZHMgd2VyZSBub3QgdXBkYXRlZC4KKworICAgICAgICBUbyBjb21wbGV0ZWx5IGZpeCB0aGUg
aXNzdWUsIHNldCB0aGUgbmV3IGtleSByYW5nZSB0byBpbmNsdWRlIGtleSBvZiBjdXJyZW50IGN1
cnNvciByZWNvcmQgYW5kIGV4Y2x1ZGUgc29tZQorICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAg
QWRkZWQgdGVzdCBjYXNlIGluOiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxl
LWl0ZXJhdGluZy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjpTUUxpdGVJREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpi
dWlsZEluZGV4U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjplc3RhYmxpc2hTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmZldGNoKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmg6CisKIDIw
MjAtMDItMDcgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
bHRlciBvdXQgVFVSTi9TVFVOIC5sb2NhbCBVUkxzIGZyb20gYSBSVENQZWVyQ29ubmVjdGlvbiBp
Y2VTZXJ2ZXJzIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggMjFkZmY4NGY3NWZhNGI1
OTY0NTVjNmZlNmM2ZDE1NTNhODI5ZjhhMC4uMjZkMDI5NjdiZGYxZDQ1NWRhMDU1MjE2YTNiOWQ0
Mjc2MDk1OGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTExNiwxMSArMTE2LDE2IEBA
IHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwg
Y29uc3QgT3B0aW9uYWw8SURCS2V5UGF0CiAgICAgcmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJl
Y29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJlbnRSZWNvcmQu
cmVjb3JkLnZhbHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURCVmFsdWUoKSwg
a2V5UGF0aH07CiB9CiAKLXN0YXRpYyBTdHJpbmcgYnVpbGRJbmRleFN0YXRlbWVudChjb25zdCBJ
REJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJz
b3JEaXJlY3Rpb24pCitzdGF0aWMgU3RyaW5nIGJ1aWxkSW5kZXhTdGF0ZW1lbnQoY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gY3Vyc29y
RGlyZWN0aW9uLCBib29sIHNob3VsZEluY2x1ZGVJbmRleFJlY29yZFZhbHVlKQogewogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiU0VMRUNU
IHJvd2lkLCBrZXksIHZhbHVlIEZST00gSW5kZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFO
RCBrZXkgIik7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIGtleSwg
dmFsdWUgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EICgiKTsKKworICAg
IGlmIChzaG91bGRJbmNsdWRlSW5kZXhSZWNvcmRWYWx1ZSkKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgKCIpOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIga2V5ICIpOwog
ICAgIGlmICgha2V5UmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgJiYgIWtleVJhbmdlLmxvd2VyT3Bl
bikKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI+PSIpOwogICAgIGVsc2UKQEAgLTEz
Miw3ICsxMzcsMTggQEAgc3RhdGljIFN0cmluZyBidWlsZEluZGV4U3RhdGVtZW50KGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3UKICAgICBlbHNlCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCc8Jyk7CiAKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNU
KD8gQVMgVEVYVCkgT1JERVIgQlkga2V5Iik7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
Q0FTVCg/IEFTIFRFWFQpICkiKTsKKworICAgIGlmIChzaG91bGRJbmNsdWRlSW5kZXhSZWNvcmRW
YWx1ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBPUiAoIGtleSA9IENBU1Qo
PyBBUyBURVhUKSBBTkQgdmFsdWUgIik7CisgICAgICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVlKQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCI8Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiPiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNU
KD8gQVMgVEVYVCkgKSApIik7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
T1JERVIgQlkga2V5Iik7CiAgICAgaWYgKGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbjo6UHJldiB8fCBjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb246OlByZXZ1bmlxdWUpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IERFU0MiKTsKIApAQCAtMTc5LDcgKzE5NSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjplc3Rh
Ymxpc2hTdGF0ZW1lbnQoKQogICAgIFN0cmluZyBzcWw7CiAKICAgICBpZiAobV9pbmRleElEICE9
IElEQkluZGV4SW5mbzo6SW52YWxpZElkKSB7Ci0gICAgICAgIHNxbCA9IGJ1aWxkSW5kZXhTdGF0
ZW1lbnQobV9rZXlSYW5nZSwgbV9jdXJzb3JEaXJlY3Rpb24pOworICAgICAgICBzcWwgPSBidWls
ZEluZGV4U3RhdGVtZW50KG1fa2V5UmFuZ2UsIG1fY3Vyc29yRGlyZWN0aW9uLCAhbV9jdXJyZW50
SW5kZXhSZWNvcmRWYWx1ZS5pc051bGwoKSk7CiAgICAgICAgIG1fYm91bmRJRCA9IG1faW5kZXhJ
RDsKICAgICB9IGVsc2UgewogICAgICAgICBzcWwgPSBidWlsZE9iamVjdFN0b3JlU3RhdGVtZW50
KG1fa2V5UmFuZ2UsIG1fY3Vyc29yRGlyZWN0aW9uKTsKQEAgLTIxOSw0MSArMjM1LDM3IEBAIHZv
aWQgU1FMaXRlSURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCkKIAogICAgIG1f
Y3VycmVudEtleUZvclVuaXF1ZW5lc3MgPSBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0KCkucmVjb3Jk
LmtleTsKIAotICAgIGlmIChtX2N1cnNvckRpcmVjdGlvbiAhPSBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbjo6TmV4dHVuaXF1ZSAmJiBtX2N1cnNvckRpcmVjdGlvbiAhPSBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbjo6UHJldnVuaXF1ZSkgewotICAgICAgICBpZiAoIW1fZmV0Y2hlZFJlY29y
ZHMubGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSkKLSAgICAgICAgICAgIGZldGNoKFNob3VsZEZl
dGNoRm9yU2FtZUtleTo6WWVzKTsKLQotICAgICAgICB3aGlsZSAobV9mZXRjaGVkUmVjb3Jkcy5s
YXN0KCkucmVjb3JkLmtleSAhPSBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0KCkucmVjb3JkLmtleSkg
ewotICAgICAgICAgICAgQVNTRVJUKG1fZmV0Y2hlZFJlY29yZHNTaXplID49IG1fZmV0Y2hlZFJl
Y29yZHMubGFzdCgpLnJlY29yZC5zaXplKCkpOwotICAgICAgICAgICAgbV9mZXRjaGVkUmVjb3Jk
c1NpemUgLT0gbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkucmVjb3JkLnNpemUoKTsKLSAgICAgICAg
ICAgIG1fZmV0Y2hlZFJlY29yZHMucmVtb3ZlTGFzdCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgbV9mZXRjaGVkUmVjb3Jkcy5jbGVhcigpOwotICAgICAgICBtX2ZldGNoZWRS
ZWNvcmRzU2l6ZSA9IDA7Ci0gICAgfQotCiAgICAgLy8gSWYgT2JqZWN0U3RvcmUgb3IgSW5kZXgg
Y29udGVudHMgY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUgc3RhdGVtZW50IGFuZCBiaW5k
IG5ldyBwYXJhbWV0ZXJzIHRvIGl0LgogICAgIC8vIFRoaXMgaXMgdG8gcGljayB1cCBhbnkgY2hh
bmdlcyB0aGF0IG1pZ2h0IGV4aXN0LgotICAgIC8vIFdlIGFsc28gbmVlZCB0byB0aHJvdyBhd2F5
IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgogCiAg
ICAgbV9zdGF0ZW1lbnROZWVkc1Jlc2V0ID0gdHJ1ZTsKIAorICAgIC8vIEluZGV4IHJlY29yZHMg
Y291bGQgaGF2ZSB0aGUgc2FtZSBrZXkgdmFsdWUsIHNvIHdlIG5lZWQgdG8gYWxzbyByZW1lbWJl
ciBjdXJyZW50IHJlY29yZCB2YWx1ZSBmb3IgZnV0dXJlIHNlYXJjaC4KKyAgICBpZiAobV9pbmRl
eElEICE9IElEQkluZGV4SW5mbzo6SW52YWxpZElkKSB7CisgICAgICAgIGlmIChtX2N1cnJlbnRJ
bmRleFJlY29yZFZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9zdGF0ZW1lbnQgPSBudWxs
cHRyOworICAgICAgICBtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVlID0gbV9mZXRjaGVkUmVjb3Jk
cy5maXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OworICAgIH0KKwogICAgIGlmIChtX2N1cnNvckRp
cmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRp
cmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZSkgewogICAg
ICAgICBtX2N1cnJlbnRMb3dlcktleSA9IG1fY3VycmVudEtleUZvclVuaXF1ZW5lc3M7Ci0gICAg
ICAgIGlmICghbV9rZXlSYW5nZS5sb3dlck9wZW4pIHsKKyAgICAgICAgaWYgKCFtX3N0YXRlbWVu
dCB8fCAhbV9rZXlSYW5nZS5sb3dlck9wZW4pIHsKICAgICAgICAgICAgIG1fa2V5UmFuZ2UubG93
ZXJPcGVuID0gdHJ1ZTsKICAgICAgICAgICAgIG1fa2V5UmFuZ2UubG93ZXJLZXkgPSBtX2N1cnJl
bnRMb3dlcktleTsKICAgICAgICAgICAgIG1fc3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY3VycmVudFVwcGVyS2V5ID0gbV9jdXJyZW50S2V5
Rm9yVW5pcXVlbmVzczsKLSAgICAgICAgaWYgKCFtX2tleVJhbmdlLnVwcGVyT3BlbikgeworICAg
ICAgICBpZiAoIW1fc3RhdGVtZW50IHx8ICFtX2tleVJhbmdlLnVwcGVyT3BlbikgewogICAgICAg
ICAgICAgbV9rZXlSYW5nZS51cHBlck9wZW4gPSB0cnVlOwogICAgICAgICAgICAgbV9rZXlSYW5n
ZS51cHBlcktleSA9IG1fY3VycmVudFVwcGVyS2V5OwogICAgICAgICAgICAgbV9zdGF0ZW1lbnQg
PSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gVGhyb3cgYXdheSBhbnkgZmV0
Y2hlZCByZWNvcmRzIGFzIHRoZXkgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KKyAgICBtX2ZldGNo
ZWRSZWNvcmRzLmNsZWFyKCk7CisgICAgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPSAwOwogfQogCiB2
b2lkIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRTdGF0ZW1lbnQoKQpAQCAtMzAxLDYg
KzMxMywyMSBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoIW1fY3VycmVudEluZGV4UmVjb3JkVmFs
dWUuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBjdXJyZW50S2V5ID0gKG1fY3Vyc29yRGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0IHx8IG1fY3Vyc29yRGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0dW5pcXVlKSA/IG1fY3VycmVu
dExvd2VyS2V5IDogbV9jdXJyZW50VXBwZXJLZXk7CisgICAgICAgIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoY3VycmVudEtleSk7CisgICAgICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
ICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IGN1cnNvciBzdGF0ZW1lbnQgKGN1cnJlbnQga2V5KSIpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudEluZGV4UmVjb3JkVmFsdWUpOworICAgICAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChjdXJyZW50IHZhbHVlKSIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTM3NCwxMyArNDAxLDEzIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjphZHZhbmNlKHVp
bnQ2NF90IGNvdW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNRTGl0ZUlEQkN1cnNv
cjo6ZmV0Y2goU2hvdWxkRmV0Y2hGb3JTYW1lS2V5IHNob3VsZEZldGNoRm9yU2FtZUtleSkKK2Jv
b2wgU1FMaXRlSURCQ3Vyc29yOjpmZXRjaCgpCiB7CiAgICAgQVNTRVJUKG1fZmV0Y2hlZFJlY29y
ZHMuaXNFbXB0eSgpIHx8ICFtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3Jk
KCkpOwogCiAgICAgbV9mZXRjaGVkUmVjb3Jkcy5hcHBlbmQoeyB9KTsKIAotICAgIGJvb2wgaXNV
bmlxdWUgPSBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6
TmV4dHVuaXF1ZSB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbjo6UHJldnVuaXF1ZSB8fCBzaG91bGRGZXRjaEZvclNhbWVLZXkgPT0gU2hvdWxkRmV0Y2hG
b3JTYW1lS2V5OjpZZXM7CisgICAgYm9vbCBpc1VuaXF1ZSA9IG1fY3Vyc29yRGlyZWN0aW9uID09
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0dW5pcXVlIHx8IG1fY3Vyc29yRGlyZWN0
aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVlOwogICAgIGlmICgh
aXNVbmlxdWUpIHsKICAgICAgICAgYm9vbCBmZXRjaFN1Y2NlZWRlZCA9IGZldGNoTmV4dFJlY29y
ZChtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKSk7CiAgICAgICAgIGlmIChmZXRjaFN1Y2NlZWRlZCkK
QEAgLTM5Nyw4ICs0MjQsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2goU2hvdWxkRmV0
Y2hGb3JTYW1lS2V5IHNob3VsZEZldGNoRm9yU2FtZUtleSkKICAgICAgICAgaWYgKG1fZmV0Y2hl
ZFJlY29yZHMubGFzdCgpLmNvbXBsZXRlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBpZiAoc2hvdWxkRmV0Y2hGb3JTYW1lS2V5ID09IFNob3VsZEZldGNoRm9yU2FtZUtl
eTo6WWVzKQotICAgICAgICAgICAgbV9mZXRjaGVkUmVjb3Jkcy5hcHBlbmQoeyB9KTsKKyAgICAg
ICAgbV9mZXRjaGVkUmVjb3Jkc1NpemUgLT0gbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkucmVjb3Jk
LnNpemUoKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5k
ZXggMzU0Njg0ZWI5NWFhYjU5YzMxNjkzMzYwNzhhZDdjYmExZDIwOTdmOC4uMTg4OTUwNTY1MTZm
ZGU5NGQ1YzE0ZGUzYzhiMDU3MjdjNzU1NjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNDQs
OCArNDQsNiBAQCBjbGFzcyBJREJHZXRSZXN1bHQ7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewog
Ci1lbnVtIGNsYXNzIFNob3VsZEZldGNoRm9yU2FtZUtleSA6IGJvb2wgeyBObywgWWVzIH07Ci0K
IGNsYXNzIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOwogCiBjbGFzcyBTUUxpdGVJREJDdXJzb3IgewpA
QCAtOTQsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICBTaG91bGRGZXRjaEFnYWluCiAgICAg
fTsKIAotICAgIGJvb2wgZmV0Y2goU2hvdWxkRmV0Y2hGb3JTYW1lS2V5ID0gU2hvdWxkRmV0Y2hG
b3JTYW1lS2V5OjpObyk7CisgICAgYm9vbCBmZXRjaCgpOwogCiAgICAgc3RydWN0IFNRTGl0ZUN1
cnNvclJlY29yZCB7CiAgICAgICAgIElEQkN1cnNvclJlY29yZCByZWNvcmQ7CkBAIC0xMTgsNiAr
MTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIElEQktleURhdGEgbV9jdXJyZW50TG93ZXJLZXk7CiAg
ICAgSURCS2V5RGF0YSBtX2N1cnJlbnRVcHBlcktleTsKKyAgICBJREJLZXlEYXRhIG1fY3VycmVu
dEluZGV4UmVjb3JkVmFsdWU7CiAKICAgICBEZXF1ZTxTUUxpdGVDdXJzb3JSZWNvcmQ+IG1fZmV0
Y2hlZFJlY29yZHM7CiAgICAgdWludDY0X3QgbV9mZXRjaGVkUmVjb3Jkc1NpemUgeyAwIH07CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNjY0YzllMjRjN2FlZWI5OTEwMTRmODgxYTJhZDUzMDVkZTVlZGFjNC4uMzNhYjcwMTAx
NmYwMzAyNjllYzdiZTExYjQ1MmQ2NmZmZGYwM2VmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIwLTAyLTA4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIElu
ZGV4ZWREQjogaXRlcmF0aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0
ZXJhdGluZy5qczoKKyAgICAgICAgKHBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAob25P
cGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvbk9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6IERlbGV0ZWQuCisKIDIwMjAtMDItMDcgIEphc29u
IExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0g
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYWdlLWNhY2hlLWNvbXBsZXRlZC1wYXltZW50LXJl
c3BvbnNlLmh0dHBzLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hp
bGUtaXRlcmF0aW5nLWV4cGVjdGVkLnR4dAppbmRleCBhOGE5NmU5MmVkZjY0MGRjMjA0ZDEzNTJl
MWVlNDhkYTliN2E4MmQ3Li5jYzIzYTY0YTYxZjIwYmEwODM4ODRmOGRhNTAzOTVjNjkzOTdkYTY2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRl
LXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0CkBAIC0x
MSw3ICsxMSw3IEBAIGluZGV4ZWREQi5vcGVuKGRibmFtZSkKIHByZXBhcmVEYXRhYmFzZSgpOgog
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotb2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RT
dG9yZScpCiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgna2V5JywgJ2tleScsIHt1bmlxdWU6IGZh
bHNlfSkKIAogb25PcGVuU3VjY2VzcygpOgpAQCAtNDAsNyArNDAsMTEgQEAgUEFTUyBKU09OLnN0
cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzICJ7XCJrZXlcIjpcImtleTJcIixcInZhbHVlXCI6XCJ2
YWx1ZTRcIn0iCiBEZWxldGUgY3Vyc29yCiBDdXJzb3IgY29udGludWVzCiAKLVBBU1MgU3VjY2Vz
c2Z1bGx5IGl0ZXJhdGVkIHdob2xlIGFycmF5IHdpdGggY3Vyc29yIHVwZGF0ZXMuCitQQVNTIEpT
T04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkgaXMgIntcImtleVwiOlwia2V5M1wiLFwidmFsdWVc
IjpcInZhbHVlNVwifSIKK0RlbGV0ZSBsYXN0IHJlY29yZCBiZWZvcmUgdmlzaXRpbmcKK0N1cnNv
ciBjb250aW51ZXMKKworUEFTUyBjdXJzb3JSZWNvcmRzQ291bnQgaXMgNgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVy
YXRpbmcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuanMKaW5kZXggNDhiZDkwYjAwMGU0ZTgzNjdmMTFlNmEw
ODA5YmVkYmU4Y2E1NTM0ZC4uODA5YzNhYmIzNWJjYjBjY2MyMDYyYjFmYzJhZDBlZjI0ZjA3MDEy
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qcwpAQCAt
MTIsMTIgKzEyLDE1IEBAIGNvbnN0IG9iamVjdEFycmF5ID0gWwogICAgIHsga2V5OiAia2V5MSIs
IHZhbHVlOiAidmFsdWUxIiB9LAogICAgIHsga2V5OiAia2V5MSIsIHZhbHVlOiAidmFsdWUzIiB9
LAogICAgIHsga2V5OiAia2V5MiIsIHZhbHVlOiAidmFsdWUyIiB9LAotICAgIHsga2V5OiAia2V5
MiIsIHZhbHVlOiAidmFsdWU0IiB9CisgICAgeyBrZXk6ICJrZXkyIiwgdmFsdWU6ICJ2YWx1ZTQi
IH0sCisgICAgeyBrZXk6ICJrZXkzIiwgdmFsdWU6ICJ2YWx1ZTUiIH0sCisgICAgeyBrZXk6ICJr
ZXkzIiwgdmFsdWU6ICJ2YWx1ZTYiIH0sCiBdOwogCiBmdW5jdGlvbiBwb3B1bGF0ZU9iamVjdFN0
b3JlKCkgewotICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmplY3RBcnJheSkKLSAgICAgICAgb2Jq
ZWN0U3RvcmUuYWRkKG9iamVjdCkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIG9iamVjdEFycmF5LmZvckVhY2goKG9iamVjdCwgaSk9PnsKKyAgICAgICAgb2JqZWN0U3Rv
cmUuYWRkKG9iamVjdCwgaSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IH0pOwogfQogCiBmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZlbnQpCkBAIC0yNiw3ICsyOSw3
IEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShldmVudCkKICAgICBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwog
Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdvYmplY3RTdG9yZScsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ29iamVjdFN0b3JlJykiKTsKICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleCgna2V5JywgJ2tleScsIHt1bmlxdWU6IGZhbHNlfSkiKTsKIAogICAgIHBvcHVsYXRlT2Jq
ZWN0U3RvcmUoKTsKQEAgLTQzLDI4ICs0NiwzMCBAQCBmdW5jdGlvbiBvbk9wZW5TdWNjZXNzKGV2
ZW50KQogICAgIGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2tleScpIik7
CiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5DdXJzb3IoKSIpOwogCi0gICAg
dmFyIG4gPSAwOworICAgIGN1cnNvclJlY29yZHNDb3VudCA9IDA7CiAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OwogICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIkpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkiLCBKU09OLnN0cmluZ2lmeShv
YmplY3RBcnJheVtuKytdKSk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIkpT
T04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkiLCBKU09OLnN0cmluZ2lmeShvYmplY3RBcnJheVtj
dXJzb3JSZWNvcmRzQ291bnQrK10pKTsKIAogICAgICAgICAgICAgaWYgKGN1cnNvci5rZXkgPT0g
ImtleTEiKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoIlVwZGF0ZSBjdXJzb3IiKTsKICAgICAg
ICAgICAgICAgICBjb25zdCB7dmFsdWV9ID0gY3Vyc29yOwogICAgICAgICAgICAgICAgIGN1cnNv
ci51cGRhdGUodmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0gCisg
ICAgICAgICAgICBpZiAoY3Vyc29yLmtleSA9PSAia2V5MiIpIHsKICAgICAgICAgICAgICAgICBk
ZWJ1ZygiRGVsZXRlIGN1cnNvciIpOwogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJzb3Iua2V5ID09ICJrZXkzIikgewor
ICAgICAgICAgICAgICAgIGRlYnVnKCJEZWxldGUgbGFzdCByZWNvcmQgYmVmb3JlIHZpc2l0aW5n
Iik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKDYpOworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBkZWJ1ZygiQ3Vyc29yIGNvbnRpbnVlc1xuIik7CiAgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChu
ICE9IG9iamVjdEFycmF5Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDdXJz
b3IgZGlkbid0IGdvIHRocm91Z2ggd2hvbGUgYXJyYXkuIik7Ci0gICAgICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBpdGVyYXRlZCB3aG9sZSBh
cnJheSB3aXRoIGN1cnNvciB1cGRhdGVzLiIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
TnVtYmVyKCJjdXJzb3JSZWNvcmRzQ291bnQiLCBvYmplY3RBcnJheS5sZW5ndGggLSAxKTsKICAg
ICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390424</attachid>
            <date>2020-02-11 14:25:53 -0800</date>
            <delta_ts>2020-02-11 14:53:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207437-20200211142553.patch</filename>
            <type>text/plain</type>
            <size>20781</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY0NTc3YzA0MTUwZDBm
M2E3NDIxNDFhNzdkNjRhZDkxZDcxNDY4MS4uOGM2Y2NjOTNmMzVhYmRkMGRkMzQwMmE2ZDFhNTJh
ZGUyYjgzNWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byBy
ZWNvcmRzLCBjdXJzb3JzIHdpbGwgZHVtcCBjYWNoZWQgcmVjb3JkcyBhbmQgc2V0IG5ldyBrZXkg
cmFuZ2UgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhlIG5ldyByYW5nZSBkaWQgbm90IGluY2x1
ZGUga2V5IG9mIGN1cnJlbnQgY3Vyc29yIHJlY29yZCwgd2hpY2ggaXMgd3JvbmcgYmVjYXVzZSB0
d28gaW5kZXggcmVjb3JkcyBjYW4gaGF2ZSAKKyAgICAgICAgdGhlIHNhbWUga2V5IGJ1dCBkaWZm
ZXJlbnQgdmFsdWVzLgorICAgICAgICByMjM3NTkwIHRyaWVkIGZpeGluZyB0aGlzIGlzc3VlIGJ5
IGNhY2hpbmcgYWxsIHRoZSBmb2xsb3dpbmcgcmVjb3JkcyB3aGljaCBoYXZlIHRoZSBzYW1lIGtl
eSBhcyBjdXJyZW50IHJlY29yZC4KKyAgICAgICAgVGhhdCBpcyBub3QgcXVpdGUgcmlnaHQgYXMg
dGhlcmUgY291bGQgYmUgY2hhbmdlcyBvbiB0aGUgY2FjaGVkIHJlY29yZHMsIGFuZCB0aGUgY2Fj
aGVkIHJlY29yZHMgd2VyZSBub3QgCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgVG8gY29y
cmVjdGx5IGZpeCB0aGUgaXNzdWUsIHNldCB0aGUgbmV3IGtleSByYW5nZSB0byBpbmNsdWRlIGtl
eSBvZiBjdXJyZW50IGN1cnNvciByZWNvcmQgYW5kIGV4Y2x1ZGUgdmFsdWVzCisgICAgICAgIHZp
c2l0ZWQgYmVmb3JlLiBUbyBub3QgcmVncmVzcyBwcmVmb3JtYW5jZSwgd2UgY29tcGxldGUgdGhp
cyBieSBtYWtpbmcgYW4gZXh0cmEgc3RhdG1lbnQuCisKKyAgICAgICAgQWRkZWQgdGVzdCBjYXNl
IGluOiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFJbmRleFJlY29yZHNJbmRl
eFNjaGVtYSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OmJ1aWxkUHJlSW5kZXhTdGF0
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om9i
amVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2Fy
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmZldGNoTmV4
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6
aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQ3Vyc29yOjppc0RpcmVjdGlvbk5leHQgY29uc3QpOgorCiAyMDIwLTAyLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZWFj
aGFibGUgY29kZSBoaXQgaW4gV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGJmMzgyZTY0YWFlNjNmODU2MTY1MzE3ZTVkNjYw
ZGQ4OWE0ZGY0NjUuLjM0ZDllM2JlMDEyMjg3MzM2YTBlZDE1NGFiMTYxN2I4OTkxYjE1YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIAog
c3RhdGljIGNvbnN0IFN0cmluZyYgdjFJbmRleFJlY29yZHNJbmRleFNjaGVtYSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiBpbmRleFJlY29yZHNJbmRleFNjaGVt
YVN0cmluZygiQ1JFQVRFIElOREVYIEluZGV4UmVjb3Jkc0luZGV4IE9OIEluZGV4UmVjb3JkcyAo
a2V5KSIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5kZXhSZWNv
cmRzSW5kZXhTY2hlbWFTdHJpbmcoIkNSRUFURSBJTkRFWCBJbmRleFJlY29yZHNJbmRleCBPTiBJ
bmRleFJlY29yZHMgKGtleSwgdmFsdWUpIik7CiAgICAgcmV0dXJuIGluZGV4UmVjb3Jkc0luZGV4
U2NoZW1hU3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDIxZGZmODRmNzVm
YTRiNTk2NDU1YzZmZTZjNmQxNTUzYTgyOWY4YTAuLmIzNzcxNzM3NTc0ZTIyMzY2MTdkMjQ4N2M2
OTBlMTIwZWFkZDcwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0xMTYsNiArMTE2LDI1
IEBAIHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3Vs
dCwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0CiAgICAgcmVzdWx0ID0geyBjdXJyZW50UmVjb3Jk
LnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJlbnRSZWNv
cmQucmVjb3JkLnZhbHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURCVmFsdWUo
KSwga2V5UGF0aH07CiB9CiAKK3N0YXRpYyBTdHJpbmcgYnVpbGRQcmVJbmRleFN0YXRlbWVudChi
b29sIGlzRGlyZWN0aW9uTmV4dCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlNFTEVDVCByb3dpZCwga2V5LCB2YWx1ZSBGUk9NIElu
ZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIEFO
RCB2YWx1ZSAiKTsKKyAgICBpZiAoaXNEaXJlY3Rpb25OZXh0KQorICAgICAgICBidWlsZGVyLmFw
cGVuZCgnPicpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzwnKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSB2YWx1ZSIp
OworICAgIGlmICghaXNEaXJlY3Rpb25OZXh0KQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBERVNDIik7CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworCisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidWlsZEluZGV4U3RhdGVtZW50
KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGN1cnNvckRpcmVjdGlvbikKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0y
MTgsMjggKzIzNywxNCBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRz
Q2hhbmdlZCgpCiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSk7CiAKICAg
ICBtX2N1cnJlbnRLZXlGb3JVbmlxdWVuZXNzID0gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJl
Y29yZC5rZXk7Ci0KLSAgICBpZiAobV9jdXJzb3JEaXJlY3Rpb24gIT0gSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb246Ok5leHR1bmlxdWUgJiYgbV9jdXJzb3JEaXJlY3Rpb24gIT0gSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWUpIHsKLSAgICAgICAgaWYgKCFtX2ZldGNoZWRS
ZWNvcmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpCi0gICAgICAgICAgICBmZXRjaChTaG91
bGRGZXRjaEZvclNhbWVLZXk6Olllcyk7Ci0KLSAgICAgICAgd2hpbGUgKG1fZmV0Y2hlZFJlY29y
ZHMubGFzdCgpLnJlY29yZC5rZXkgIT0gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5r
ZXkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2ZldGNoZWRSZWNvcmRzU2l6ZSA+PSBtX2ZldGNo
ZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1fZmV0Y2hlZFJl
Y29yZHNTaXplIC09IG1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLnJlY29yZC5zaXplKCk7Ci0gICAg
ICAgICAgICBtX2ZldGNoZWRSZWNvcmRzLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKLSAgICAgICAgbV9mZXRj
aGVkUmVjb3Jkc1NpemUgPSAwOwotICAgIH0KKyAgICBpZiAobV9pbmRleElEICE9IElEQkluZGV4
SW5mbzo6SW52YWxpZElkKQorICAgICAgICBtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVlID0gbV9m
ZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogCiAgICAgLy8gSWYgT2Jq
ZWN0U3RvcmUgb3IgSW5kZXggY29udGVudHMgY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUg
c3RhdGVtZW50IGFuZCBiaW5kIG5ldyBwYXJhbWV0ZXJzIHRvIGl0LgogICAgIC8vIFRoaXMgaXMg
dG8gcGljayB1cCBhbnkgY2hhbmdlcyB0aGF0IG1pZ2h0IGV4aXN0LgotICAgIC8vIFdlIGFsc28g
bmVlZCB0byB0aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9u
Z2VyIGJlIHZhbGlkLgotCiAgICAgbV9zdGF0ZW1lbnROZWVkc1Jlc2V0ID0gdHJ1ZTsKIAotICAg
IGlmIChtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4
dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4
dHVuaXF1ZSkgeworICAgIGlmIChpc0RpcmVjdGlvbk5leHQoKSkgewogICAgICAgICBtX2N1cnJl
bnRMb3dlcktleSA9IG1fY3VycmVudEtleUZvclVuaXF1ZW5lc3M7CiAgICAgICAgIGlmICghbV9r
ZXlSYW5nZS5sb3dlck9wZW4pIHsKICAgICAgICAgICAgIG1fa2V5UmFuZ2UubG93ZXJPcGVuID0g
dHJ1ZTsKQEAgLTI1NCw2ICsyNTksMTAgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0
b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgICAgICAgICAgbV9zdGF0ZW1lbnQgPSBudWxscHRyOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgLy8gV2UgYWxzbyBuZWVkIHRvIHRocm93IGF3YXkgYW55
IGZldGNoZWQgcmVjb3JkcyBhcyB0aGV5IG1heSBubyBsb25nZXIgYmUgdmFsaWQuCisgICAgbV9m
ZXRjaGVkUmVjb3Jkcy5jbGVhcigpOworICAgIG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKIH0K
IAogdm9pZCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCkKQEAgLTMw
NCw2ICszMTMsNTIgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAg
IHJldHVybiB0cnVlOwogfQogCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pbmRleElEID09IElE
QkluZGV4SW5mbzo6SW52YWxpZElkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICht
X2N1cnJlbnRJbmRleFJlY29yZFZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGF1dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24o
KS0+ZGF0YWJhc2UoKTsKKyAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKKyAgICAgICAg
bV9wcmVJbmRleFN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYXRhYmFz
ZSwgYnVpbGRQcmVJbmRleFN0YXRlbWVudChpc0RpcmVjdGlvbk5leHQoKSkpOworCisgICAgICAg
IGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAg
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHByZSBzdGF0ZW1lbnQgLSAnJXMn
IiwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPnJlc2V0KCkg
IT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHJlc2V0IHByZSBz
dGF0ZW1lbnQgLSAnJXMnIiwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byBrZXkgPSBpc0RpcmVjdGlvbk5leHQoKSA/IG1f
Y3VycmVudExvd2VyS2V5IDogbV9jdXJyZW50VXBwZXJLZXk7CisgICAgaW50IGN1cnJlbnRCaW5k
QXJndW1lbnQgPSAxOworCisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRJbnQ2NChj
dXJyZW50QmluZEFyZ3VtZW50KyssIG1fYm91bmRJRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAo
Ym91bmQgSUQpIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgaWYg
KG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkp
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKG1fY3VycmVudEluZGV4UmVjb3JkVmFsdWUpOworICAgIGlmIChtX3ByZUlu
ZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAodmFsdWUpIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FM
aXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpIC0gQ3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVk
IHJlY29yZHMiLCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CkBAIC0zNzQsMTMgKzQyOSwxMyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3VudCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBTUUxpdGVJREJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9y
U2FtZUtleSBzaG91bGRGZXRjaEZvclNhbWVLZXkpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZmV0
Y2goKQogewogICAgIEFTU0VSVChtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSB8fCAhbV9mZXRj
aGVkUmVjb3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKTsKIAogICAgIG1fZmV0Y2hlZFJl
Y29yZHMuYXBwZW5kKHsgfSk7CiAKLSAgICBib29sIGlzVW5pcXVlID0gbV9jdXJzb3JEaXJlY3Rp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUgfHwgbV9jdXJzb3JE
aXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWUgfHwgc2hv
dWxkRmV0Y2hGb3JTYW1lS2V5ID09IFNob3VsZEZldGNoRm9yU2FtZUtleTo6WWVzOworICAgIGJv
b2wgaXNVbmlxdWUgPSBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbjo6TmV4dHVuaXF1ZSB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbjo6UHJldnVuaXF1ZTsKICAgICBpZiAoIWlzVW5pcXVlKSB7CiAgICAgICAgIGJv
b2wgZmV0Y2hTdWNjZWVkZWQgPSBmZXRjaE5leHRSZWNvcmQobV9mZXRjaGVkUmVjb3Jkcy5sYXN0
KCkpOwogICAgICAgICBpZiAoZmV0Y2hTdWNjZWVkZWQpCkBAIC0zOTcsOCArNDUyLDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSBzaG91bGRGZXRj
aEZvclNhbWVLZXkpCiAgICAgICAgIGlmIChtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5jb21wbGV0
ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHNob3VsZEZldGNo
Rm9yU2FtZUtleSA9PSBTaG91bGRGZXRjaEZvclNhbWVLZXk6OlllcykKLSAgICAgICAgICAgIG1f
ZmV0Y2hlZFJlY29yZHMuYXBwZW5kKHsgfSk7CisgICAgICAgIG1fZmV0Y2hlZFJlY29yZHNTaXpl
IC09IG1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLnJlY29yZC5zaXplKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDA2LDggKzQ2MCwxMCBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6
ZmV0Y2goU2hvdWxkRmV0Y2hGb3JTYW1lS2V5IHNob3VsZEZldGNoRm9yU2FtZUtleSkKIAogYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzb3JSZWNvcmQmIHJl
Y29yZCkKIHsKLSAgICBpZiAobV9zdGF0ZW1lbnROZWVkc1Jlc2V0KQorICAgIGlmIChtX3N0YXRl
bWVudE5lZWRzUmVzZXQpIHsKKyAgICAgICAgcmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVu
dElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCk7CisgICAg
fQogCiAgICAgRmV0Y2hSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKQEAgLTQzNCwyNiArNDkwLDQw
IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5h
bEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAKICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0g
bnVsbHB0cjsKIAotICAgIGludCByZXN1bHQgPSBtX3N0YXRlbWVudC0+c3RlcCgpOwotICAgIGlm
IChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgLy8gV2hlbiBhIGN1cnNvciByZWFj
aGVzIGl0cyBlbmQsIHRoYXQgaXMgaW5kaWNhdGVkIGJ5IGhhdmluZyB1bmRlZmluZWQga2V5cy92
YWx1ZXMKLSAgICAgICAgcmVjb3JkID0geyB9OwotICAgICAgICByZWNvcmQuY29tcGxldGVkID0g
dHJ1ZTsKKyAgICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0
aW9uKCktPmRhdGFiYXNlKCk7CisgICAgU1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQgPSBudWxs
cHRyOwogCi0gICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6U3VjY2VzczsKLSAgICB9CisgICAg
aW50IHJlc3VsdDsKKyAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudCkgeworICAgICAgICBBU1NF
UlQobV9pbmRleElEICE9IElEQkluZGV4SW5mbzo6SW52YWxpZElkKTsKIAotICAgIGlmIChyZXN1
bHQgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBMT0dfRVJST1IoIkVycm9yIGFkdmFuY2luZyBj
dXJzb3IgLSAoJWkpICVzIiwgcmVzdWx0LCBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlv
bigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgbWFya0FzRXJyb3JlZChy
ZWNvcmQpOwotICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CisgICAgICAgIHJl
c3VsdCA9IG1fcHJlSW5kZXhTdGF0ZW1lbnQtPnN0ZXAoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PSBTUUxJVEVfUk9XKQorICAgICAgICAgICAgc3RhdGVtZW50ID0gbV9wcmVJbmRleFN0YXRlbWVu
dC5nZXQoKTsKKyAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQorICAgICAg
ICAgICAgTE9HX0VSUk9SKCJFcnJvciBhZHZhbmNpbmcgd2l0aCBwcmUgc3RhdGVtZW50IC0gKCVp
KSAlcyIsIHJlc3VsdCwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIH0KKyAgICAKKyAg
ICBpZiAoIXN0YXRlbWVudCkgeworICAgICAgICByZXN1bHQgPSBtX3N0YXRlbWVudC0+c3RlcCgp
OworICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICByZWNv
cmQgPSB7IH07CisgICAgICAgICAgICByZWNvcmQuY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHJldHVybiBGZXRjaFJlc3VsdDo6U3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBpZiAo
cmVzdWx0ICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2
YW5jaW5nIGN1cnNvciAtICglaSkgJXMiLCByZXN1bHQsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgICAgIG1hcmtBc0Vycm9yZWQocmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVy
biBGZXRjaFJlc3VsdDo6RmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZW1lbnQgPSBt
X3N0YXRlbWVudC5nZXQoKTsKICAgICB9CiAKLSAgICByZWNvcmQucm93SUQgPSBtX3N0YXRlbWVu
dC0+Z2V0Q29sdW1uSW50NjQoMCk7CisgICAgcmVjb3JkLnJvd0lEID0gc3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQ2NCgwKTsKICAgICBBU1NFUlQocmVjb3JkLnJvd0lEKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBrZXlEYXRhOwotICAgIG1fc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
MSwga2V5RGF0YSk7CisgICAgc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwga2V5
RGF0YSk7CiAKICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwg
a2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQua2V5KSkgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFu
Y2luZyBjdXJzb3IiKTsKQEAgLTQ2MSw3ICs1MzEsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNo
UmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3Vy
cwogICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CiAgICAgfQogCi0gICAgbV9z
dGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlEYXRhKTsKKyAgICBzdGF0ZW1l
bnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlEYXRhKTsKIAogICAgIC8vIFRoZSBwcmlt
YXJ5S2V5IG9mIGFuIE9iamVjdFN0b3JlIGN1cnNvciBpcyB0aGUgc2FtZSBhcyBpdHMga2V5Lgog
ICAgIGlmIChtX2luZGV4SUQgPT0gSURCSW5kZXhJbmZvOjpJbnZhbGlkSWQpIHsKQEAgLTQ4NSw3
ICs1NTUsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6
aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50IHx8IG1fY2FjaGVkT2JqZWN0U3RvcmVT
dGF0ZW1lbnQtPnJlc2V0KCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAgICBtX2NhY2hlZE9i
amVjdFN0b3JlU3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fc3RhdGVt
ZW50LT5kYXRhYmFzZSgpLCAiU0VMRUNUIHZhbHVlIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSBD
QVNUKD8gQVMgVEVYVCkgYW5kIG9iamVjdFN0b3JlSUQgPSA/OyIpOworICAgICAgICAgICAgbV9j
YWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50Pihk
YXRhYmFzZSwgIlNFTEVDVCB2YWx1ZSBGUk9NIFJlY29yZHMgV0hFUkUga2V5ID0gQ0FTVCg/IEFT
IFRFWFQpIGFuZCBvYmplY3RTdG9yZUlEID0gPzsiKTsKICAgICAgICAgICAgIGlmIChtX2NhY2hl
ZE9iamVjdFN0b3JlU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAg
ICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQgPSBudWxscHRyOwogICAgICAgICB9
CkBAIC00OTMsNyArNTYzLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgaWYg
KCFtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50CiAgICAgICAgICAgICB8fCBtX2NhY2hlZE9i
amVjdFN0b3JlU3RhdGVtZW50LT5iaW5kQmxvYigxLCBrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5z
aXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgbV9jYWNoZWRPYmplY3RTdG9yZVN0
YXRlbWVudC0+YmluZEludDY0KDIsIG1fb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIHN0YXRl
bWVudCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIG1fc3RhdGVtZW50LT5k
YXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vy
c29yIHN0YXRlbWVudCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIGRhdGFi
YXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBt
YXJrQXNFcnJvcmVkKHJlY29yZCk7CiAgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZh
aWx1cmU7CiAgICAgICAgIH0KQEAgLTUwOCw3ICs1NzgsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZl
dGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRl
Q3VycwogICAgICAgICAgICAgLy8gU2tpcCBvdmVyIGl0LgogICAgICAgICAgICAgcmV0dXJuIEZl
dGNoUmVzdWx0OjpTaG91bGRGZXRjaEFnYWluOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qgc3RlcCBpbmRleCBjdXJzb3Igc3RhdGVtZW50IGludG8g
b2JqZWN0IHN0b3JlIHJlY29yZHMgKCVpKSAnJXMnIiwgbV9zdGF0ZW1lbnQtPmRhdGFiYXNlKCku
bGFzdEVycm9yKCksIG1fc3RhdGVtZW50LT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHN0ZXAgaW5kZXggY3Vyc29yIHN0YXRlbWVu
dCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBtYXJrQXNFcnJvcmVk
KHJlY29yZCk7CiAgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaAppbmRleCAzNTQ2ODRlYjk1YWFiNTljMzE2OTMzNjA3OGFkN2NiYTFkMjA5
N2Y4Li5kODFkZmI1YzNkOTUxMTBiYTNjMmQxZTkzYjY2MzEyYzAyZDM2MjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5oCkBAIC00NCw4ICs0NCw2IEBAIGNsYXNzIElEQkdldFJlc3VsdDsKIAogbmFtZXNw
YWNlIElEQlNlcnZlciB7CiAKLWVudW0gY2xhc3MgU2hvdWxkRmV0Y2hGb3JTYW1lS2V5IDogYm9v
bCB7IE5vLCBZZXMgfTsKLQogY2xhc3MgU1FMaXRlSURCVHJhbnNhY3Rpb247CiAKIGNsYXNzIFNR
TGl0ZUlEQkN1cnNvciB7CkBAIC04Niw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjcmVh
dGVTUUxpdGVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpOwogICAgIGJvb2wgYmluZEFyZ3Vt
ZW50cygpOwogCisgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNl
c3NhcnkoKTsKICAgICB2b2lkIHJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCk7CiAKICAgICBlbnVt
IGNsYXNzIEZldGNoUmVzdWx0IHsKQEAgLTk0LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
U2hvdWxkRmV0Y2hBZ2FpbgogICAgIH07CiAKLSAgICBib29sIGZldGNoKFNob3VsZEZldGNoRm9y
U2FtZUtleSA9IFNob3VsZEZldGNoRm9yU2FtZUtleTo6Tm8pOworICAgIGJvb2wgZmV0Y2goKTsK
IAogICAgIHN0cnVjdCBTUUxpdGVDdXJzb3JSZWNvcmQgewogICAgICAgICBJREJDdXJzb3JSZWNv
cmQgcmVjb3JkOwpAQCAtMTA4LDYgKzEwNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1hcmtB
c0Vycm9yZWQoU1FMaXRlQ3Vyc29yUmVjb3JkJik7CiAKKyAgICBib29sIGlzRGlyZWN0aW9uTmV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uOjpOZXh0IHx8IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uOjpOZXh0dW5pcXVlOyB9CisKICAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogbV90
cmFuc2FjdGlvbjsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9jdXJzb3JJZGVudGlmaWVy
OwogICAgIGludDY0X3QgbV9vYmplY3RTdG9yZUlEOwpAQCAtMTE4LDExICsxMTksMTMgQEAgcHJp
dmF0ZToKIAogICAgIElEQktleURhdGEgbV9jdXJyZW50TG93ZXJLZXk7CiAgICAgSURCS2V5RGF0
YSBtX2N1cnJlbnRVcHBlcktleTsKKyAgICBJREJLZXlEYXRhIG1fY3VycmVudEluZGV4UmVjb3Jk
VmFsdWU7CiAKICAgICBEZXF1ZTxTUUxpdGVDdXJzb3JSZWNvcmQ+IG1fZmV0Y2hlZFJlY29yZHM7
CiAgICAgdWludDY0X3QgbV9mZXRjaGVkUmVjb3Jkc1NpemUgeyAwIH07CiAgICAgSURCS2V5RGF0
YSBtX2N1cnJlbnRLZXlGb3JVbmlxdWVuZXNzOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0
ZVN0YXRlbWVudD4gbV9wcmVJbmRleFN0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FM
aXRlU3RhdGVtZW50PiBtX3N0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3Rh
dGVtZW50PiBtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50OwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkyYWNjNGE3
Mzc5ZWU2ODU5ZjQ2ZjU5ZTBjYjM2YTFjYzRjYzk0ZS4uZjE1Mjg3NjgwZmM5YTlkZWY5YjNhNTZj
ZmRmM2JhMjUwZmNkOGI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qczoKKyAg
ICAgICAgKHBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAob25PcGVuU3VjY2Vzcy5yZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvbk9wZW5TdWNjZXNzKToKKyAgICAgICAgKHByZXBh
cmVEYXRhYmFzZSk6IERlbGV0ZWQuCisKIDIwMjAtMDItMTAgIFRydWl0dCBTYXZlbGwgIDx0c2F2
ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIFdpbiBdIGFuaW1hdGlvbnMv
c3RhY2tpbmctY29udGV4dC1ub3QtZmlsbC1mb3J3YXJkcy5odG1sIGlzIGZhaWxpbmcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hpbGUt
aXRlcmF0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLWV4cGVjdGVkLnR4dAppbmRleCBhOGE5NmU5MmVk
ZjY0MGRjMjA0ZDEzNTJlMWVlNDhkYTliN2E4MmQ3Li4wNjBkYWJiZDgzM2FlMTAwZjNhNTBmYmMw
MGQ2ZjgxMzA5MjIwNzI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhw
ZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSw3IEBAIGluZGV4ZWREQi5vcGVuKGRibmFtZSkKIHByZXBh
cmVEYXRhYmFzZSgpOgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiBEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgotb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3Rv
cmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdvYmplY3RTdG9yZScpCiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgna2V5JywgJ2tl
eScsIHt1bmlxdWU6IGZhbHNlfSkKIAogb25PcGVuU3VjY2VzcygpOgpAQCAtNDAsNyArNDAsMTEg
QEAgUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzICJ7XCJrZXlcIjpcImtleTJc
IixcInZhbHVlXCI6XCJ2YWx1ZTRcIn0iCiBEZWxldGUgY3Vyc29yCiBDdXJzb3IgY29udGludWVz
CiAKLVBBU1MgU3VjY2Vzc2Z1bGx5IGl0ZXJhdGVkIHdob2xlIGFycmF5IHdpdGggY3Vyc29yIHVw
ZGF0ZXMuCitQQVNTIEpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkgaXMgIntcImtleVwiOlwi
a2V5M1wiLFwidmFsdWVcIjpcInZhbHVlNVwifSIKK0RlbGV0ZSBsYXN0IHJlY29yZAorQ3Vyc29y
IGNvbnRpbnVlcworCitQQVNTIHRvdGFsUmVjb3JkQ291bnQgaXMgNgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRp
bmcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS13aGlsZS1pdGVyYXRpbmcuanMKaW5kZXggNDhiZDkwYjAwMGU0ZTgzNjdmMTFlNmEwODA5
YmVkYmU4Y2E1NTM0ZC4uZmQ4NGMyY2RhNThiNjg1NTVlMGM4OTE0NDQxYTU3YjQwNThkYWYzYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qcwpAQCAtMTIs
MTIgKzEyLDE1IEBAIGNvbnN0IG9iamVjdEFycmF5ID0gWwogICAgIHsga2V5OiAia2V5MSIsIHZh
bHVlOiAidmFsdWUxIiB9LAogICAgIHsga2V5OiAia2V5MSIsIHZhbHVlOiAidmFsdWUzIiB9LAog
ICAgIHsga2V5OiAia2V5MiIsIHZhbHVlOiAidmFsdWUyIiB9LAotICAgIHsga2V5OiAia2V5MiIs
IHZhbHVlOiAidmFsdWU0IiB9CisgICAgeyBrZXk6ICJrZXkyIiwgdmFsdWU6ICJ2YWx1ZTQiIH0s
CisJeyBrZXk6ICJrZXkzIiwgdmFsdWU6ICJ2YWx1ZTUiIH0sCisJeyBrZXk6ICJrZXkzIiwgdmFs
dWU6ICJ2YWx1ZTYiIH0sCiBdOwogCiBmdW5jdGlvbiBwb3B1bGF0ZU9iamVjdFN0b3JlKCkgewot
ICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmplY3RBcnJheSkKLSAgICAgICAgb2JqZWN0U3RvcmUu
YWRkKG9iamVjdCkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9iamVj
dEFycmF5LmZvckVhY2goKG9iamVjdCwgaSk9PnsKKwkJb2JqZWN0U3RvcmUuYWRkKG9iamVjdCwg
aSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCX0pOwogfQogCiBmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoZXZlbnQpCkBAIC0yNiw3ICsyOSw3IEBAIGZ1bmN0aW9uIHByZXBh
cmVEYXRhYmFzZShldmVudCkKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RT
dG9yZScsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJyki
KTsKICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgna2V5JywgJ2tleScs
IHt1bmlxdWU6IGZhbHNlfSkiKTsKIAogICAgIHBvcHVsYXRlT2JqZWN0U3RvcmUoKTsKQEAgLTQz
LDI4ICs0NiwzMCBAQCBmdW5jdGlvbiBvbk9wZW5TdWNjZXNzKGV2ZW50KQogICAgIGV2YWxBbmRM
b2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2tleScpIik7CiAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4Lm9wZW5DdXJzb3IoKSIpOwogCi0gICAgdmFyIG4gPSAwOworICAgIHRv
dGFsUmVjb3JkQ291bnQgPSAwOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgaWYg
KGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmlu
Z2lmeShjdXJzb3IudmFsdWUpIiwgSlNPTi5zdHJpbmdpZnkob2JqZWN0QXJyYXlbbisrXSkpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3Iu
dmFsdWUpIiwgSlNPTi5zdHJpbmdpZnkob2JqZWN0QXJyYXlbdG90YWxSZWNvcmRDb3VudCsrXSkp
OwogCiAgICAgICAgICAgICBpZiAoY3Vyc29yLmtleSA9PSAia2V5MSIpIHsKICAgICAgICAgICAg
ICAgICBkZWJ1ZygiVXBkYXRlIGN1cnNvciIpOwogICAgICAgICAgICAgICAgIGNvbnN0IHt2YWx1
ZX0gPSBjdXJzb3I7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZSh2YWx1ZSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN1cnNvci5r
ZXkgPT0gImtleTIiKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoIkRlbGV0ZSBjdXJzb3IiKTsK
ICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY3Vyc29yLmtleSA9PSAia2V5MyIpIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
RGVsZXRlIGxhc3QgcmVjb3JkIik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRl
KDYpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWJ1ZygiQ3Vyc29yIGNvbnRpbnVl
c1xuIik7CiAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChuICE9IG9iamVjdEFycmF5Lmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJDdXJzb3IgZGlkbid0IGdvIHRocm91Z2ggd2hvbGUgYXJyYXkuIik7Ci0g
ICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxs
eSBpdGVyYXRlZCB3aG9sZSBhcnJheSB3aXRoIGN1cnNvciB1cGRhdGVzLiIpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvTnVtYmVyKCJ0b3RhbFJlY29yZENvdW50Iiwgb2JqZWN0QXJyYXku
bGVuZ3RoIC0gMSk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390440</attachid>
            <date>2020-02-11 14:53:30 -0800</date>
            <delta_ts>2020-02-11 16:46:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207437-20200211145330.patch</filename>
            <type>text/plain</type>
            <size>24933</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY0NTc3YzA0MTUwZDBm
M2E3NDIxNDFhNzdkNjRhZDkxZDcxNDY4MS4uNmQ1ZTVkNTc4MjJjMWNjMTU1OTgxYWMxMmZmYzBm
NDZkMWRmNmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTAyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byBy
ZWNvcmRzLCBjdXJzb3JzIHdpbGwgZHVtcCBjYWNoZWQgcmVjb3JkcyBhbmQgc2V0IG5ldyBrZXkg
cmFuZ2UgZm9yIGl0ZXJhdGlvbi4KKyAgICAgICAgVGhlIG5ldyByYW5nZSBkaWQgbm90IGluY2x1
ZGUga2V5IG9mIGN1cnJlbnQgY3Vyc29yIHJlY29yZCwgd2hpY2ggaXMgd3JvbmcgYmVjYXVzZSB0
d28gaW5kZXggcmVjb3JkcyBjYW4gaGF2ZSAKKyAgICAgICAgdGhlIHNhbWUga2V5IGJ1dCBkaWZm
ZXJlbnQgdmFsdWVzLgorICAgICAgICByMjM3NTkwIHRyaWVkIGZpeGluZyB0aGlzIGlzc3VlIGJ5
IGNhY2hpbmcgYWxsIHRoZSBmb2xsb3dpbmcgcmVjb3JkcyB3aGljaCBoYXZlIHRoZSBzYW1lIGtl
eSBhcyBjdXJyZW50IHJlY29yZC4KKyAgICAgICAgVGhhdCBpcyBub3QgcXVpdGUgcmlnaHQgYXMg
dGhlcmUgY291bGQgYmUgY2hhbmdlcyBvbiB0aGUgY2FjaGVkIHJlY29yZHMsIGFuZCB0aGUgY2Fj
aGVkIHJlY29yZHMgd2VyZSBub3QgCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgVG8gY29y
cmVjdGx5IGZpeCB0aGUgaXNzdWUsIHNldCB0aGUgbmV3IGtleSByYW5nZSB0byBpbmNsdWRlIGtl
eSBvZiBjdXJyZW50IGN1cnNvciByZWNvcmQgYW5kIGV4Y2x1ZGUgdmFsdWVzCisgICAgICAgIHZp
c2l0ZWQgYmVmb3JlLiBUbyBub3QgcmVncmVzcyBwcmVmb3JtYW5jZSwgd2UgY29tcGxldGUgdGhp
cyBieSBtYWtpbmcgYW4gZXh0cmEgc3RhdG1lbnQgYW5kIGNoYW5naW5nCisgICAgICAgIEluZGV4
UmVjb3Jkc0luZGV4IGluZGV4IG9mIHRhYmxlIEluZGV4UmVjb3JkcyB0byBjb3ZlciB2YWx1ZSBj
b2x1bW4uCisKKyAgICAgICAgQWRkZWQgdGVzdCBjYXNlIGluOiBzdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5odG1sCisgICAgICAgIEluZGV4IHVwZ3JhZGUg
Y292ZXJlZCBieSBleGlzdGluZyBBUEkgdGVzdDogSW5kZXhlZERCLklEQk9iamVjdFN0b3JlSW5m
b1VwZ3JhZGVUb1YyCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6YnVpbGRQcmVJbmRleFN0YXRlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2hOZXh0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJl
Y29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmlzRGly
ZWN0aW9uTmV4dCBjb25zdCk6CisKKzIwMjAtMDItMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZERCOiBpdGVyYXRpb24gb2YgY3Vyc29ycyBza2lw
IHJlY29yZHMgaWYgZGVsZXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHJlY29yZHMsIGN1cnNvcnMgd2ls
bCBkdW1wIGNhY2hlZCByZWNvcmRzIGFuZCBzZXQgbmV3IGtleSByYW5nZSBmb3IgaXRlcmF0aW9u
LgorICAgICAgICBUaGUgbmV3IHJhbmdlIGRpZCBub3QgaW5jbHVkZSBrZXkgb2YgY3VycmVudCBj
dXJzb3IgcmVjb3JkLCB3aGljaCBpcyB3cm9uZyBiZWNhdXNlIHR3byBpbmRleCByZWNvcmRzIGNh
biBoYXZlIAorICAgICAgICB0aGUgc2FtZSBrZXkgYnV0IGRpZmZlcmVudCB2YWx1ZXMuCisgICAg
ICAgIHIyMzc1OTAgdHJpZWQgZml4aW5nIHRoaXMgaXNzdWUgYnkgY2FjaGluZyBhbGwgdGhlIGZv
bGxvd2luZyByZWNvcmRzIHdoaWNoIGhhdmUgdGhlIHNhbWUga2V5IGFzIGN1cnJlbnQgcmVjb3Jk
LgorICAgICAgICBUaGF0IGlzIG5vdCBxdWl0ZSByaWdodCBhcyB0aGVyZSBjb3VsZCBiZSBjaGFu
Z2VzIG9uIHRoZSBjYWNoZWQgcmVjb3JkcywgYW5kIHRoZSBjYWNoZWQgcmVjb3JkcyB3ZXJlIG5v
dCAKKyAgICAgICAgdXBkYXRlZC4KKworICAgICAgICBUbyBjb3JyZWN0bHkgZml4IHRoZSBpc3N1
ZSwgc2V0IHRoZSBuZXcga2V5IHJhbmdlIHRvIGluY2x1ZGUga2V5IG9mIGN1cnJlbnQgY3Vyc29y
IHJlY29yZCBhbmQgZXhjbHVkZSB2YWx1ZXMKKyAgICAgICAgdmlzaXRlZCBiZWZvcmUuIFRvIG5v
dCByZWdyZXNzIHByZWZvcm1hbmNlLCB3ZSBjb21wbGV0ZSB0aGlzIGJ5IG1ha2luZyBhbiBleHRy
YSBzdGF0bWVudC4KKworICAgICAgICBBZGRlZCB0ZXN0IGNhc2UgaW46IHN0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjp2MUluZGV4UmVjb3Jkc0luZGV4U2NoZW1hKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6YnVpbGRQcmVJbmRleFN0YXRlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpmZXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2hOZXh0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJl
Y29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmlzRGly
ZWN0aW9uTmV4dCBjb25zdCk6CisKIDIwMjAtMDItMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJlYWNoYWJsZSBjb2RlIGhpdCBpbiBX
ZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggYmYzODJlNjRhYWU2M2Y4NTYxNjUzMTdlNWQ2NjBkZDg5YTRkZjQ2NS4uM2ZhMTAy
ZGI2NTkyODBkN2Q2YTA1MGNlMWVhN2ZjNDA4MDJiZmRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgY29uc3RleHByIGF1dG8gb2JqZWN0U3Rv
cmVJbmZvVGFibGVOYW1lID0gIk9iamVjdFN0b3JlSW5mbyJfczsKIGNvbnN0ZXhwciBhdXRvIG9i
amVjdFN0b3JlSW5mb1RhYmxlTmFtZUFsdGVybmF0ZSA9ICJcIk9iamVjdFN0b3JlSW5mb1wiIl9z
OwogY29uc3RleHByIGF1dG8gdjJPYmplY3RTdG9yZUluZm9TY2hlbWEgPSAiQ1JFQVRFIFRBQkxF
IE9iamVjdFN0b3JlSW5mbyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBuYW1lIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwga2V5UGF0aCBCTE9CIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwsIGF1dG9JbmMgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSJfczsKIGNvbnN0ZXhwciBhdXRvIHYxSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXhTY2hl
bWEgPSAiQ1JFQVRFIElOREVYIEluZGV4UmVjb3Jkc1JlY29yZEluZGV4IE9OIEluZGV4UmVjb3Jk
cyAob2JqZWN0U3RvcmVJRCwgb2JqZWN0U3RvcmVSZWNvcmRJRCkiX3M7Citjb25zdGV4cHIgYXV0
byB2MkluZGV4UmVjb3Jkc0luZGV4U2NoZW1hID0gIkNSRUFURSBJTkRFWCBJbmRleFJlY29yZHNJ
bmRleCBPTiBJbmRleFJlY29yZHMgKGtleSwgdmFsdWUpIl9zOwogCiAvLyBDdXJyZW50IHZlcnNp
b24gb2YgdGhlIG1ldGFkYXRhIHNjaGVtYSBiZWluZyB1c2VkIGluIHRoZSBtZXRhZGF0YSBkYXRh
YmFzZS4KIHN0YXRpYyBjb25zdCBpbnQgY3VycmVudE1ldGFkYXRhVmVyc2lvbiA9IDE7CkBAIC01
MTQsNyArNTE1LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgoKQogCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIEluZGV4UmVjb3Jk
c0luZGV4IGluZGV4IGF0IGFsbCwgY3JlYXRlIGl0IGFuZCB0aGVuIGJhaWwuCiAgICAgICAgIGlm
IChzcWxpdGVSZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIGlmICghbV9zcWxp
dGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjFJbmRleFJlY29yZHNJbmRleFNjaGVtYSgpKSkgeworICAg
ICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2MkluZGV4UmVjb3Jkc0lu
ZGV4U2NoZW1hKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBJbmRleFJlY29yZHNJbmRleCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTUzMywxMSArNTM0LDI3IEBA
IGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4
KCkKICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0eSgpKTsKIAogICAgIC8vIElmIHRo
ZSBzY2hlbWEgaW4gdGhlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIGN1cnJlbnQgc2NoZW1hLCB3ZSdy
ZSBkb25lLgotICAgIGlmIChjdXJyZW50U2NoZW1hID09IHYxSW5kZXhSZWNvcmRzSW5kZXhTY2hl
bWEoKSkKKyAgICBpZiAoY3VycmVudFNjaGVtYSA9PSB2MkluZGV4UmVjb3Jkc0luZGV4U2NoZW1h
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBv
dXRkYXRlZCBzY2hlbWEgZm9yIHRoZSBJbmRleFJlY29yZHNJbmRleCwgc28gYW55IG90aGVyIGV4
aXN0aW5nIHNjaGVtYSBtZWFucyB0aGlzIGRhdGFiYXNlIGlzIGludmFsaWQuCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRTY2hlbWEgPT0gdjFJbmRleFJlY29y
ZHNJbmRleFNjaGVtYSgpKTsKKworICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCpt
X3NxbGl0ZURCKTsKKyAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworCisgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBJTkRFWCBJbmRleFJlY29yZHNJbmRleCIpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgaW5kZXggSW5kZXhSZWNvcmRzSW5kZXgg
aW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRl
REItPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjJJbmRleFJlY29yZHNJbmRleFNjaGVt
YSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEluZGV4UmVjb3Jkc0lu
ZGV4IGluZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigp
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKKworICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNSZWNv
cmRJbmRleCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDIxZGZmODRmNzVmYTRiNTk2NDU1
YzZmZTZjNmQxNTUzYTgyOWY4YTAuLmIzNzcxNzM3NTc0ZTIyMzY2MTdkMjQ4N2M2OTBlMTIwZWFk
ZDcwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0xMTYsNiArMTE2LDI1IEBAIHZvaWQg
U1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwgY29uc3Qg
T3B0aW9uYWw8SURCS2V5UGF0CiAgICAgcmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJlY29yZC5r
ZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJlbnRSZWNvcmQucmVjb3Jk
LnZhbHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURCVmFsdWUoKSwga2V5UGF0
aH07CiB9CiAKK3N0YXRpYyBTdHJpbmcgYnVpbGRQcmVJbmRleFN0YXRlbWVudChib29sIGlzRGly
ZWN0aW9uTmV4dCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIlNFTEVDVCByb3dpZCwga2V5LCB2YWx1ZSBGUk9NIEluZGV4UmVjb3Jk
cyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIEFORCB2YWx1ZSAi
KTsKKyAgICBpZiAoaXNEaXJlY3Rpb25OZXh0KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnPicp
OworICAgIGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzwnKTsKKworICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSB2YWx1ZSIpOworICAgIGlm
ICghaXNEaXJlY3Rpb25OZXh0KQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVND
Iik7CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOycpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidWlsZEluZGV4U3RhdGVtZW50KGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1cnNv
ckRpcmVjdGlvbikKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0yMTgsMjggKzIz
NywxNCBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgp
CiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSk7CiAKICAgICBtX2N1cnJl
bnRLZXlGb3JVbmlxdWVuZXNzID0gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5rZXk7
Ci0KLSAgICBpZiAobV9jdXJzb3JEaXJlY3Rpb24gIT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHR1bmlxdWUgJiYgbV9jdXJzb3JEaXJlY3Rpb24gIT0gSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb246OlByZXZ1bmlxdWUpIHsKLSAgICAgICAgaWYgKCFtX2ZldGNoZWRSZWNvcmRzLmxh
c3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpCi0gICAgICAgICAgICBmZXRjaChTaG91bGRGZXRjaEZv
clNhbWVLZXk6Olllcyk7Ci0KLSAgICAgICAgd2hpbGUgKG1fZmV0Y2hlZFJlY29yZHMubGFzdCgp
LnJlY29yZC5rZXkgIT0gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5rZXkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2ZldGNoZWRSZWNvcmRzU2l6ZSA+PSBtX2ZldGNoZWRSZWNvcmRz
Lmxhc3QoKS5yZWNvcmQuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1fZmV0Y2hlZFJlY29yZHNTaXpl
IC09IG1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLnJlY29yZC5zaXplKCk7Ci0gICAgICAgICAgICBt
X2ZldGNoZWRSZWNvcmRzLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKLSAgICAgICAgbV9mZXRjaGVkUmVjb3Jk
c1NpemUgPSAwOwotICAgIH0KKyAgICBpZiAobV9pbmRleElEICE9IElEQkluZGV4SW5mbzo6SW52
YWxpZElkKQorICAgICAgICBtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVlID0gbV9mZXRjaGVkUmVj
b3Jkcy5maXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogCiAgICAgLy8gSWYgT2JqZWN0U3RvcmUg
b3IgSW5kZXggY29udGVudHMgY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUgc3RhdGVtZW50
IGFuZCBiaW5kIG5ldyBwYXJhbWV0ZXJzIHRvIGl0LgogICAgIC8vIFRoaXMgaXMgdG8gcGljayB1
cCBhbnkgY2hhbmdlcyB0aGF0IG1pZ2h0IGV4aXN0LgotICAgIC8vIFdlIGFsc28gbmVlZCB0byB0
aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2VyIGJlIHZh
bGlkLgotCiAgICAgbV9zdGF0ZW1lbnROZWVkc1Jlc2V0ID0gdHJ1ZTsKIAotICAgIGlmIChtX2N1
cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1
cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZSkg
eworICAgIGlmIChpc0RpcmVjdGlvbk5leHQoKSkgewogICAgICAgICBtX2N1cnJlbnRMb3dlcktl
eSA9IG1fY3VycmVudEtleUZvclVuaXF1ZW5lc3M7CiAgICAgICAgIGlmICghbV9rZXlSYW5nZS5s
b3dlck9wZW4pIHsKICAgICAgICAgICAgIG1fa2V5UmFuZ2UubG93ZXJPcGVuID0gdHJ1ZTsKQEAg
LTI1NCw2ICsyNTksMTAgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jk
c0NoYW5nZWQoKQogICAgICAgICAgICAgbV9zdGF0ZW1lbnQgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgfQorCisgICAgLy8gV2UgYWxzbyBuZWVkIHRvIHRocm93IGF3YXkgYW55IGZldGNoZWQg
cmVjb3JkcyBhcyB0aGV5IG1heSBubyBsb25nZXIgYmUgdmFsaWQuCisgICAgbV9mZXRjaGVkUmVj
b3Jkcy5jbGVhcigpOworICAgIG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKIH0KIAogdm9pZCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCkKQEAgLTMwNCw2ICszMTMs
NTIgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0
YXRlbWVudElmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pbmRleElEID09IElEQkluZGV4SW5m
bzo6SW52YWxpZElkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2N1cnJlbnRJ
bmRleFJlY29yZFZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1
dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJh
c2UoKTsKKyAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKKyAgICAgICAgbV9wcmVJbmRl
eFN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYXRhYmFzZSwgYnVpbGRQ
cmVJbmRleFN0YXRlbWVudChpc0RpcmVjdGlvbk5leHQoKSkpOworCisgICAgICAgIGlmIChtX3By
ZUluZGV4U3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHByZSBzdGF0ZW1lbnQgLSAnJXMnIiwgZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPnJlc2V0KCkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHJlc2V0IHByZSBzdGF0ZW1lbnQg
LSAnJXMnIiwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgYXV0byBrZXkgPSBpc0RpcmVjdGlvbk5leHQoKSA/IG1fY3VycmVudExv
d2VyS2V5IDogbV9jdXJyZW50VXBwZXJLZXk7CisgICAgaW50IGN1cnJlbnRCaW5kQXJndW1lbnQg
PSAxOworCisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRJbnQ2NChjdXJyZW50Qmlu
ZEFyZ3VtZW50KyssIG1fYm91bmRJRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoYm91bmQgSUQp
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgaWYgKG1fcHJlSW5k
ZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKG1fY3VycmVudEluZGV4UmVjb3JkVmFsdWUpOworICAgIGlmIChtX3ByZUluZGV4U3RhdGVt
ZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssIGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAodmFsdWUpIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OnByZWZldGNoKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vy
c29yOjpwcmVmZXRjaCgpIC0gQ3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJlY29yZHMi
LCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CkBAIC0zNzQsMTMgKzQyOSwxMyBAQCBib29sIFNR
TGl0ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3VudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTUUxpdGVJREJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSBz
aG91bGRGZXRjaEZvclNhbWVLZXkpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2goKQogewog
ICAgIEFTU0VSVChtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSB8fCAhbV9mZXRjaGVkUmVjb3Jk
cy5sYXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKTsKIAogICAgIG1fZmV0Y2hlZFJlY29yZHMuYXBw
ZW5kKHsgfSk7CiAKLSAgICBib29sIGlzVW5pcXVlID0gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUgfHwgbV9jdXJzb3JEaXJlY3Rpb24g
PT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWUgfHwgc2hvdWxkRmV0Y2hG
b3JTYW1lS2V5ID09IFNob3VsZEZldGNoRm9yU2FtZUtleTo6WWVzOworICAgIGJvb2wgaXNVbmlx
dWUgPSBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4
dHVuaXF1ZSB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
bjo6UHJldnVuaXF1ZTsKICAgICBpZiAoIWlzVW5pcXVlKSB7CiAgICAgICAgIGJvb2wgZmV0Y2hT
dWNjZWVkZWQgPSBmZXRjaE5leHRSZWNvcmQobV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkpOwogICAg
ICAgICBpZiAoZmV0Y2hTdWNjZWVkZWQpCkBAIC0zOTcsOCArNDUyLDcgQEAgYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSBzaG91bGRGZXRjaEZvclNhbWVL
ZXkpCiAgICAgICAgIGlmIChtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5jb21wbGV0ZWQpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHNob3VsZEZldGNoRm9yU2FtZUtl
eSA9PSBTaG91bGRGZXRjaEZvclNhbWVLZXk6OlllcykKLSAgICAgICAgICAgIG1fZmV0Y2hlZFJl
Y29yZHMuYXBwZW5kKHsgfSk7CisgICAgICAgIG1fZmV0Y2hlZFJlY29yZHNTaXplIC09IG1fZmV0
Y2hlZFJlY29yZHMubGFzdCgpLnJlY29yZC5zaXplKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDA2LDggKzQ2MCwxMCBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2goU2hv
dWxkRmV0Y2hGb3JTYW1lS2V5IHNob3VsZEZldGNoRm9yU2FtZUtleSkKIAogYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzb3JSZWNvcmQmIHJlY29yZCkKIHsK
LSAgICBpZiAobV9zdGF0ZW1lbnROZWVkc1Jlc2V0KQorICAgIGlmIChtX3N0YXRlbWVudE5lZWRz
UmVzZXQpIHsKKyAgICAgICAgcmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNz
YXJ5KCk7CiAgICAgICAgIHJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCk7CisgICAgfQogCiAgICAg
RmV0Y2hSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKQEAgLTQzNCwyNiArNDkwLDQwIEBAIFNRTGl0
ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4
dFJlY29yZChTUUxpdGVDdXJzCiAKICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbnVsbHB0cjsK
IAotICAgIGludCByZXN1bHQgPSBtX3N0YXRlbWVudC0+c3RlcCgpOwotICAgIGlmIChyZXN1bHQg
PT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgLy8gV2hlbiBhIGN1cnNvciByZWFjaGVzIGl0cyBl
bmQsIHRoYXQgaXMgaW5kaWNhdGVkIGJ5IGhhdmluZyB1bmRlZmluZWQga2V5cy92YWx1ZXMKLSAg
ICAgICAgcmVjb3JkID0geyB9OwotICAgICAgICByZWNvcmQuY29tcGxldGVkID0gdHJ1ZTsKKyAg
ICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRh
dGFiYXNlKCk7CisgICAgU1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQgPSBudWxscHRyOwogCi0g
ICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6U3VjY2VzczsKLSAgICB9CisgICAgaW50IHJlc3Vs
dDsKKyAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudCkgeworICAgICAgICBBU1NFUlQobV9pbmRl
eElEICE9IElEQkluZGV4SW5mbzo6SW52YWxpZElkKTsKIAotICAgIGlmIChyZXN1bHQgIT0gU1FM
SVRFX1JPVykgewotICAgICAgICBMT0dfRVJST1IoIkVycm9yIGFkdmFuY2luZyBjdXJzb3IgLSAo
JWkpICVzIiwgcmVzdWx0LCBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRh
YmFzZSgpLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwot
ICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CisgICAgICAgIHJlc3VsdCA9IG1f
cHJlSW5kZXhTdGF0ZW1lbnQtPnN0ZXAoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICAgICAgc3RhdGVtZW50ID0gbV9wcmVJbmRleFN0YXRlbWVudC5nZXQoKTsK
KyAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAgTE9H
X0VSUk9SKCJFcnJvciBhZHZhbmNpbmcgd2l0aCBwcmUgc3RhdGVtZW50IC0gKCVpKSAlcyIsIHJl
c3VsdCwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIXN0
YXRlbWVudCkgeworICAgICAgICByZXN1bHQgPSBtX3N0YXRlbWVudC0+c3RlcCgpOworICAgICAg
ICBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICByZWNvcmQgPSB7IH07
CisgICAgICAgICAgICByZWNvcmQuY29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVy
biBGZXRjaFJlc3VsdDo6U3VjY2VzczsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9
IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2YW5jaW5nIGN1
cnNvciAtICglaSkgJXMiLCByZXN1bHQsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgICAgIG1hcmtBc0Vycm9yZWQocmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVybiBGZXRjaFJl
c3VsdDo6RmFpbHVyZTsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZW1lbnQgPSBtX3N0YXRlbWVu
dC5nZXQoKTsKICAgICB9CiAKLSAgICByZWNvcmQucm93SUQgPSBtX3N0YXRlbWVudC0+Z2V0Q29s
dW1uSW50NjQoMCk7CisgICAgcmVjb3JkLnJvd0lEID0gc3RhdGVtZW50LT5nZXRDb2x1bW5JbnQ2
NCgwKTsKICAgICBBU1NFUlQocmVjb3JkLnJvd0lEKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBr
ZXlEYXRhOwotICAgIG1fc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwga2V5RGF0
YSk7CisgICAgc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwga2V5RGF0YSk7CiAK
ICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5z
aXplKCksIHJlY29yZC5yZWNvcmQua2V5KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBjdXJz
b3IiKTsKQEAgLTQ2MSw3ICs1MzEsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNR
TGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAg
ICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CiAgICAgfQogCi0gICAgbV9zdGF0ZW1lbnQt
PmdldENvbHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlEYXRhKTsKKyAgICBzdGF0ZW1lbnQtPmdldENv
bHVtbkJsb2JBc1ZlY3RvcigyLCBrZXlEYXRhKTsKIAogICAgIC8vIFRoZSBwcmltYXJ5S2V5IG9m
IGFuIE9iamVjdFN0b3JlIGN1cnNvciBpcyB0aGUgc2FtZSBhcyBpdHMga2V5LgogICAgIGlmICht
X2luZGV4SUQgPT0gSURCSW5kZXhJbmZvOjpJbnZhbGlkSWQpIHsKQEAgLTQ4NSw3ICs1NTUsNyBA
QCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxG
ZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2Nh
Y2hlZE9iamVjdFN0b3JlU3RhdGVtZW50IHx8IG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQt
PnJlc2V0KCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAgICBtX2NhY2hlZE9iamVjdFN0b3Jl
U3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fc3RhdGVtZW50LT5kYXRh
YmFzZSgpLCAiU0VMRUNUIHZhbHVlIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSBDQVNUKD8gQVMg
VEVYVCkgYW5kIG9iamVjdFN0b3JlSUQgPSA/OyIpOworICAgICAgICAgICAgbV9jYWNoZWRPYmpl
Y3RTdG9yZVN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYXRhYmFzZSwg
IlNFTEVDVCB2YWx1ZSBGUk9NIFJlY29yZHMgV0hFUkUga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIGFu
ZCBvYmplY3RTdG9yZUlEID0gPzsiKTsKICAgICAgICAgICAgIGlmIChtX2NhY2hlZE9iamVjdFN0
b3JlU3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgICAgIG1f
Y2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQgPSBudWxscHRyOwogICAgICAgICB9CkBAIC00OTMs
NyArNTYzLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6
OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgaWYgKCFtX2NhY2hl
ZE9iamVjdFN0b3JlU3RhdGVtZW50CiAgICAgICAgICAgICB8fCBtX2NhY2hlZE9iamVjdFN0b3Jl
U3RhdGVtZW50LT5iaW5kQmxvYigxLCBrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+
YmluZEludDY0KDIsIG1fb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIHN0YXRlbWVudCBpbnRv
IG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIG1fc3RhdGVtZW50LT5kYXRhYmFzZSgp
Lmxhc3RFcnJvcigpLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIHN0YXRl
bWVudCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBtYXJrQXNFcnJv
cmVkKHJlY29yZCk7CiAgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CiAg
ICAgICAgIH0KQEAgLTUwOCw3ICs1NzgsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0
IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAg
ICAgICAgICAgLy8gU2tpcCBvdmVyIGl0LgogICAgICAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0
OjpTaG91bGRGZXRjaEFnYWluOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3Qgc3RlcCBpbmRleCBjdXJzb3Igc3RhdGVtZW50IGludG8gb2JqZWN0IHN0
b3JlIHJlY29yZHMgKCVpKSAnJXMnIiwgbV9zdGF0ZW1lbnQtPmRhdGFiYXNlKCkubGFzdEVycm9y
KCksIG1fc3RhdGVtZW50LT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IHN0ZXAgaW5kZXggY3Vyc29yIHN0YXRlbWVudCBpbnRvIG9i
amVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBtYXJrQXNFcnJvcmVkKHJlY29yZCk7
CiAgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuaAppbmRleCAzNTQ2ODRlYjk1YWFiNTljMzE2OTMzNjA3OGFkN2NiYTFkMjA5N2Y4Li5kODFk
ZmI1YzNkOTUxMTBiYTNjMmQxZTkzYjY2MzEyYzAyZDM2MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5o
CkBAIC00NCw4ICs0NCw2IEBAIGNsYXNzIElEQkdldFJlc3VsdDsKIAogbmFtZXNwYWNlIElEQlNl
cnZlciB7CiAKLWVudW0gY2xhc3MgU2hvdWxkRmV0Y2hGb3JTYW1lS2V5IDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLQogY2xhc3MgU1FMaXRlSURCVHJhbnNhY3Rpb247CiAKIGNsYXNzIFNRTGl0ZUlEQkN1
cnNvciB7CkBAIC04Niw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjcmVhdGVTUUxpdGVT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpOwogICAgIGJvb2wgYmluZEFyZ3VtZW50cygpOwog
CisgICAgYm9vbCByZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKTsK
ICAgICB2b2lkIHJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCk7CiAKICAgICBlbnVtIGNsYXNzIEZl
dGNoUmVzdWx0IHsKQEAgLTk0LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU2hvdWxkRmV0
Y2hBZ2FpbgogICAgIH07CiAKLSAgICBib29sIGZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSA9
IFNob3VsZEZldGNoRm9yU2FtZUtleTo6Tm8pOworICAgIGJvb2wgZmV0Y2goKTsKIAogICAgIHN0
cnVjdCBTUUxpdGVDdXJzb3JSZWNvcmQgewogICAgICAgICBJREJDdXJzb3JSZWNvcmQgcmVjb3Jk
OwpAQCAtMTA4LDYgKzEwNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1hcmtBc0Vycm9yZWQo
U1FMaXRlQ3Vyc29yUmVjb3JkJik7CiAKKyAgICBib29sIGlzRGlyZWN0aW9uTmV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpOZXh0IHx8IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpOZXh0dW5pcXVlOyB9CisKICAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlv
bjsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9jdXJzb3JJZGVudGlmaWVyOwogICAgIGlu
dDY0X3QgbV9vYmplY3RTdG9yZUlEOwpAQCAtMTE4LDExICsxMTksMTMgQEAgcHJpdmF0ZToKIAog
ICAgIElEQktleURhdGEgbV9jdXJyZW50TG93ZXJLZXk7CiAgICAgSURCS2V5RGF0YSBtX2N1cnJl
bnRVcHBlcktleTsKKyAgICBJREJLZXlEYXRhIG1fY3VycmVudEluZGV4UmVjb3JkVmFsdWU7CiAK
ICAgICBEZXF1ZTxTUUxpdGVDdXJzb3JSZWNvcmQ+IG1fZmV0Y2hlZFJlY29yZHM7CiAgICAgdWlu
dDY0X3QgbV9mZXRjaGVkUmVjb3Jkc1NpemUgeyAwIH07CiAgICAgSURCS2V5RGF0YSBtX2N1cnJl
bnRLZXlGb3JVbmlxdWVuZXNzOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVu
dD4gbV9wcmVJbmRleFN0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVt
ZW50PiBtX3N0YXRlbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBt
X2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzkyYWNjNGE3Mzc5ZWU2ODU5
ZjQ2ZjU5ZTBjYjM2YTFjYzRjYzk0ZS4uZjE1Mjg3NjgwZmM5YTlkZWY5YjNhNTZjZmRmM2JhMjUw
ZmNkOGI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTExICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0aW9uIG9mIGN1
cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS13
aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qczoKKyAgICAgICAgKHBv
cHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAob25PcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChvbk9wZW5TdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFz
ZSk6IERlbGV0ZWQuCisKIDIwMjAtMDItMTAgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIFdpbiBdIGFuaW1hdGlvbnMvc3RhY2tpbmct
Y29udGV4dC1ub3QtZmlsbC1mb3J3YXJkcy5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUtd2hpbGUtaXRlcmF0aW5nLWV4cGVjdGVkLnR4dAppbmRleCBhOGE5NmU5MmVkZjY0MGRjMjA0
ZDEzNTJlMWVlNDhkYTliN2E4MmQ3Li4wNjBkYWJiZDgzM2FlMTAwZjNhNTBmYmMwMGQ2ZjgxMzA5
MjIwNzI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
dXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0
CkBAIC0xMSw3ICsxMSw3IEBAIGluZGV4ZWREQi5vcGVuKGRibmFtZSkKIHByZXBhcmVEYXRhYmFz
ZSgpOgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVz
Lgotb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCB7YXV0
b0luY3JlbWVudDogdHJ1ZX0pCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdv
YmplY3RTdG9yZScpCiBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgna2V5JywgJ2tleScsIHt1bmlx
dWU6IGZhbHNlfSkKIAogb25PcGVuU3VjY2VzcygpOgpAQCAtNDAsNyArNDAsMTEgQEAgUEFTUyBK
U09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzICJ7XCJrZXlcIjpcImtleTJcIixcInZhbHVl
XCI6XCJ2YWx1ZTRcIn0iCiBEZWxldGUgY3Vyc29yCiBDdXJzb3IgY29udGludWVzCiAKLVBBU1Mg
U3VjY2Vzc2Z1bGx5IGl0ZXJhdGVkIHdob2xlIGFycmF5IHdpdGggY3Vyc29yIHVwZGF0ZXMuCitQ
QVNTIEpTT04uc3RyaW5naWZ5KGN1cnNvci52YWx1ZSkgaXMgIntcImtleVwiOlwia2V5M1wiLFwi
dmFsdWVcIjpcInZhbHVlNVwifSIKK0RlbGV0ZSBsYXN0IHJlY29yZAorQ3Vyc29yIGNvbnRpbnVl
cworCitQQVNTIHRvdGFsUmVjb3JkQ291bnQgaXMgNgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGls
ZS1pdGVyYXRpbmcuanMKaW5kZXggNDhiZDkwYjAwMGU0ZTgzNjdmMTFlNmEwODA5YmVkYmU4Y2E1
NTM0ZC4uZmQ4NGMyY2RhNThiNjg1NTVlMGM4OTE0NDQxYTU3YjQwNThkYWYzYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUt
d2hpbGUtaXRlcmF0aW5nLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qcwpAQCAtMTIsMTIgKzEyLDE1
IEBAIGNvbnN0IG9iamVjdEFycmF5ID0gWwogICAgIHsga2V5OiAia2V5MSIsIHZhbHVlOiAidmFs
dWUxIiB9LAogICAgIHsga2V5OiAia2V5MSIsIHZhbHVlOiAidmFsdWUzIiB9LAogICAgIHsga2V5
OiAia2V5MiIsIHZhbHVlOiAidmFsdWUyIiB9LAotICAgIHsga2V5OiAia2V5MiIsIHZhbHVlOiAi
dmFsdWU0IiB9CisgICAgeyBrZXk6ICJrZXkyIiwgdmFsdWU6ICJ2YWx1ZTQiIH0sCisJeyBrZXk6
ICJrZXkzIiwgdmFsdWU6ICJ2YWx1ZTUiIH0sCisJeyBrZXk6ICJrZXkzIiwgdmFsdWU6ICJ2YWx1
ZTYiIH0sCiBdOwogCiBmdW5jdGlvbiBwb3B1bGF0ZU9iamVjdFN0b3JlKCkgewotICAgIGZvciAo
bGV0IG9iamVjdCBvZiBvYmplY3RBcnJheSkKLSAgICAgICAgb2JqZWN0U3RvcmUuYWRkKG9iamVj
dCkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9iamVjdEFycmF5LmZv
ckVhY2goKG9iamVjdCwgaSk9PnsKKwkJb2JqZWN0U3RvcmUuYWRkKG9iamVjdCwgaSkub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCX0pOwogfQogCiBmdW5jdGlvbiBwcmVwYXJl
RGF0YWJhc2UoZXZlbnQpCkBAIC0yNiw3ICsyOSw3IEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFz
ZShldmVudCkKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwogCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIHth
dXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJykiKTsKICAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgna2V5JywgJ2tleScsIHt1bmlxdWU6
IGZhbHNlfSkiKTsKIAogICAgIHBvcHVsYXRlT2JqZWN0U3RvcmUoKTsKQEAgLTQzLDI4ICs0Niwz
MCBAQCBmdW5jdGlvbiBvbk9wZW5TdWNjZXNzKGV2ZW50KQogICAgIGV2YWxBbmRMb2coImluZGV4
ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2tleScpIik7CiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4Lm9wZW5DdXJzb3IoKSIpOwogCi0gICAgdmFyIG4gPSAwOworICAgIHRvdGFsUmVjb3Jk
Q291bnQgPSAwOwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgaWYgKGN1cnNvcikg
ewotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJz
b3IudmFsdWUpIiwgSlNPTi5zdHJpbmdpZnkob2JqZWN0QXJyYXlbbisrXSkpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIiwg
SlNPTi5zdHJpbmdpZnkob2JqZWN0QXJyYXlbdG90YWxSZWNvcmRDb3VudCsrXSkpOwogCiAgICAg
ICAgICAgICBpZiAoY3Vyc29yLmtleSA9PSAia2V5MSIpIHsKICAgICAgICAgICAgICAgICBkZWJ1
ZygiVXBkYXRlIGN1cnNvciIpOwogICAgICAgICAgICAgICAgIGNvbnN0IHt2YWx1ZX0gPSBjdXJz
b3I7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZSh2YWx1ZSk7Ci0gICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN1cnNvci5rZXkgPT0gImtl
eTIiKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoIkRlbGV0ZSBjdXJzb3IiKTsKICAgICAgICAg
ICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
Y3Vyc29yLmtleSA9PSAia2V5MyIpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiRGVsZXRlIGxh
c3QgcmVjb3JkIik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKDYpOworICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWJ1ZygiQ3Vyc29yIGNvbnRpbnVlc1xuIik7CiAg
ICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChuICE9IG9iamVjdEFycmF5Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJDdXJzb3IgZGlkbid0IGdvIHRocm91Z2ggd2hvbGUgYXJyYXkuIik7Ci0gICAgICAgICAg
ICBlbHNlIAotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBpdGVyYXRl
ZCB3aG9sZSBhcnJheSB3aXRoIGN1cnNvciB1cGRhdGVzLiIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvTnVtYmVyKCJ0b3RhbFJlY29yZENvdW50Iiwgb2JqZWN0QXJyYXkubGVuZ3RoIC0g
MSk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390465</attachid>
            <date>2020-02-11 16:46:11 -0800</date>
            <delta_ts>2020-02-11 16:47:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207437-20200211164610.patch</filename>
            <type>text/plain</type>
            <size>23176</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI0NWQ3MmUyNjFlNDNi
OWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uYWRmZjY4ZGUwOTBiODQ3NjM5NGY0MDE2MDVjNGM0
OWJiMmY2Y2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBXaGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gcmVj
b3JkcywgY3Vyc29ycyB3aWxsIGR1bXAgY2FjaGVkIHJlY29yZHMgYW5kIHNldCBuZXcga2V5IHJh
bmdlIGZvciBpdGVyYXRpb24uCisgICAgICAgIFRoZSBuZXcgcmFuZ2UgZGlkIG5vdCBpbmNsdWRl
IGtleSBvZiBjdXJyZW50IGN1cnNvciByZWNvcmQsIHdoaWNoIGlzIHdyb25nIGJlY2F1c2UgdHdv
IGluZGV4IHJlY29yZHMgY2FuIGhhdmUgCisgICAgICAgIHRoZSBzYW1lIGtleSBidXQgZGlmZmVy
ZW50IHZhbHVlcy4KKyAgICAgICAgcjIzNzU5MCB0cmllZCBmaXhpbmcgdGhpcyBpc3N1ZSBieSBj
YWNoaW5nIGFsbCB0aGUgZm9sbG93aW5nIHJlY29yZHMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBrZXkg
YXMgY3VycmVudCByZWNvcmQuCisgICAgICAgIFRoYXQgaXMgbm90IHF1aXRlIHJpZ2h0IGFzIHRo
ZXJlIGNvdWxkIGJlIGNoYW5nZXMgb24gdGhlIGNhY2hlZCByZWNvcmRzLCBhbmQgdGhlIGNhY2hl
ZCByZWNvcmRzIHdlcmUgbm90IAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIFRvIGNvcnJl
Y3RseSBmaXggdGhlIGlzc3VlLCBzZXQgdGhlIG5ldyBrZXkgcmFuZ2UgdG8gaW5jbHVkZSBrZXkg
b2YgY3VycmVudCBjdXJzb3IgcmVjb3JkIGFuZCBleGNsdWRlIHZhbHVlcworICAgICAgICB2aXNp
dGVkIGJlZm9yZS4gVG8gbm90IHJlZ3Jlc3MgcHJlZm9ybWFuY2UsIHdlIGNvbXBsZXRlIHRoaXMg
YnkgbWFraW5nIGFuIGV4dHJhIHN0YXRtZW50IGFuZCBjaGFuZ2luZworICAgICAgICBJbmRleFJl
Y29yZHNJbmRleCBpbmRleCBvZiB0YWJsZSBJbmRleFJlY29yZHMgdG8gY292ZXIgdmFsdWUgY29s
dW1uLgorCisgICAgICAgIEFkZGVkIHRlc3QgY2FzZSBpbjogc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuaHRtbAorICAgICAgICBJbmRleCB1cGdyYWRlIGNv
dmVyZWQgYnkgZXhpc3RpbmcgQVBJIHRlc3Q6IEluZGV4ZWREQi5JREJPYmplY3RTdG9yZUluZm9V
cGdyYWRlVG9WMgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OmJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0
QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmZldGNoTmV4dFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNv
cmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppc0RpcmVj
dGlvbk5leHQgY29uc3QpOgorCiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQnVnIDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFR5cGU6OnBhcnNlQ29udGVudFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGJmMzgyZTY0YWFlNjNmODU2MTY1
MzE3ZTVkNjYwZGQ4OWE0ZGY0NjUuLjNmYTEwMmRiNjU5MjgwZDdkNmEwNTBjZTFlYTdmYzQwODAy
YmZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NCw2ICs2NCw3
IEBAIGNvbnN0ZXhwciBhdXRvIG9iamVjdFN0b3JlSW5mb1RhYmxlTmFtZSA9ICJPYmplY3RTdG9y
ZUluZm8iX3M7CiBjb25zdGV4cHIgYXV0byBvYmplY3RTdG9yZUluZm9UYWJsZU5hbWVBbHRlcm5h
dGUgPSAiXCJPYmplY3RTdG9yZUluZm9cIiJfczsKIGNvbnN0ZXhwciBhdXRvIHYyT2JqZWN0U3Rv
cmVJbmZvU2NoZW1hID0gIkNSRUFURSBUQUJMRSBPYmplY3RTdG9yZUluZm8gKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
RkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZM
SUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBhdXRvSW5j
IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3M7CiBjb25zdGV4cHIgYXV0byB2
MUluZGV4UmVjb3Jkc1JlY29yZEluZGV4U2NoZW1hID0gIkNSRUFURSBJTkRFWCBJbmRleFJlY29y
ZHNSZWNvcmRJbmRleCBPTiBJbmRleFJlY29yZHMgKG9iamVjdFN0b3JlSUQsIG9iamVjdFN0b3Jl
UmVjb3JkSUQpIl9zOworY29uc3RleHByIGF1dG8gdjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSA9
ICJDUkVBVEUgSU5ERVggSW5kZXhSZWNvcmRzSW5kZXggT04gSW5kZXhSZWNvcmRzIChrZXksIHZh
bHVlKSJfczsKIAogLy8gQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtZXRhZGF0YSBzY2hlbWEgYmVp
bmcgdXNlZCBpbiB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCiBzdGF0aWMgY29uc3QgaW50IGN1cnJl
bnRNZXRhZGF0YVZlcnNpb24gPSAxOwpAQCAtNTE0LDcgKzUxNSw3IEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCkKIAogICAgICAgICAv
LyBJZiB0aGVyZSBpcyBubyBJbmRleFJlY29yZHNJbmRleCBpbmRleCBhdCBhbGwsIGNyZWF0ZSBp
dCBhbmQgdGhlbiBiYWlsLgogICAgICAgICBpZiAoc3FsaXRlUmVzdWx0ID09IFNRTElURV9ET05F
KSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKHYxSW5kZXhS
ZWNvcmRzSW5kZXhTY2hlbWEoKSkpIHsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVEQi0+ZXhl
Y3V0ZUNvbW1hbmQodjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSkpIHsKICAgICAgICAgICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgSW5kZXhSZWNvcmRzSW5kZXggaW5kZXggaW4g
ZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREIt
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CkBAIC01MzMsMTEgKzUzNCwyNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKCFjdXJyZW50U2NoZW1h
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBJZiB0aGUgc2NoZW1hIGluIHRoZSBiYWNraW5nIHN0b3Jl
IGlzIHRoZSBjdXJyZW50IHNjaGVtYSwgd2UncmUgZG9uZS4KLSAgICBpZiAoY3VycmVudFNjaGVt
YSA9PSB2MUluZGV4UmVjb3Jkc0luZGV4U2NoZW1hKCkpCisgICAgaWYgKGN1cnJlbnRTY2hlbWEg
PT0gdjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gb3V0ZGF0ZWQgc2NoZW1hIGZvciB0aGUgSW5kZXhS
ZWNvcmRzSW5kZXgsIHNvIGFueSBvdGhlciBleGlzdGluZyBzY2hlbWEgbWVhbnMgdGhpcyBkYXRh
YmFzZSBpcyBpbnZhbGlkLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
dXJyZW50U2NoZW1hID09IHYxSW5kZXhSZWNvcmRzSW5kZXhTY2hlbWEoKSk7CisKKyAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CisgICAgdHJhbnNhY3Rpb24u
YmVnaW4oKTsKKworICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgSU5E
RVggSW5kZXhSZWNvcmRzSW5kZXgiKSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBk
cm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3Fs
aXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21t
YW5kKHYySW5kZXhSZWNvcmRzSW5kZXhTY2hlbWEpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBJbmRleFJlY29yZHNJbmRleCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24uY29tbWl0
KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCAyMWRmZjg0Zjc1ZmE0YjU5NjQ1NWM2ZmU2YzZkMTU1M2E4MjlmOGEwLi5iMzc3MTcz
NzU3NGUyMjM2NjE3ZDI0ODdjNjkwZTEyMGVhZGQ3MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMTE2LDYgKzExNiwyNSBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEo
SURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdAogICAgIHJlc3Vs
dCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA/ICpjdXJyZW50UmVjb3JkLnJlY29y
ZC52YWx1ZSA6IElEQlZhbHVlKCksIGtleVBhdGh9OwogfQogCitzdGF0aWMgU3RyaW5nIGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0RpcmVjdGlvbk5leHQpCit7CisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQs
IGtleSwgdmFsdWUgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9
IENBU1QoPyBBUyBURVhUKSBBTkQgdmFsdWUgIik7CisgICAgaWYgKGlzRGlyZWN0aW9uTmV4dCkK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJz4nKTsKKyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc8Jyk7CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVY
VCkgT1JERVIgQlkgdmFsdWUiKTsKKyAgICBpZiAoIWlzRGlyZWN0aW9uTmV4dCkKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgREVTQyIpOworCisgICAgYnVpbGRlci5hcHBlbmQoJzsn
KTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcg
YnVpbGRJbmRleFN0YXRlbWVudChjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24pCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwpAQCAtMjE4LDI4ICsyMzcsMTQgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6
Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jk
cy5pc0VtcHR5KCkpOwogCiAgICAgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzcyA9IG1fZmV0Y2hl
ZFJlY29yZHMuZmlyc3QoKS5yZWNvcmQua2V5OwotCi0gICAgaWYgKG1fY3Vyc29yRGlyZWN0aW9u
ICE9IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0dW5pcXVlICYmIG1fY3Vyc29yRGly
ZWN0aW9uICE9IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVlKSB7Ci0gICAg
ICAgIGlmICghbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKQotICAg
ICAgICAgICAgZmV0Y2goU2hvdWxkRmV0Y2hGb3JTYW1lS2V5OjpZZXMpOwotCi0gICAgICAgIHdo
aWxlIChtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQua2V5ICE9IG1fZmV0Y2hlZFJlY29y
ZHMuZmlyc3QoKS5yZWNvcmQua2V5KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9mZXRjaGVkUmVj
b3Jkc1NpemUgPj0gbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkucmVjb3JkLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtX2ZldGNoZWRSZWNvcmRzU2l6ZSAtPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5y
ZWNvcmQuc2l6ZSgpOwotICAgICAgICAgICAgbV9mZXRjaGVkUmVjb3Jkcy5yZW1vdmVMYXN0KCk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtX2ZldGNoZWRSZWNvcmRzLmNsZWFy
KCk7Ci0gICAgICAgIG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKLSAgICB9CisgICAgaWYgKG1f
aW5kZXhJRCAhPSBJREJJbmRleEluZm86OkludmFsaWRJZCkKKyAgICAgICAgbV9jdXJyZW50SW5k
ZXhSZWNvcmRWYWx1ZSA9IG1fZmV0Y2hlZFJlY29yZHMuZmlyc3QoKS5yZWNvcmQucHJpbWFyeUtl
eTsKIAogICAgIC8vIElmIE9iamVjdFN0b3JlIG9yIEluZGV4IGNvbnRlbnRzIGNoYW5nZWQsIHdl
IG5lZWQgdG8gcmVzZXQgdGhlIHN0YXRlbWVudCBhbmQgYmluZCBuZXcgcGFyYW1ldGVycyB0byBp
dC4KICAgICAvLyBUaGlzIGlzIHRvIHBpY2sgdXAgYW55IGNoYW5nZXMgdGhhdCBtaWdodCBleGlz
dC4KLSAgICAvLyBXZSBhbHNvIG5lZWQgdG8gdGhyb3cgYXdheSBhbnkgZmV0Y2hlZCByZWNvcmRz
IGFzIHRoZXkgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KLQogICAgIG1fc3RhdGVtZW50TmVlZHNS
ZXNldCA9IHRydWU7CiAKLSAgICBpZiAobV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUpIHsKKyAgICBpZiAoaXNEaXJlY3Rpb25OZXh0KCkp
IHsKICAgICAgICAgbV9jdXJyZW50TG93ZXJLZXkgPSBtX2N1cnJlbnRLZXlGb3JVbmlxdWVuZXNz
OwogICAgICAgICBpZiAoIW1fa2V5UmFuZ2UubG93ZXJPcGVuKSB7CiAgICAgICAgICAgICBtX2tl
eVJhbmdlLmxvd2VyT3BlbiA9IHRydWU7CkBAIC0yNTQsNiArMjU5LDEwIEBAIHZvaWQgU1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCkKICAgICAgICAgICAgIG1fc3Rh
dGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFdlIGFsc28gbmVl
ZCB0byB0aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2Vy
IGJlIHZhbGlkLgorICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKKyAgICBtX2ZldGNoZWRS
ZWNvcmRzU2l6ZSA9IDA7CiB9CiAKIHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFN0YXRlbWVudCgpCkBAIC0zMDQsNiArMzEzLDUyIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpi
aW5kQXJndW1lbnRzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTUUxpdGVJREJDdXJz
b3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCit7CisgICAg
aWYgKG1faW5kZXhJRCA9PSBJREJJbmRleEluZm86OkludmFsaWRJZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAobV9jdXJyZW50SW5kZXhSZWNvcmRWYWx1ZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24t
PnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCk7CisgICAgaWYgKCFtX3ByZUluZGV4U3Rh
dGVtZW50KSB7CisgICAgICAgIG1fcHJlSW5kZXhTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0
ZVN0YXRlbWVudD4oZGF0YWJhc2UsIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25O
ZXh0KCkpKTsKKworICAgICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+cHJlcGFyZSgpICE9
IFNRTElURV9PSykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHJlcGFyZSBw
cmUgc3RhdGVtZW50IC0gJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3ByZUluZGV4
U3RhdGVtZW50LT5yZXNldCgpICE9IFNRTElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZXNldCBwcmUgc3RhdGVtZW50IC0gJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGF1dG8ga2V5ID0gaXNE
aXJlY3Rpb25OZXh0KCkgPyBtX2N1cnJlbnRMb3dlcktleSA6IG1fY3VycmVudFVwcGVyS2V5Owor
ICAgIGludCBjdXJyZW50QmluZEFyZ3VtZW50ID0gMTsKKworICAgIGlmIChtX3ByZUluZGV4U3Rh
dGVtZW50LT5iaW5kSW50NjQoY3VycmVudEJpbmRBcmd1bWVudCsrLCBtX2JvdW5kSUQpICE9IFNR
TElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50
IHRvIHByZSBzdGF0ZW1lbnQgKGJvdW5kIElEKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8g
cHJlIHN0YXRlbWVudCAoa2V5KSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVl
KTsKKyAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1
bWVudCsrLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSykgewor
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKHZhbHVlKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2goKSAtIEN1cnNvciBhbHJl
YWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkpOwpA
QCAtMzc0LDEzICs0MjksMTMgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmFkdmFuY2UodWludDY0
X3QgY291bnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1FMaXRlSURCQ3Vyc29yOjpm
ZXRjaChTaG91bGRGZXRjaEZvclNhbWVLZXkgc2hvdWxkRmV0Y2hGb3JTYW1lS2V5KQorYm9vbCBT
UUxpdGVJREJDdXJzb3I6OmZldGNoKCkKIHsKICAgICBBU1NFUlQobV9mZXRjaGVkUmVjb3Jkcy5p
c0VtcHR5KCkgfHwgIW1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSk7
CiAKICAgICBtX2ZldGNoZWRSZWNvcmRzLmFwcGVuZCh7IH0pOwogCi0gICAgYm9vbCBpc1VuaXF1
ZSA9IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0
dW5pcXVlIHx8IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpQcmV2dW5pcXVlIHx8IHNob3VsZEZldGNoRm9yU2FtZUtleSA9PSBTaG91bGRGZXRjaEZvclNh
bWVLZXk6OlllczsKKyAgICBib29sIGlzVW5pcXVlID0gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUgfHwgbV9jdXJzb3JEaXJlY3Rpb24g
PT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWU7CiAgICAgaWYgKCFpc1Vu
aXF1ZSkgewogICAgICAgICBib29sIGZldGNoU3VjY2VlZGVkID0gZmV0Y2hOZXh0UmVjb3JkKG1f
ZmV0Y2hlZFJlY29yZHMubGFzdCgpKTsKICAgICAgICAgaWYgKGZldGNoU3VjY2VlZGVkKQpAQCAt
Mzk3LDggKzQ1Miw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpmZXRjaChTaG91bGRGZXRjaEZv
clNhbWVLZXkgc2hvdWxkRmV0Y2hGb3JTYW1lS2V5KQogICAgICAgICBpZiAobV9mZXRjaGVkUmVj
b3Jkcy5sYXN0KCkuY29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIGlmIChzaG91bGRGZXRjaEZvclNhbWVLZXkgPT0gU2hvdWxkRmV0Y2hGb3JTYW1lS2V5OjpZ
ZXMpCi0gICAgICAgICAgICBtX2ZldGNoZWRSZWNvcmRzLmFwcGVuZCh7IH0pOworICAgICAgICBt
X2ZldGNoZWRSZWNvcmRzU2l6ZSAtPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQuc2l6
ZSgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNiw4ICs0NjAsMTAgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSBzaG91bGRGZXRj
aEZvclNhbWVLZXkpCiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpmZXRjaE5leHRSZWNvcmQoU1FM
aXRlQ3Vyc29yUmVjb3JkJiByZWNvcmQpCiB7Ci0gICAgaWYgKG1fc3RhdGVtZW50TmVlZHNSZXNl
dCkKKyAgICBpZiAobV9zdGF0ZW1lbnROZWVkc1Jlc2V0KSB7CisgICAgICAgIHJlc2V0QW5kUmVi
aW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpOwogICAgICAgICByZXNldEFuZFJlYmlu
ZFN0YXRlbWVudCgpOworICAgIH0KIAogICAgIEZldGNoUmVzdWx0IHJlc3VsdDsKICAgICBkbyB7
CkBAIC00MzQsMjYgKzQ5MCw0MCBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0
ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgcmVj
b3JkLnJlY29yZC52YWx1ZSA9IG51bGxwdHI7CiAKLSAgICBpbnQgcmVzdWx0ID0gbV9zdGF0ZW1l
bnQtPnN0ZXAoKTsKLSAgICBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgIC8v
IFdoZW4gYSBjdXJzb3IgcmVhY2hlcyBpdHMgZW5kLCB0aGF0IGlzIGluZGljYXRlZCBieSBoYXZp
bmcgdW5kZWZpbmVkIGtleXMvdmFsdWVzCi0gICAgICAgIHJlY29yZCA9IHsgfTsKLSAgICAgICAg
cmVjb3JkLmNvbXBsZXRlZCA9IHRydWU7CisgICAgYXV0byYgZGF0YWJhc2UgPSBtX3RyYW5zYWN0
aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpOworICAgIFNRTGl0ZVN0YXRlbWVu
dCogc3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OlN1
Y2Nlc3M7Ci0gICAgfQorICAgIGludCByZXN1bHQ7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQpIHsKKyAgICAgICAgQVNTRVJUKG1faW5kZXhJRCAhPSBJREJJbmRleEluZm86OkludmFsaWRJ
ZCk7CiAKLSAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJFcnJvciBhZHZhbmNpbmcgY3Vyc29yIC0gKCVpKSAlcyIsIHJlc3VsdCwgbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgIG1hcmtBc0Vycm9yZWQocmVjb3JkKTsKLSAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0OjpG
YWlsdXJlOworICAgICAgICByZXN1bHQgPSBtX3ByZUluZGV4U3RhdGVtZW50LT5zdGVwKCk7Cisg
ICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgICAgIHN0YXRlbWVudCA9
IG1fcHJlSW5kZXhTdGF0ZW1lbnQuZ2V0KCk7CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCAhPSBT
UUxJVEVfRE9ORSkKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2YW5jaW5nIHdpdGgg
cHJlIHN0YXRlbWVudCAtICglaSkgJXMiLCByZXN1bHQsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAgcmVzdWx0ID0g
bV9zdGF0ZW1lbnQtPnN0ZXAoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkg
eworICAgICAgICAgICAgcmVjb3JkID0geyB9OworICAgICAgICAgICAgcmVjb3JkLmNvbXBsZXRl
ZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OlN1Y2Nlc3M7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICBM
T0dfRVJST1IoIkVycm9yIGFkdmFuY2luZyBjdXJzb3IgLSAoJWkpICVzIiwgcmVzdWx0LCBkYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBtYXJrQXNFcnJvcmVkKHJlY29yZCk7
CisgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CisgICAgICAgIH0KKyAg
ICAgICAgc3RhdGVtZW50ID0gbV9zdGF0ZW1lbnQuZ2V0KCk7CiAgICAgfQogCi0gICAgcmVjb3Jk
LnJvd0lEID0gbV9zdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApOworICAgIHJlY29yZC5yb3dJ
RCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CiAgICAgQVNTRVJUKHJlY29yZC5yb3dJ
RCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4ga2V5RGF0YTsKLSAgICBtX3N0YXRlbWVudC0+Z2V0
Q29sdW1uQmxvYkFzVmVjdG9yKDEsIGtleURhdGEpOworICAgIHN0YXRlbWVudC0+Z2V0Q29sdW1u
QmxvYkFzVmVjdG9yKDEsIGtleURhdGEpOwogCiAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLmtleSkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBk
YXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgY3Vyc29yIik7CkBAIC00NjEsNyArNTMxLDcgQEAgU1FM
aXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hO
ZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0OjpGYWlsdXJl
OwogICAgIH0KIAotICAgIG1fc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5
RGF0YSk7CisgICAgc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5RGF0YSk7
CiAKICAgICAvLyBUaGUgcHJpbWFyeUtleSBvZiBhbiBPYmplY3RTdG9yZSBjdXJzb3IgaXMgdGhl
IHNhbWUgYXMgaXRzIGtleS4KICAgICBpZiAobV9pbmRleElEID09IElEQkluZGV4SW5mbzo6SW52
YWxpZElkKSB7CkBAIC00ODUsNyArNTU1LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3Vs
dCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudCB8fCBt
X2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5yZXNldCgpICE9IFNRTElURV9PSykgewotICAg
ICAgICAgICAgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRl
U3RhdGVtZW50PihtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKSwgIlNFTEVDVCB2YWx1ZSBGUk9NIFJl
Y29yZHMgV0hFUkUga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIGFuZCBvYmplY3RTdG9yZUlEID0gPzsi
KTsKKyAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQgPSBtYWtlVW5pcXVl
PFNRTGl0ZVN0YXRlbWVudD4oZGF0YWJhc2UsICJTRUxFQ1QgdmFsdWUgRlJPTSBSZWNvcmRzIFdI
RVJFIGtleSA9IENBU1QoPyBBUyBURVhUKSBhbmQgb2JqZWN0U3RvcmVJRCA9ID87Iik7CiAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNR
TElURV9PSykKICAgICAgICAgICAgICAgICBtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50ID0g
bnVsbHB0cjsKICAgICAgICAgfQpAQCAtNDkzLDcgKzU2Myw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6
RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxp
dGVDdXJzCiAgICAgICAgIGlmICghbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudAogICAgICAg
ICAgICAgfHwgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+YmluZEJsb2IoMSwga2V5RGF0
YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IG1f
Y2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgyLCBtX29iamVjdFN0b3JlSUQp
ICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3JkcyAoJWkpICcl
cyciLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9zdGF0ZW1lbnQtPmRh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgY3JlYXRlIGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3Jk
cyAoJWkpICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwogICAgICAgICAgICAgcmV0
dXJuIEZldGNoUmVzdWx0OjpGYWlsdXJlOwogICAgICAgICB9CkBAIC01MDgsNyArNTc4LDcgQEAg
U1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0
Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgICAgIC8vIFNraXAgb3ZlciBpdC4KICAg
ICAgICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6U2hvdWxkRmV0Y2hBZ2FpbjsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHN0ZXAgaW5kZXggY3Vy
c29yIHN0YXRlbWVudCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIG1fc3Rh
dGVtZW50LT5kYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzdGVwIGlu
ZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3JkcyAoJWkpICclcyci
LCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwogICAgICAgICAgICAgcmV0dXJuIEZldGNoUmVz
dWx0OjpGYWlsdXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggMzU0Njg0ZWI5NWFhYjU5YzMx
NjkzMzYwNzhhZDdjYmExZDIwOTdmOC4uZDgxZGZiNWMzZDk1MTEwYmEzYzJkMWU5M2I2NjMxMmMw
MmQzNjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBJREJH
ZXRSZXN1bHQ7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1lbnVtIGNsYXNzIFNob3VsZEZl
dGNoRm9yU2FtZUtleSA6IGJvb2wgeyBObywgWWVzIH07Ci0KIGNsYXNzIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uOwogCiBjbGFzcyBTUUxpdGVJREJDdXJzb3IgewpAQCAtODYsNiArODQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKTsK
ICAgICBib29sIGJpbmRBcmd1bWVudHMoKTsKIAorICAgIGJvb2wgcmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCByZXNldEFuZFJlYmluZFN0YXRl
bWVudCgpOwogCiAgICAgZW51bSBjbGFzcyBGZXRjaFJlc3VsdCB7CkBAIC05NCw3ICs5Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFNob3VsZEZldGNoQWdhaW4KICAgICB9OwogCi0gICAgYm9vbCBm
ZXRjaChTaG91bGRGZXRjaEZvclNhbWVLZXkgPSBTaG91bGRGZXRjaEZvclNhbWVLZXk6Ok5vKTsK
KyAgICBib29sIGZldGNoKCk7CiAKICAgICBzdHJ1Y3QgU1FMaXRlQ3Vyc29yUmVjb3JkIHsKICAg
ICAgICAgSURCQ3Vyc29yUmVjb3JkIHJlY29yZDsKQEAgLTEwOCw2ICsxMDcsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXJrQXNFcnJvcmVkKFNRTGl0ZUN1cnNvclJlY29yZCYpOwogCisgICAg
Ym9vbCBpc0RpcmVjdGlvbk5leHQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvckRpcmVjdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZTsgfQorCiAgICAgU1FMaXRl
SURCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVy
IG1fY3Vyc29ySWRlbnRpZmllcjsKICAgICBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJRDsKQEAgLTEx
OCwxMSArMTE5LDEzIEBAIHByaXZhdGU6CiAKICAgICBJREJLZXlEYXRhIG1fY3VycmVudExvd2Vy
S2V5OwogICAgIElEQktleURhdGEgbV9jdXJyZW50VXBwZXJLZXk7CisgICAgSURCS2V5RGF0YSBt
X2N1cnJlbnRJbmRleFJlY29yZFZhbHVlOwogCiAgICAgRGVxdWU8U1FMaXRlQ3Vyc29yUmVjb3Jk
PiBtX2ZldGNoZWRSZWNvcmRzOwogICAgIHVpbnQ2NF90IG1fZmV0Y2hlZFJlY29yZHNTaXplIHsg
MCB9OwogICAgIElEQktleURhdGEgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzczsKIAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fcHJlSW5kZXhTdGF0ZW1lbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudDsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDg3MTQwZTFhNjYzN2NlZDJhZDk1OTEzZTI2NzI1NzlhYjk5NTA1YzguLmE3YmZm
MGJmYzIzZjljMmViMGM4YjBlMWVlMjFmOWM3ZmZkM2NjZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMC0wMi0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmRleGVkREI6IGl0ZXJhdGlvbiBvZiBjdXJzb3JzIHNraXAgcmVjb3JkcyBpZiBkZWxldGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtd2hpbGUt
aXRlcmF0aW5nLmpzOgorICAgICAgICAocG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChv
bk9wZW5TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9uT3BlblN1Y2Nlc3Mp
OgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKTogRGVsZXRlZC4KKwogMjAyMC0wMi0xMSAgSmFz
b24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyB3azIg
XSB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxl
LWl0ZXJhdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQKaW5kZXggYThhOTZlOTJl
ZGY2NDBkYzIwNGQxMzUyZTFlZTQ4ZGE5YjdhODJkNy4uMDYwZGFiYmQ4MzNhZTEwMGYzYTUwZmJj
MDBkNmY4MTMwOTIyMDcyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLWV4
cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBpbmRleGVkREIub3BlbihkYm5hbWUpCiBwcmVw
YXJlRGF0YWJhc2UoKToKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KLW9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0
b3JlJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnb2JqZWN0U3RvcmUnKQogb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2tleScsICdr
ZXknLCB7dW5pcXVlOiBmYWxzZX0pCiAKIG9uT3BlblN1Y2Nlc3MoKToKQEAgLTQwLDcgKzQwLDEx
IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBpcyAie1wia2V5XCI6XCJrZXky
XCIsXCJ2YWx1ZVwiOlwidmFsdWU0XCJ9IgogRGVsZXRlIGN1cnNvcgogQ3Vyc29yIGNvbnRpbnVl
cwogCi1QQVNTIFN1Y2Nlc3NmdWxseSBpdGVyYXRlZCB3aG9sZSBhcnJheSB3aXRoIGN1cnNvciB1
cGRhdGVzLgorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzICJ7XCJrZXlcIjpc
ImtleTNcIixcInZhbHVlXCI6XCJ2YWx1ZTVcIn0iCitEZWxldGUgbGFzdCByZWNvcmQKK0N1cnNv
ciBjb250aW51ZXMKKworUEFTUyB0b3RhbFJlY29yZENvdW50IGlzIDYKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0
aW5nLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11
cGRhdGUtd2hpbGUtaXRlcmF0aW5nLmpzCmluZGV4IDQ4YmQ5MGIwMDBlNGU4MzY3ZjExZTZhMDgw
OWJlZGJlOGNhNTUzNGQuLmZkODRjMmNkYTU4YjY4NTU1ZTBjODkxNDQ0MWE1N2I0MDU4ZGFmM2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuanMKQEAgLTEy
LDEyICsxMiwxNSBAQCBjb25zdCBvYmplY3RBcnJheSA9IFsKICAgICB7IGtleTogImtleTEiLCB2
YWx1ZTogInZhbHVlMSIgfSwKICAgICB7IGtleTogImtleTEiLCB2YWx1ZTogInZhbHVlMyIgfSwK
ICAgICB7IGtleTogImtleTIiLCB2YWx1ZTogInZhbHVlMiIgfSwKLSAgICB7IGtleTogImtleTIi
LCB2YWx1ZTogInZhbHVlNCIgfQorICAgIHsga2V5OiAia2V5MiIsIHZhbHVlOiAidmFsdWU0IiB9
LAorCXsga2V5OiAia2V5MyIsIHZhbHVlOiAidmFsdWU1IiB9LAorCXsga2V5OiAia2V5MyIsIHZh
bHVlOiAidmFsdWU2IiB9LAogXTsKIAogZnVuY3Rpb24gcG9wdWxhdGVPYmplY3RTdG9yZSgpIHsK
LSAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqZWN0QXJyYXkpCi0gICAgICAgIG9iamVjdFN0b3Jl
LmFkZChvYmplY3QpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvYmpl
Y3RBcnJheS5mb3JFYWNoKChvYmplY3QsIGkpPT57CisJCW9iamVjdFN0b3JlLmFkZChvYmplY3Qs
IGkpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKwl9KTsKIH0KIAogZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQpAQCAtMjYsNyArMjksNyBAQCBmdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoZXZlbnQpCiAgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKIAotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0
U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScp
Iik7CiAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2tleScsICdrZXkn
LCB7dW5pcXVlOiBmYWxzZX0pIik7CiAKICAgICBwb3B1bGF0ZU9iamVjdFN0b3JlKCk7CkBAIC00
MywyOCArNDYsMzAgQEAgZnVuY3Rpb24gb25PcGVuU3VjY2VzcyhldmVudCkKICAgICBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdrZXknKSIpOwogICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleC5vcGVuQ3Vyc29yKCkiKTsKIAotICAgIHZhciBuID0gMDsKKyAgICB0
b3RhbFJlY29yZENvdW50ID0gMDsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7CiAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJp
bmdpZnkoY3Vyc29yLnZhbHVlKSIsIEpTT04uc3RyaW5naWZ5KG9iamVjdEFycmF5W24rK10pKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnkoY3Vyc29y
LnZhbHVlKSIsIEpTT04uc3RyaW5naWZ5KG9iamVjdEFycmF5W3RvdGFsUmVjb3JkQ291bnQrK10p
KTsKIAogICAgICAgICAgICAgaWYgKGN1cnNvci5rZXkgPT0gImtleTEiKSB7CiAgICAgICAgICAg
ICAgICAgZGVidWcoIlVwZGF0ZSBjdXJzb3IiKTsKICAgICAgICAgICAgICAgICBjb25zdCB7dmFs
dWV9ID0gY3Vyc29yOwogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUodmFsdWUpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJzb3Iu
a2V5ID09ICJrZXkyIikgewogICAgICAgICAgICAgICAgIGRlYnVnKCJEZWxldGUgY3Vyc29yIik7
CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGN1cnNvci5rZXkgPT0gImtleTMiKSB7CisgICAgICAgICAgICAgICAgZGVidWco
IkRlbGV0ZSBsYXN0IHJlY29yZCIpOworICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmRlbGV0
ZSg2KTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVidWcoIkN1cnNvciBjb250aW51
ZXNcbiIpOwogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAobiAhPSBvYmplY3RBcnJheS5sZW5ndGgpCi0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZG4ndCBnbyB0aHJvdWdoIHdob2xlIGFycmF5LiIpOwot
ICAgICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVs
bHkgaXRlcmF0ZWQgd2hvbGUgYXJyYXkgd2l0aCBjdXJzb3IgdXBkYXRlcy4iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb051bWJlcigidG90YWxSZWNvcmRDb3VudCIsIG9iamVjdEFycmF5
Lmxlbmd0aCAtIDEpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390466</attachid>
            <date>2020-02-11 16:47:40 -0800</date>
            <delta_ts>2020-02-12 13:43:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207437-20200211164740.patch</filename>
            <type>text/plain</type>
            <size>23182</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI0NWQ3MmUyNjFlNDNi
OWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uYWRmZjY4ZGUwOTBiODQ3NjM5NGY0MDE2MDVjNGM0
OWJiMmY2Y2NlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQjogaXRlcmF0
aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBXaGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gcmVj
b3JkcywgY3Vyc29ycyB3aWxsIGR1bXAgY2FjaGVkIHJlY29yZHMgYW5kIHNldCBuZXcga2V5IHJh
bmdlIGZvciBpdGVyYXRpb24uCisgICAgICAgIFRoZSBuZXcgcmFuZ2UgZGlkIG5vdCBpbmNsdWRl
IGtleSBvZiBjdXJyZW50IGN1cnNvciByZWNvcmQsIHdoaWNoIGlzIHdyb25nIGJlY2F1c2UgdHdv
IGluZGV4IHJlY29yZHMgY2FuIGhhdmUgCisgICAgICAgIHRoZSBzYW1lIGtleSBidXQgZGlmZmVy
ZW50IHZhbHVlcy4KKyAgICAgICAgcjIzNzU5MCB0cmllZCBmaXhpbmcgdGhpcyBpc3N1ZSBieSBj
YWNoaW5nIGFsbCB0aGUgZm9sbG93aW5nIHJlY29yZHMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBrZXkg
YXMgY3VycmVudCByZWNvcmQuCisgICAgICAgIFRoYXQgaXMgbm90IHF1aXRlIHJpZ2h0IGFzIHRo
ZXJlIGNvdWxkIGJlIGNoYW5nZXMgb24gdGhlIGNhY2hlZCByZWNvcmRzLCBhbmQgdGhlIGNhY2hl
ZCByZWNvcmRzIHdlcmUgbm90IAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIFRvIGNvcnJl
Y3RseSBmaXggdGhlIGlzc3VlLCBzZXQgdGhlIG5ldyBrZXkgcmFuZ2UgdG8gaW5jbHVkZSBrZXkg
b2YgY3VycmVudCBjdXJzb3IgcmVjb3JkIGFuZCBleGNsdWRlIHZhbHVlcworICAgICAgICB2aXNp
dGVkIGJlZm9yZS4gVG8gbm90IHJlZ3Jlc3MgcHJlZm9ybWFuY2UsIHdlIGNvbXBsZXRlIHRoaXMg
YnkgbWFraW5nIGFuIGV4dHJhIHN0YXRtZW50IGFuZCBjaGFuZ2luZworICAgICAgICBJbmRleFJl
Y29yZHNJbmRleCBpbmRleCBvZiB0YWJsZSBJbmRleFJlY29yZHMgdG8gY292ZXIgdmFsdWUgY29s
dW1uLgorCisgICAgICAgIEFkZGVkIHRlc3QgY2FzZSBpbjogc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuaHRtbAorICAgICAgICBJbmRleCB1cGdyYWRlIGNv
dmVyZWQgYnkgZXhpc3RpbmcgQVBJIHRlc3Q6IEluZGV4ZWREQi5JREJPYmplY3RTdG9yZUluZm9V
cGdyYWRlVG9WMgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OmJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0
QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmZldGNoTmV4dFJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNv
cmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppc0RpcmVj
dGlvbk5leHQgY29uc3QpOgorCiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQnVnIDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFR5cGU6OnBhcnNlQ29udGVudFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGJmMzgyZTY0YWFlNjNmODU2MTY1
MzE3ZTVkNjYwZGQ4OWE0ZGY0NjUuLjNmYTEwMmRiNjU5MjgwZDdkNmEwNTBjZTFlYTdmYzQwODAy
YmZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NCw2ICs2NCw3
IEBAIGNvbnN0ZXhwciBhdXRvIG9iamVjdFN0b3JlSW5mb1RhYmxlTmFtZSA9ICJPYmplY3RTdG9y
ZUluZm8iX3M7CiBjb25zdGV4cHIgYXV0byBvYmplY3RTdG9yZUluZm9UYWJsZU5hbWVBbHRlcm5h
dGUgPSAiXCJPYmplY3RTdG9yZUluZm9cIiJfczsKIGNvbnN0ZXhwciBhdXRvIHYyT2JqZWN0U3Rv
cmVJbmZvU2NoZW1hID0gIkNSRUFURSBUQUJMRSBPYmplY3RTdG9yZUluZm8gKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
RkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZM
SUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBhdXRvSW5j
IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3M7CiBjb25zdGV4cHIgYXV0byB2
MUluZGV4UmVjb3Jkc1JlY29yZEluZGV4U2NoZW1hID0gIkNSRUFURSBJTkRFWCBJbmRleFJlY29y
ZHNSZWNvcmRJbmRleCBPTiBJbmRleFJlY29yZHMgKG9iamVjdFN0b3JlSUQsIG9iamVjdFN0b3Jl
UmVjb3JkSUQpIl9zOworY29uc3RleHByIGF1dG8gdjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSA9
ICJDUkVBVEUgSU5ERVggSW5kZXhSZWNvcmRzSW5kZXggT04gSW5kZXhSZWNvcmRzIChrZXksIHZh
bHVlKSJfczsKIAogLy8gQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtZXRhZGF0YSBzY2hlbWEgYmVp
bmcgdXNlZCBpbiB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCiBzdGF0aWMgY29uc3QgaW50IGN1cnJl
bnRNZXRhZGF0YVZlcnNpb24gPSAxOwpAQCAtNTE0LDcgKzUxNSw3IEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCkKIAogICAgICAgICAv
LyBJZiB0aGVyZSBpcyBubyBJbmRleFJlY29yZHNJbmRleCBpbmRleCBhdCBhbGwsIGNyZWF0ZSBp
dCBhbmQgdGhlbiBiYWlsLgogICAgICAgICBpZiAoc3FsaXRlUmVzdWx0ID09IFNRTElURV9ET05F
KSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKHYxSW5kZXhS
ZWNvcmRzSW5kZXhTY2hlbWEoKSkpIHsKKyAgICAgICAgICAgIGlmICghbV9zcWxpdGVEQi0+ZXhl
Y3V0ZUNvbW1hbmQodjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSkpIHsKICAgICAgICAgICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgSW5kZXhSZWNvcmRzSW5kZXggaW5kZXggaW4g
ZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREIt
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CkBAIC01MzMsMTEgKzUzNCwyNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAgICAgQVNTRVJUKCFjdXJyZW50U2NoZW1h
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBJZiB0aGUgc2NoZW1hIGluIHRoZSBiYWNraW5nIHN0b3Jl
IGlzIHRoZSBjdXJyZW50IHNjaGVtYSwgd2UncmUgZG9uZS4KLSAgICBpZiAoY3VycmVudFNjaGVt
YSA9PSB2MUluZGV4UmVjb3Jkc0luZGV4U2NoZW1hKCkpCisgICAgaWYgKGN1cnJlbnRTY2hlbWEg
PT0gdjJJbmRleFJlY29yZHNJbmRleFNjaGVtYSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gb3V0ZGF0ZWQgc2NoZW1hIGZvciB0aGUgSW5kZXhS
ZWNvcmRzSW5kZXgsIHNvIGFueSBvdGhlciBleGlzdGluZyBzY2hlbWEgbWVhbnMgdGhpcyBkYXRh
YmFzZSBpcyBpbnZhbGlkLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
dXJyZW50U2NoZW1hID09IHYxSW5kZXhSZWNvcmRzSW5kZXhTY2hlbWEoKSk7CisKKyAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CisgICAgdHJhbnNhY3Rpb24u
YmVnaW4oKTsKKworICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgSU5E
RVggSW5kZXhSZWNvcmRzSW5kZXgiKSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBk
cm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3Fs
aXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21t
YW5kKHYySW5kZXhSZWNvcmRzSW5kZXhTY2hlbWEpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBJbmRleFJlY29yZHNJbmRleCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24uY29tbWl0
KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzUmVjb3JkSW5kZXgoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cAppbmRleCAyMWRmZjg0Zjc1ZmE0YjU5NjQ1NWM2ZmU2YzZkMTU1M2E4MjlmOGEwLi5iMzc3MTcz
NzU3NGUyMjM2NjE3ZDI0ODdjNjkwZTEyMGVhZGQ3MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cApAQCAtMTE2LDYgKzExNiwyNSBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEo
SURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdAogICAgIHJlc3Vs
dCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA/ICpjdXJyZW50UmVjb3JkLnJlY29y
ZC52YWx1ZSA6IElEQlZhbHVlKCksIGtleVBhdGh9OwogfQogCitzdGF0aWMgU3RyaW5nIGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0RpcmVjdGlvbk5leHQpCit7CisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJTRUxFQ1Qgcm93aWQs
IGtleSwgdmFsdWUgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9
IENBU1QoPyBBUyBURVhUKSBBTkQgdmFsdWUgIik7CisgICAgaWYgKGlzRGlyZWN0aW9uTmV4dCkK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJz4nKTsKKyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCc8Jyk7CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVY
VCkgT1JERVIgQlkgdmFsdWUiKTsKKyAgICBpZiAoIWlzRGlyZWN0aW9uTmV4dCkKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgREVTQyIpOworCisgICAgYnVpbGRlci5hcHBlbmQoJzsn
KTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcg
YnVpbGRJbmRleFN0YXRlbWVudChjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24pCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwpAQCAtMjE4LDI4ICsyMzcsMTQgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6
Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jk
cy5pc0VtcHR5KCkpOwogCiAgICAgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzcyA9IG1fZmV0Y2hl
ZFJlY29yZHMuZmlyc3QoKS5yZWNvcmQua2V5OwotCi0gICAgaWYgKG1fY3Vyc29yRGlyZWN0aW9u
ICE9IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0dW5pcXVlICYmIG1fY3Vyc29yRGly
ZWN0aW9uICE9IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2dW5pcXVlKSB7Ci0gICAg
ICAgIGlmICghbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKQotICAg
ICAgICAgICAgZmV0Y2goU2hvdWxkRmV0Y2hGb3JTYW1lS2V5OjpZZXMpOwotCi0gICAgICAgIHdo
aWxlIChtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQua2V5ICE9IG1fZmV0Y2hlZFJlY29y
ZHMuZmlyc3QoKS5yZWNvcmQua2V5KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9mZXRjaGVkUmVj
b3Jkc1NpemUgPj0gbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkucmVjb3JkLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtX2ZldGNoZWRSZWNvcmRzU2l6ZSAtPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5y
ZWNvcmQuc2l6ZSgpOwotICAgICAgICAgICAgbV9mZXRjaGVkUmVjb3Jkcy5yZW1vdmVMYXN0KCk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtX2ZldGNoZWRSZWNvcmRzLmNsZWFy
KCk7Ci0gICAgICAgIG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKLSAgICB9CisgICAgaWYgKG1f
aW5kZXhJRCAhPSBJREJJbmRleEluZm86OkludmFsaWRJZCkKKyAgICAgICAgbV9jdXJyZW50SW5k
ZXhSZWNvcmRWYWx1ZSA9IG1fZmV0Y2hlZFJlY29yZHMuZmlyc3QoKS5yZWNvcmQucHJpbWFyeUtl
eTsKIAogICAgIC8vIElmIE9iamVjdFN0b3JlIG9yIEluZGV4IGNvbnRlbnRzIGNoYW5nZWQsIHdl
IG5lZWQgdG8gcmVzZXQgdGhlIHN0YXRlbWVudCBhbmQgYmluZCBuZXcgcGFyYW1ldGVycyB0byBp
dC4KICAgICAvLyBUaGlzIGlzIHRvIHBpY2sgdXAgYW55IGNoYW5nZXMgdGhhdCBtaWdodCBleGlz
dC4KLSAgICAvLyBXZSBhbHNvIG5lZWQgdG8gdGhyb3cgYXdheSBhbnkgZmV0Y2hlZCByZWNvcmRz
IGFzIHRoZXkgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KLQogICAgIG1fc3RhdGVtZW50TmVlZHNS
ZXNldCA9IHRydWU7CiAKLSAgICBpZiAobV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUpIHsKKyAgICBpZiAoaXNEaXJlY3Rpb25OZXh0KCkp
IHsKICAgICAgICAgbV9jdXJyZW50TG93ZXJLZXkgPSBtX2N1cnJlbnRLZXlGb3JVbmlxdWVuZXNz
OwogICAgICAgICBpZiAoIW1fa2V5UmFuZ2UubG93ZXJPcGVuKSB7CiAgICAgICAgICAgICBtX2tl
eVJhbmdlLmxvd2VyT3BlbiA9IHRydWU7CkBAIC0yNTQsNiArMjU5LDEwIEBAIHZvaWQgU1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCkKICAgICAgICAgICAgIG1fc3Rh
dGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFdlIGFsc28gbmVl
ZCB0byB0aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2Vy
IGJlIHZhbGlkLgorICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKKyAgICBtX2ZldGNoZWRS
ZWNvcmRzU2l6ZSA9IDA7CiB9CiAKIHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFN0YXRlbWVudCgpCkBAIC0zMDQsNiArMzEzLDUyIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpi
aW5kQXJndW1lbnRzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTUUxpdGVJREJDdXJz
b3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCit7CisgICAg
aWYgKG1faW5kZXhJRCA9PSBJREJJbmRleEluZm86OkludmFsaWRJZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAobV9jdXJyZW50SW5kZXhSZWNvcmRWYWx1ZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24t
PnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCk7CisgICAgaWYgKCFtX3ByZUluZGV4U3Rh
dGVtZW50KSB7CisgICAgICAgIG1fcHJlSW5kZXhTdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0
ZVN0YXRlbWVudD4oZGF0YWJhc2UsIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25O
ZXh0KCkpKTsKKworICAgICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+cHJlcGFyZSgpICE9
IFNRTElURV9PSykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHJlcGFyZSBw
cmUgc3RhdGVtZW50IC0gJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3ByZUluZGV4
U3RhdGVtZW50LT5yZXNldCgpICE9IFNRTElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZXNldCBwcmUgc3RhdGVtZW50IC0gJyVzJyIsIGRhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGF1dG8ga2V5ID0gaXNE
aXJlY3Rpb25OZXh0KCkgPyBtX2N1cnJlbnRMb3dlcktleSA6IG1fY3VycmVudFVwcGVyS2V5Owor
ICAgIGludCBjdXJyZW50QmluZEFyZ3VtZW50ID0gMTsKKworICAgIGlmIChtX3ByZUluZGV4U3Rh
dGVtZW50LT5iaW5kSW50NjQoY3VycmVudEJpbmRBcmd1bWVudCsrLCBtX2JvdW5kSUQpICE9IFNR
TElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50
IHRvIHByZSBzdGF0ZW1lbnQgKGJvdW5kIElEKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8g
cHJlIHN0YXRlbWVudCAoa2V5KSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVl
KTsKKyAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1
bWVudCsrLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSykgewor
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKHZhbHVlKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2goKSAtIEN1cnNvciBhbHJl
YWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkpOwpA
QCAtMzc0LDEzICs0MjksMTMgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmFkdmFuY2UodWludDY0
X3QgY291bnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1FMaXRlSURCQ3Vyc29yOjpm
ZXRjaChTaG91bGRGZXRjaEZvclNhbWVLZXkgc2hvdWxkRmV0Y2hGb3JTYW1lS2V5KQorYm9vbCBT
UUxpdGVJREJDdXJzb3I6OmZldGNoKCkKIHsKICAgICBBU1NFUlQobV9mZXRjaGVkUmVjb3Jkcy5p
c0VtcHR5KCkgfHwgIW1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSk7
CiAKICAgICBtX2ZldGNoZWRSZWNvcmRzLmFwcGVuZCh7IH0pOwogCi0gICAgYm9vbCBpc1VuaXF1
ZSA9IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0
dW5pcXVlIHx8IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
OjpQcmV2dW5pcXVlIHx8IHNob3VsZEZldGNoRm9yU2FtZUtleSA9PSBTaG91bGRGZXRjaEZvclNh
bWVLZXk6OlllczsKKyAgICBib29sIGlzVW5pcXVlID0gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWUgfHwgbV9jdXJzb3JEaXJlY3Rpb24g
PT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZ1bmlxdWU7CiAgICAgaWYgKCFpc1Vu
aXF1ZSkgewogICAgICAgICBib29sIGZldGNoU3VjY2VlZGVkID0gZmV0Y2hOZXh0UmVjb3JkKG1f
ZmV0Y2hlZFJlY29yZHMubGFzdCgpKTsKICAgICAgICAgaWYgKGZldGNoU3VjY2VlZGVkKQpAQCAt
Mzk3LDggKzQ1Miw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpmZXRjaChTaG91bGRGZXRjaEZv
clNhbWVLZXkgc2hvdWxkRmV0Y2hGb3JTYW1lS2V5KQogICAgICAgICBpZiAobV9mZXRjaGVkUmVj
b3Jkcy5sYXN0KCkuY29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIGlmIChzaG91bGRGZXRjaEZvclNhbWVLZXkgPT0gU2hvdWxkRmV0Y2hGb3JTYW1lS2V5OjpZ
ZXMpCi0gICAgICAgICAgICBtX2ZldGNoZWRSZWNvcmRzLmFwcGVuZCh7IH0pOworICAgICAgICBt
X2ZldGNoZWRSZWNvcmRzU2l6ZSAtPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQuc2l6
ZSgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNiw4ICs0NjAsMTAgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmZldGNoKFNob3VsZEZldGNoRm9yU2FtZUtleSBzaG91bGRGZXRj
aEZvclNhbWVLZXkpCiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpmZXRjaE5leHRSZWNvcmQoU1FM
aXRlQ3Vyc29yUmVjb3JkJiByZWNvcmQpCiB7Ci0gICAgaWYgKG1fc3RhdGVtZW50TmVlZHNSZXNl
dCkKKyAgICBpZiAobV9zdGF0ZW1lbnROZWVkc1Jlc2V0KSB7CisgICAgICAgIHJlc2V0QW5kUmVi
aW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpOwogICAgICAgICByZXNldEFuZFJlYmlu
ZFN0YXRlbWVudCgpOworICAgIH0KIAogICAgIEZldGNoUmVzdWx0IHJlc3VsdDsKICAgICBkbyB7
CkBAIC00MzQsMjYgKzQ5MCw0MCBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0
ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgcmVj
b3JkLnJlY29yZC52YWx1ZSA9IG51bGxwdHI7CiAKLSAgICBpbnQgcmVzdWx0ID0gbV9zdGF0ZW1l
bnQtPnN0ZXAoKTsKLSAgICBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgIC8v
IFdoZW4gYSBjdXJzb3IgcmVhY2hlcyBpdHMgZW5kLCB0aGF0IGlzIGluZGljYXRlZCBieSBoYXZp
bmcgdW5kZWZpbmVkIGtleXMvdmFsdWVzCi0gICAgICAgIHJlY29yZCA9IHsgfTsKLSAgICAgICAg
cmVjb3JkLmNvbXBsZXRlZCA9IHRydWU7CisgICAgYXV0byYgZGF0YWJhc2UgPSBtX3RyYW5zYWN0
aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpOworICAgIFNRTGl0ZVN0YXRlbWVu
dCogc3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OlN1
Y2Nlc3M7Ci0gICAgfQorICAgIGludCByZXN1bHQ7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQpIHsKKyAgICAgICAgQVNTRVJUKG1faW5kZXhJRCAhPSBJREJJbmRleEluZm86OkludmFsaWRJ
ZCk7CiAKLSAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJFcnJvciBhZHZhbmNpbmcgY3Vyc29yIC0gKCVpKSAlcyIsIHJlc3VsdCwgbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgIG1hcmtBc0Vycm9yZWQocmVjb3JkKTsKLSAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0OjpG
YWlsdXJlOworICAgICAgICByZXN1bHQgPSBtX3ByZUluZGV4U3RhdGVtZW50LT5zdGVwKCk7Cisg
ICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgICAgIHN0YXRlbWVudCA9
IG1fcHJlSW5kZXhTdGF0ZW1lbnQuZ2V0KCk7CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCAhPSBT
UUxJVEVfRE9ORSkKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2YW5jaW5nIHdpdGgg
cHJlIHN0YXRlbWVudCAtICglaSkgJXMiLCByZXN1bHQsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdGF0ZW1lbnQpIHsKKyAgICAgICAgcmVzdWx0ID0g
bV9zdGF0ZW1lbnQtPnN0ZXAoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkg
eworICAgICAgICAgICAgcmVjb3JkID0geyB9OworICAgICAgICAgICAgcmVjb3JkLmNvbXBsZXRl
ZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OlN1Y2Nlc3M7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICBM
T0dfRVJST1IoIkVycm9yIGFkdmFuY2luZyBjdXJzb3IgLSAoJWkpICVzIiwgcmVzdWx0LCBkYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBtYXJrQXNFcnJvcmVkKHJlY29yZCk7
CisgICAgICAgICAgICByZXR1cm4gRmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CisgICAgICAgIH0KKyAg
ICAgICAgc3RhdGVtZW50ID0gbV9zdGF0ZW1lbnQuZ2V0KCk7CiAgICAgfQogCi0gICAgcmVjb3Jk
LnJvd0lEID0gbV9zdGF0ZW1lbnQtPmdldENvbHVtbkludDY0KDApOworICAgIHJlY29yZC5yb3dJ
RCA9IHN0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7CiAgICAgQVNTRVJUKHJlY29yZC5yb3dJ
RCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4ga2V5RGF0YTsKLSAgICBtX3N0YXRlbWVudC0+Z2V0
Q29sdW1uQmxvYkFzVmVjdG9yKDEsIGtleURhdGEpOworICAgIHN0YXRlbWVudC0+Z2V0Q29sdW1u
QmxvYkFzVmVjdG9yKDEsIGtleURhdGEpOwogCiAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLmtleSkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBk
YXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgY3Vyc29yIik7CkBAIC00NjEsNyArNTMxLDcgQEAgU1FM
aXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hO
ZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgcmV0dXJuIEZldGNoUmVzdWx0OjpGYWlsdXJl
OwogICAgIH0KIAotICAgIG1fc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5
RGF0YSk7CisgICAgc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5RGF0YSk7
CiAKICAgICAvLyBUaGUgcHJpbWFyeUtleSBvZiBhbiBPYmplY3RTdG9yZSBjdXJzb3IgaXMgdGhl
IHNhbWUgYXMgaXRzIGtleS4KICAgICBpZiAobV9pbmRleElEID09IElEQkluZGV4SW5mbzo6SW52
YWxpZElkKSB7CkBAIC00ODUsNyArNTU1LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3Vs
dCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudCB8fCBt
X2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5yZXNldCgpICE9IFNRTElURV9PSykgewotICAg
ICAgICAgICAgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRl
U3RhdGVtZW50PihtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKSwgIlNFTEVDVCB2YWx1ZSBGUk9NIFJl
Y29yZHMgV0hFUkUga2V5ID0gQ0FTVCg/IEFTIFRFWFQpIGFuZCBvYmplY3RTdG9yZUlEID0gPzsi
KTsKKyAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQgPSBtYWtlVW5pcXVl
PFNRTGl0ZVN0YXRlbWVudD4oZGF0YWJhc2UsICJTRUxFQ1QgdmFsdWUgRlJPTSBSZWNvcmRzIFdI
RVJFIGtleSA9IENBU1QoPyBBUyBURVhUKSBhbmQgb2JqZWN0U3RvcmVJRCA9ID87Iik7CiAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNR
TElURV9PSykKICAgICAgICAgICAgICAgICBtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50ID0g
bnVsbHB0cjsKICAgICAgICAgfQpAQCAtNDkzLDcgKzU2Myw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6
RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxp
dGVDdXJzCiAgICAgICAgIGlmICghbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudAogICAgICAg
ICAgICAgfHwgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+YmluZEJsb2IoMSwga2V5RGF0
YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IG1f
Y2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgyLCBtX29iamVjdFN0b3JlSUQp
ICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3JkcyAoJWkpICcl
cyciLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9zdGF0ZW1lbnQtPmRh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgY3JlYXRlIGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3Jk
cyAoJWkpICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwogICAgICAgICAgICAgcmV0
dXJuIEZldGNoUmVzdWx0OjpGYWlsdXJlOwogICAgICAgICB9CkBAIC01MDgsNyArNTc4LDcgQEAg
U1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0
Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgICAgIC8vIFNraXAgb3ZlciBpdC4KICAg
ICAgICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6U2hvdWxkRmV0Y2hBZ2FpbjsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHN0ZXAgaW5kZXggY3Vy
c29yIHN0YXRlbWVudCBpbnRvIG9iamVjdCBzdG9yZSByZWNvcmRzICglaSkgJyVzJyIsIG1fc3Rh
dGVtZW50LT5kYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzdGVwIGlu
ZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3JkcyAoJWkpICclcyci
LCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwogICAgICAgICAgICAgcmV0dXJuIEZldGNoUmVz
dWx0OjpGYWlsdXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggMzU0Njg0ZWI5NWFhYjU5YzMx
NjkzMzYwNzhhZDdjYmExZDIwOTdmOC4uZDgxZGZiNWMzZDk1MTEwYmEzYzJkMWU5M2I2NjMxMmMw
MmQzNjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNDQsOCArNDQsNiBAQCBjbGFzcyBJREJH
ZXRSZXN1bHQ7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1lbnVtIGNsYXNzIFNob3VsZEZl
dGNoRm9yU2FtZUtleSA6IGJvb2wgeyBObywgWWVzIH07Ci0KIGNsYXNzIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uOwogCiBjbGFzcyBTUUxpdGVJREJDdXJzb3IgewpAQCAtODYsNiArODQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKTsK
ICAgICBib29sIGJpbmRBcmd1bWVudHMoKTsKIAorICAgIGJvb2wgcmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCByZXNldEFuZFJlYmluZFN0YXRl
bWVudCgpOwogCiAgICAgZW51bSBjbGFzcyBGZXRjaFJlc3VsdCB7CkBAIC05NCw3ICs5Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFNob3VsZEZldGNoQWdhaW4KICAgICB9OwogCi0gICAgYm9vbCBm
ZXRjaChTaG91bGRGZXRjaEZvclNhbWVLZXkgPSBTaG91bGRGZXRjaEZvclNhbWVLZXk6Ok5vKTsK
KyAgICBib29sIGZldGNoKCk7CiAKICAgICBzdHJ1Y3QgU1FMaXRlQ3Vyc29yUmVjb3JkIHsKICAg
ICAgICAgSURCQ3Vyc29yUmVjb3JkIHJlY29yZDsKQEAgLTEwOCw2ICsxMDcsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtYXJrQXNFcnJvcmVkKFNRTGl0ZUN1cnNvclJlY29yZCYpOwogCisgICAg
Ym9vbCBpc0RpcmVjdGlvbk5leHQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvckRpcmVjdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZTsgfQorCiAgICAgU1FMaXRl
SURCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVy
IG1fY3Vyc29ySWRlbnRpZmllcjsKICAgICBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJRDsKQEAgLTEx
OCwxMSArMTE5LDEzIEBAIHByaXZhdGU6CiAKICAgICBJREJLZXlEYXRhIG1fY3VycmVudExvd2Vy
S2V5OwogICAgIElEQktleURhdGEgbV9jdXJyZW50VXBwZXJLZXk7CisgICAgSURCS2V5RGF0YSBt
X2N1cnJlbnRJbmRleFJlY29yZFZhbHVlOwogCiAgICAgRGVxdWU8U1FMaXRlQ3Vyc29yUmVjb3Jk
PiBtX2ZldGNoZWRSZWNvcmRzOwogICAgIHVpbnQ2NF90IG1fZmV0Y2hlZFJlY29yZHNTaXplIHsg
MCB9OwogICAgIElEQktleURhdGEgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzczsKIAorICAgIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IG1fcHJlSW5kZXhTdGF0ZW1lbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudDsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDg3MTQwZTFhNjYzN2NlZDJhZDk1OTEzZTI2NzI1NzlhYjk5NTA1YzguLmE3YmZm
MGJmYzIzZjljMmViMGM4YjBlMWVlMjFmOWM3ZmZkM2NjZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMC0wMi0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmRleGVkREI6IGl0ZXJhdGlvbiBvZiBjdXJzb3JzIHNraXAgcmVjb3JkcyBpZiBkZWxldGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtd2hpbGUt
aXRlcmF0aW5nLmpzOgorICAgICAgICAocG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChv
bk9wZW5TdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9uT3BlblN1Y2Nlc3Mp
OgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKTogRGVsZXRlZC4KKwogMjAyMC0wMi0xMSAgSmFz
b24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyB3azIg
XSB3ZWJncHUvd2hsc2wvZG8td2hpbGUtbG9vcC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXdoaWxl
LWl0ZXJhdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy1leHBlY3RlZC50eHQKaW5kZXggYThhOTZlOTJl
ZGY2NDBkYzIwNGQxMzUyZTFlZTQ4ZGE5YjdhODJkNy4uMDYwZGFiYmQ4MzNhZTEwMGYzYTUwZmJj
MDBkNmY4MTMwOTIyMDcyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0aW5nLWV4
cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBpbmRleGVkREIub3BlbihkYm5hbWUpCiBwcmVw
YXJlRGF0YWJhc2UoKToKIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAogRGVsZXRlZCBhbGwgb2Jq
ZWN0IHN0b3Jlcy4KLW9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0
b3JlJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnb2JqZWN0U3RvcmUnKQogb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2tleScsICdr
ZXknLCB7dW5pcXVlOiBmYWxzZX0pCiAKIG9uT3BlblN1Y2Nlc3MoKToKQEAgLTQwLDcgKzQwLDEx
IEBAIFBBU1MgSlNPTi5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSBpcyAie1wia2V5XCI6XCJrZXky
XCIsXCJ2YWx1ZVwiOlwidmFsdWU0XCJ9IgogRGVsZXRlIGN1cnNvcgogQ3Vyc29yIGNvbnRpbnVl
cwogCi1QQVNTIFN1Y2Nlc3NmdWxseSBpdGVyYXRlZCB3aG9sZSBhcnJheSB3aXRoIGN1cnNvciB1
cGRhdGVzLgorUEFTUyBKU09OLnN0cmluZ2lmeShjdXJzb3IudmFsdWUpIGlzICJ7XCJrZXlcIjpc
ImtleTNcIixcInZhbHVlXCI6XCJ2YWx1ZTVcIn0iCitEZWxldGUgbGFzdCByZWNvcmQKK0N1cnNv
ciBjb250aW51ZXMKKworUEFTUyB0b3RhbFJlY29yZENvdW50IGlzIDYKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtd2hpbGUtaXRlcmF0
aW5nLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11
cGRhdGUtd2hpbGUtaXRlcmF0aW5nLmpzCmluZGV4IDQ4YmQ5MGIwMDBlNGU4MzY3ZjExZTZhMDgw
OWJlZGJlOGNhNTUzNGQuLjk3ZTYyZDgxM2FiNDEwODc3MTY4NWE3OTZmMzA4ODg2NDAyMmUxNTUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItdXBkYXRlLXdoaWxlLWl0ZXJhdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS13aGlsZS1pdGVyYXRpbmcuanMKQEAgLTEy
LDEyICsxMiwxNSBAQCBjb25zdCBvYmplY3RBcnJheSA9IFsKICAgICB7IGtleTogImtleTEiLCB2
YWx1ZTogInZhbHVlMSIgfSwKICAgICB7IGtleTogImtleTEiLCB2YWx1ZTogInZhbHVlMyIgfSwK
ICAgICB7IGtleTogImtleTIiLCB2YWx1ZTogInZhbHVlMiIgfSwKLSAgICB7IGtleTogImtleTIi
LCB2YWx1ZTogInZhbHVlNCIgfQorICAgIHsga2V5OiAia2V5MiIsIHZhbHVlOiAidmFsdWU0IiB9
LAorCXsga2V5OiAia2V5MyIsIHZhbHVlOiAidmFsdWU1IiB9LAorCXsga2V5OiAia2V5MyIsIHZh
bHVlOiAidmFsdWU2IiB9LAogXTsKIAogZnVuY3Rpb24gcG9wdWxhdGVPYmplY3RTdG9yZSgpIHsK
LSAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqZWN0QXJyYXkpCi0gICAgICAgIG9iamVjdFN0b3Jl
LmFkZChvYmplY3QpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvYmpl
Y3RBcnJheS5mb3JFYWNoKChvYmplY3QsIGkpPT57CisgICAgICAgIG9iamVjdFN0b3JlLmFkZChv
YmplY3QsIGkpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKwl9KTsKIH0KIAog
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQpAQCAtMjYsNyArMjksNyBAQCBmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoZXZlbnQpCiAgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CiAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKIAotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
b2JqZWN0U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RT
dG9yZScpIik7CiAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2tleScs
ICdrZXknLCB7dW5pcXVlOiBmYWxzZX0pIik7CiAKICAgICBwb3B1bGF0ZU9iamVjdFN0b3JlKCk7
CkBAIC00MywyOCArNDYsMzAgQEAgZnVuY3Rpb24gb25PcGVuU3VjY2VzcyhldmVudCkKICAgICBl
dmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KCdrZXknKSIpOwogICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleC5vcGVuQ3Vyc29yKCkiKTsKIAotICAgIHZhciBuID0gMDsK
KyAgICB0b3RhbFJlY29yZENvdW50ID0gMDsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAg
ICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNP
Ti5zdHJpbmdpZnkoY3Vyc29yLnZhbHVlKSIsIEpTT04uc3RyaW5naWZ5KG9iamVjdEFycmF5W24r
K10pKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiSlNPTi5zdHJpbmdpZnko
Y3Vyc29yLnZhbHVlKSIsIEpTT04uc3RyaW5naWZ5KG9iamVjdEFycmF5W3RvdGFsUmVjb3JkQ291
bnQrK10pKTsKIAogICAgICAgICAgICAgaWYgKGN1cnNvci5rZXkgPT0gImtleTEiKSB7CiAgICAg
ICAgICAgICAgICAgZGVidWcoIlVwZGF0ZSBjdXJzb3IiKTsKICAgICAgICAgICAgICAgICBjb25z
dCB7dmFsdWV9ID0gY3Vyc29yOwogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUodmFsdWUp
OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChj
dXJzb3Iua2V5ID09ICJrZXkyIikgewogICAgICAgICAgICAgICAgIGRlYnVnKCJEZWxldGUgY3Vy
c29yIik7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGN1cnNvci5rZXkgPT0gImtleTMiKSB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIkRlbGV0ZSBsYXN0IHJlY29yZCIpOworICAgICAgICAgICAgICAgIG9iamVjdFN0b3Jl
LmRlbGV0ZSg2KTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVidWcoIkN1cnNvciBj
b250aW51ZXNcbiIpOwogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAobiAhPSBvYmplY3RBcnJheS5sZW5ndGgpCi0gICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZG4ndCBnbyB0aHJvdWdoIHdob2xlIGFycmF5
LiIpOwotICAgICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNj
ZXNzZnVsbHkgaXRlcmF0ZWQgd2hvbGUgYXJyYXkgd2l0aCBjdXJzb3IgdXBkYXRlcy4iKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb051bWJlcigidG90YWxSZWNvcmRDb3VudCIsIG9iamVj
dEFycmF5Lmxlbmd0aCAtIDEpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390552</attachid>
            <date>2020-02-12 13:40:40 -0800</date>
            <delta_ts>2020-02-12 13:42:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207437-20200212134039.patch</filename>
            <type>text/plain</type>
            <size>56556</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4NTMxMWM5OGU5NmMz
Mzk5OTdhNWM4NDFmMmFkZjRmNjgzNGQwYS4uZmI5ZmE4ZjFmOTFiODQ0OTI1ZGZiZTJhYjEwMDIy
YTM3NjAwYWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IGl0ZXJh
dGlvbiBvZiBjdXJzb3JzIHNraXAgcmVjb3JkcyBpZiBkZWxldGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc0MzcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU5MzcwNDM5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2Ug
dGhvc2UgcmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6
c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJhdGlvbiB0aGF0
IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0ZXJhdGVXaXRo
UHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3JkcyBmb3IgaXRl
cmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBvcGVyYXRpb24g
YmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24gb3BlcmF0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRSZWNvcmRzKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJH
ZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklEQkdldFJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRSZWNvcmRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGluZyBUcmFuc2Fj
dGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVuZGluZ0N1cnNv
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFuc2FjdGlvbk9w
ZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVkIHdpdGggY2Fj
aGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2VuZCByZXF1ZXN0
IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0cyBiZWZvcmUg
dGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNlcnZlciB0byBh
bnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBvcmRlci4gVGhl
cmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGluIG1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFjY29yZGluZyB0
byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9n
cmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0SW5Qcm9n
cmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbW92
ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNhbiBiZSBhbnN3
ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZpbmlzaGVkRGlz
cGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QsIHdoaWNo
IGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0ciwgYW5kIHRo
ZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRsZU9wZXJhdGlv
bnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBkaXNwYXRjaEV2
ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCByZW1vdmUgaXRz
ZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0
cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVjb21lcyBlbXB0
eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0aGF0IHJlcXVl
c3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCBhbmQgc2hv
dWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNj
aGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVy
YXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVlc3RzIHdlcmUg
c2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1bHQgb3JkZXIg
d291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5vdyB0aGF0IHNv
bWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ugbm8gbG9uZ2Vy
IGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBNYXJrIGFzIHdy
aXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JB
ZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmpl
Y3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0
ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0
ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhlIHJlcXVlc3Qg
ZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3IgaXMgaXRlcmF0
ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElEQlNlcnZlciB0
byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBuZWVkIGl0IHRv
IHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2VydmVyIHRvIGFu
c3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZW5l
cmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5pcXVlIGluIGEg
dHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOiAKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29y
KTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIsIGRvbid0Cisg
ICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJh
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklEIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5z
YWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlzIG5vdCB1c2Vk
IG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRoIHByZWZldGNo
aW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxs
SW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJlZmV0Y2ggYXQg
d2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hlZCByZWNvcmRz
IGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29y
OjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJlZmV0Y2ggd2hl
biB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBhZGFwdGl2ZS4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpvYmplY3RTdG9y
ZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291bnQgdG8gcHJl
ZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0byBTUUxpdGVJ
REJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRl
Q3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JS
ZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2llciBlbmNvZGlu
ZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNvcmQ6OnNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkg
Y29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVD
dXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJTZXJ2ZXIga25v
dyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciByZXF1ZXN0LiAK
KyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6CisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDItMTIgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbmFt
ZSBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHRvIFRleHRDb250ZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCAzNjhlZGMyMDQ4M2I1
NDFhY2Q3YjNiZjU5YmY1Y2YxN2ExYzkzYTBiLi42NWI4OWI1ODViNWNlYWZhZmY5YzcwMTBmMDE5
ZjU1YTE1ZTQ2YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6
SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmCiAg
ICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLWJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURC
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCitib29sIElE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJl
c3VsdCYgZ2V0UmVzdWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3Vs
dC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRh
KCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVm
ZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpKSk7CkBAIC0zNDksNiArMzQ5LDEzIEBAIGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQo
SURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiAgICAg
ICAgIG1fa2V5UGF0aCA9IGdldFJlc3VsdC5rZXlQYXRoKCk7CiAgICAgfQogCisgICAgYXV0byBw
cmVmZXRjaGVkUmVjb3JkcyA9IGdldFJlc3VsdC5wcmVmZXRjaGVkUmVjb3JkcygpOworICAgIGlm
ICghcHJlZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVj
b3JkIDogcHJlZmV0Y2hlZFJlY29yZHMpCisgICAgICAgICAgICBtX3ByZWZldGNoZWRSZWNvcmRz
LmFwcGVuZChyZWNvcmQpOworICAgICAgICBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPSBvcGVyYXRp
b25JRDsKKyAgICB9CisKICAgICBtX2dvdFZhbHVlID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTM2MCw2ICszNjcsMjYgQEAgdm9pZCBJREJDdXJzb3I6OmNsZWFyV3JhcHBlcnMoKQog
ICAgIG1fdmFsdWVXcmFwcGVyLmNsZWFyKCk7CiB9CiAKK09wdGlvbmFsPElEQkdldFJlc3VsdD4g
SURCQ3Vyc29yOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1
aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCkKK3sKKyAgICB1bnNpZ25lZCBzdGVwID0gY291
bnQgPiAwID8gY291bnQgOiAxOworICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5z
aXplKCkgfHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgd2hpbGUgKC0tc3RlcCkKKyAgICAg
ICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5yZW1vdmVGaXJzdCgpOworCisgICAgYXV0byByZWNvcmQg
PSBtX3ByZWZldGNoZWRSZWNvcmRzLnRha2VGaXJzdCgpOworCisgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzIGNvbnN1bWVzICV1
IHJlY29yZHMiLCBjb3VudCA+IDAgPyBjb3VudCA6IDEpOworICAgIHJldHVybiBJREJHZXRSZXN1
bHQocmVjb3JkLmtleSwgcmVjb3JkLnByaW1hcnlLZXksIElEQlZhbHVlKHJlY29yZC52YWx1ZSks
IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkua2V5UGF0aCgpKTsKK30KKwordm9pZCBJREJDdXJzb3I6
OmNsZWFyUHJlZmV0Y2hlZFJlY29yZHMoKQoreworICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMuY2xl
YXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oCmluZGV4IDQ2MjJlNzAzMzQ0YjM2MDgwYTcxZGVhMzJkZjhhNTMxZGNmYzU4YWMuLjdi
YzhmOGMwMTdkZjUwZDI2Zjk5YTRiYTNiNDMyOWFlYjY3NWY4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC04MSwxMCArODEsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJXcmFwcGVycygpOwogICAgIElEQlJlcXVlc3QqIHJlcXVlc3Qo
KSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0KCk7IH0KIAotICAgIGJvb2wgc2V0R2V0UmVzdWx0KElE
QlJlcXVlc3QmLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKKyAgICBib29sIHNldEdldFJlc3VsdChJ
REJSZXF1ZXN0JiwgY29uc3QgSURCR2V0UmVzdWx0JiwgdWludDY0X3Qgb3BlcmF0aW9uSUQpOwog
CiAgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yV2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIE9wdGlvbmFsPElEQkdldFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRj
aGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQp
OworICAgIHZvaWQgY2xlYXJQcmVmZXRjaGVkUmVjb3JkcygpOworCiBwcm90ZWN0ZWQ6CiAgICAg
SURCQ3Vyc29yKElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIElE
QkN1cnNvcihJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKQEAgLTExMyw2ICsxMTYs
OSBAQCBwcml2YXRlOgogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwog
ICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKICAgICBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0IG1fdmFsdWVXcmFwcGVyOworCisgICAgRGVxdWU8SURCQ3Vyc29y
UmVjb3JkPiBtX3ByZWZldGNoZWRSZWNvcmRzOworICAgIHVpbnQ2NF90IG1fcHJlZmV0Y2hPcGVy
YXRpb25JRCB7IDAgfTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKaW5kZXggOTQ5ZTgxMzM5N2YzMWJmMThlNjViYmM1NTgy
MTJkMDg4MTZjMDZmZi4uMTJlYzg3MDczMjk3MDFhNGNhMzUwMTJkZTUyYmZiMTI3MzUyOWI2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
Y3BwCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29u
c3QgSURCR2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGlu
YXRpb24ubV9wcmltYXJ5S2V5RGF0YSA9IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVk
Q29weSgpOwogICAgIGRlc3RpbmF0aW9uLm1fa2V5UGF0aCA9IFdlYkNvcmU6Omlzb2xhdGVkQ29w
eShzb3VyY2UubV9rZXlQYXRoKTsKICAgICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJj
ZS5tX2lzRGVmaW5lZDsKKyAgICBkZXN0aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291
cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIHZvaWQgSURCR2V0
UmVzdWx0OjpzZXRWYWx1ZShJREJWYWx1ZSYmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAppbmRleCBlODdjMzkwMTIzMzQ5ZDExNTNk
MWZjMDhjOWU2YjJiZjc0NTFiMjUzLi5kMDNkODliYWMyNDgyY2Q4MzEyMzhhZjNkMjI5MGY1NmY5
M2E5NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRS
ZXN1bHQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKKyNpbmNsdWRlICJJREJDdXJzb3JSZWNvcmQuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNp
bmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgpAQCAtNzYsNiAr
NzcsMTUgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBJREJHZXRSZXN1bHQoY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElE
QlZhbHVlJiYgdmFsdWUsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBWZWN0
b3I8SURCQ3Vyc29yUmVjb3JkPiYmIHByZWZldGVjaGVkUmVjb3JkcykKKyAgICAgICAgOiBtX3Zh
bHVlKFdURk1vdmUodmFsdWUpKQorICAgICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQorICAgICAg
ICAsIG1fcHJpbWFyeUtleURhdGEocHJpbWFyeUtleURhdGEpCisgICAgICAgICwgbV9rZXlQYXRo
KGtleVBhdGgpCisgICAgICAgICwgbV9wcmVmZXRjaGVkUmVjb3JkcyhXVEZNb3ZlKHByZWZldGVj
aGVkUmVjb3JkcykpCisgICAgeworICAgIH0KKwogICAgIGVudW0gSXNvbGF0ZWRDb3B5VGFnIHsg
SXNvbGF0ZWRDb3B5IH07CiAgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYsIElz
b2xhdGVkQ29weVRhZyk7CiAKQEAgLTg3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElE
QktleURhdGEmIGtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX2tleURhdGE7IH0KICAgICBjb25z
dCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtl
eURhdGE7IH0KICAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+
JiBwcmVmZXRjaGVkUmVjb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmV0Y2hlZFJlY29yZHM7
IH0KICAgICBib29sIGlzRGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWZpbmVkOyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CkBAIC0xMDEsMTMgKzExMiwxNCBAQCBwcml2YXRlOgogICAgIElEQktleURhdGEgbV9rZXlEYXRh
OwogICAgIElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKICAgICBPcHRpb25hbDxJREJLZXlQ
YXRoPiBtX2tleVBhdGg7CisgICAgVmVjdG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVk
UmVjb3JkczsKICAgICBib29sIG1faXNEZWZpbmVkIHsgdHJ1ZSB9OwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgSURCR2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1fa2V5RGF0YSA8PCBtX3ByaW1hcnlLZXlEYXRh
IDw8IG1fa2V5UGF0aCA8PCBtX2lzRGVmaW5lZCA8PCBtX3ZhbHVlOworICAgIGVuY29kZXIgPDwg
bV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtleURhdGEgPDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVk
IDw8IG1fdmFsdWUgPDwgbV9wcmVmZXRjaGVkUmVjb3JkczsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KQEAgLTEzNyw2ICsxNDksMTIgQEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBJREJHZXRSZXN1bHQmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJlc3VsdC5tX3ZhbHVlID0gV1RGTW92ZSgqdmFsdWUpOwogCisgICAgT3B0aW9u
YWw8VmVjdG9yPElEQkN1cnNvclJlY29yZD4+IHByZWZldGNoZWRSZWNvcmRzOworICAgIGRlY29k
ZXIgPj4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3JkcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tX3ByZWZldGNoZWRSZWNvcmRzID0gV1RG
TW92ZSgqcHJlZmV0Y2hlZFJlY29yZHMpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMzBm
NmU1Y2RmNGQ5ZmRiYzYxY2UzYTIwM2M0YWQwNjNiZDhjNTJiMy4uM2QwMjExOWM3YTUxZTFlMWZj
YTBlYTJlZDRjOWQyNWU4NzVlMDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIElEQlJlcXVl
c3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKICAgICBtX3Jlc3VsdFdyYXBwZXIgPSB7IH07CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBl
KCkgPT0gSURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50
eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MpIHsKLSAgICAgICAgaWYg
KG1fcGVuZGluZ0N1cnNvci0+c2V0R2V0UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3Vs
dCgpKSAmJiBtX2N1cnNvcldyYXBwZXIpCisgICAgICAgIGlmIChtX3BlbmRpbmdDdXJzb3ItPnNl
dEdldFJlc3VsdCgqdGhpcywgcmVzdWx0RGF0YS5nZXRSZXN1bHQoKSwgbV9jdXJyZW50VHJhbnNh
Y3Rpb25PcGVyYXRpb25JRCkgJiYgbV9jdXJzb3JXcmFwcGVyKQogICAgICAgICAgICAgbV9yZXN1
bHRXcmFwcGVyID0gbV9jdXJzb3JXcmFwcGVyOwogICAgICAgICBpZiAocmVzdWx0RGF0YS5nZXRS
ZXN1bHQoKS5pc0RlZmluZWQoKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gbV9wZW5kaW5nQ3Vy
c29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmlu
ZGV4IDI3ODUwMWJhNjBlOWRlMDMwMjgxZDhjYjJmMTEwNjc4YjBjOWI4YjMuLjI4NjYxMzQ0YjBk
ZTIxNzZmNWJlYWMzNjEzMTU0MGYxMjU2ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImKTsKICAgICB2b2lkIGRpZE9wZW5P
ckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCi0gICAgY29uc3QgSURCQ3Vy
c29yKiBwZW5kaW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yLmdldCgp
OyB9CisgICAgSURCQ3Vyc29yKiBwZW5kaW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5k
aW5nQ3Vyc29yID8gbV9wZW5kaW5nQ3Vyc29yLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgdm9p
ZCBzZXRTb3VyY2UoSURCQ3Vyc29yJik7CiAgICAgdm9pZCBzZXRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRU
cmFuc2FjdGlvbk9wZXJhdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQpIHsg
bV9jdXJyZW50VHJhbnNhY3Rpb25PcGVyYXRpb25JRCA9IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQ7
IH0KKwogcHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Jik7CiAKQEAgLTE5MSw2ICsxOTMsOCBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX2Rpc3BhdGNoaW5nRXZlbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNVbmNhdWdodEV4Y2VwdGlvbiB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX2N1
cnJlbnRUcmFuc2FjdGlvbk9wZXJhdGlvbklEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDQ3ZjJjYjBlNWZmNjNjODQ5YTk5MmNkOGRmN2M3YWQyOWQzMDE3
MmQuLjhkZGYyMDc5YWY5NTQwMmIwYTQzNDBjYzI3OWU5NGI5NzUxZmEzMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI3MiwxNSArMjcyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRJblByb2dyZXNzT3Bl
cmF0aW9ucyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiAgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21w
bGV0ZShJREJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3Ip
KTsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24+PiBjb21wbGV0ZWRPblNlcnZlckFib3J0VmVjdG9yOwotICAgIGNvbXBsZXRlZE9uU2Vy
dmVyQWJvcnRWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NvbXBsZXRlZE9uU2VydmVy
UXVldWUuc2l6ZSgpKTsKLSAgICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0Vt
cHR5KCkpCi0gICAgICAgIGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IudW5jaGVja2VkQXBw
ZW5kKG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKS5maXJzdCk7Ci0KLSAgICBm
b3IgKGF1dG8mIG9wZXJhdGlvbiA6IGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IpIHsKLSAg
ICAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIG9w
ZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50
aWZpZXIoKSwgZXJyb3IpKTsKLSAgICB9CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3Vs
dE1hcC5jbGVhcigpOwogCiAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxw
dHI7CiAgICAgY29ubmVjdGlvblByb3h5KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhpblByb2dy
ZXNzQWJvcnRWZWN0b3IpOwpAQCAtMzc2LDE2ICszNjgsMjIgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6YWRkUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjYW5DdXJy
ZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KSk7CisgICAgaWYgKG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpCisg
ICAgICAgIHJldHVybjsKKwogICAgIG1fb3BlblJlcXVlc3RzLnJlbW92ZSgmcmVxdWVzdCk7CiAK
ICAgICBhdXRvQ29tbWl0KCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3Bl
cmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikK
K3ZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbiwgSXNXcml0ZU9wZXJhdGlvbiBpc1dyaXRl
T3BlcmF0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250
YWlucyhvcGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAK
KyAgICBpZiAoaXNXcml0ZU9wZXJhdGlvbiA9PSBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpCisgICAg
ICAgIG1fbGFzdFdyaXRlT3BlcmF0aW9uSUQgPSBvcGVyYXRpb24tPm9wZXJhdGlvbklEKCk7CisK
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBvcGVyYXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBtX3Bl
bmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigp
KTsKICAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3Zl
KG9wZXJhdGlvbikpOwpAQCAtMzk4LDcgKzM5NiwxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpv
cGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJD
bAogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nl
c3NUaHJlYWRMb2NhbERhdGEob3BlcmF0aW9uLm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBtX2Nv
bXBsZXRlZE9uU2VydmVyUXVldWUuYXBwZW5kKHsgJm9wZXJhdGlvbiwgZGF0YSB9KTsKKyAgICBp
ZiAoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLmlkZW50aWZp
ZXIoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1
bHRNYXAuc2V0KCZvcGVyYXRpb24sIElEQlJlc3VsdERhdGEoZGF0YSkpOwogCiAgICAgaWYgKCFt
X2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KQogICAgICAgICBoYW5kbGVPcGVyYXRpb25zQ29t
cGxldGVkT25TZXJ2ZXIoKTsKQEAgLTQwNiwxMiArNDA3LDE1IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEs
IElEQkNsCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRP
blNlcnZlcigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21wbGV0
ZWRPcGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlciIpOwogICAg
IEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1
ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpIHsKLSAgICAgICAg
YXV0byBpdGVyYXRvciA9IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAg
ICAgICAgaXRlcmF0b3IuZmlyc3QtPmRvQ29tcGxldGUoaXRlcmF0b3Iuc2Vjb25kKTsKKyAgICB3
aGlsZSAoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmlzRW1wdHkoKSAm
JiAhbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkgeworICAgICAgICBSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3VycmVudE9wZXJhdGlvbiA9IG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCk7CisgICAgICAgIGlmICghbV90cmFu
c2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC5jb250YWlucyhjdXJyZW50T3BlcmF0aW9uKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjdXJyZW50T3BlcmF0aW9uLT5kb0NvbXBsZXRl
KG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAudGFrZShjdXJyZW50T3BlcmF0aW9uKSk7
CiAgICAgfQogfQogCkBAIC02MjIsNyArNjI2LDcgQEAgUmVmPElEQk9iamVjdFN0b3JlPiBJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJgog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3Vs
dCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGluZm8u
aXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsK
KyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiAqcmF3T2JqZWN0
U3RvcmU7CiB9CkBAIC02NjQsNyArNjY4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1l
T2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcKICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQp
OwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRp
b24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAg
IH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3Rv
cmVzLnNldChuZXdOYW1lLCBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9y
ZS5pbmZvKCkubmFtZSgpKSk7CiB9CkBAIC02OTksNyArNzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihy
ZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZm8gPSBp
bmZvLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKLSAgICB9KSk7Cisg
ICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
REJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwog
fQpAQCAtNzUzLDcgKzc1Nyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElE
QkluZGV4JiBpbmRleCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaWRSZW5hbWVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZp
ZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJlbmFtZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkp
OworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
dWludDY0X3QmIGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQpAQCAtODUy
LDcgKzg1NiwyMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcgogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJU
KGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkpKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uLmlkYlJlcXVlc3QoKSk7CiAKKyAgICBh
dXRvKiBjdXJzb3IgPSBvcGVyYXRpb24uaWRiUmVxdWVzdCgpLT5wZW5kaW5nQ3Vyc29yKCk7Cisg
ICAgQVNTRVJUKGN1cnNvcik7CisKKyAgICBpZiAoZGF0YS5rZXlEYXRhLmlzTnVsbCgpICYmIGRh
dGEucHJpbWFyeUtleURhdGEuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZ2V0UmVzdWx0
ID0gY3Vyc29yLT5pdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKGRhdGEuY291bnQsIG1fbGFz
dFdyaXRlT3BlcmF0aW9uSUQpKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3Vs
dERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKG9wZXJhdGlvbi5pZGVudGlmaWVyKCksIGdldFJl
c3VsdC52YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgp
Lml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCB7IGRhdGEua2V5RGF0YSwgZGF0YS5wcmltYXJ5S2V5
RGF0YSwgZGF0YS5jb3VudCwgSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJl
cGx5IH0pOworICAgICAgICAgICAgb3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIocmVzdWx0LCBv
cGVyYXRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
Y3Vyc29yLT5jbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CisKKyAgICBBU1NFUlQoZGF0YS5vcHRp
b24gPT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpSZXBseSk7CiAgICAgbV9kYXRh
YmFzZS0+Y29ubmVjdGlvblByb3h5KCkuaXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIGRhdGEpOwog
fQogCkBAIC0xMTI2LDcgKzExNDYsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3REZWxldGVSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYgogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVSZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCBy
ZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJhbmdlID0g
cmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGVsZXRlUmVjb3JkT25TZXJ2ZXIob3BlcmF0aW9uLCByYW5nZSk7Ci0gICAgfSkp
OworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogICAgIHJldHVybiByZXF1ZXN0Owog
fQogCkBAIC0xMTY1LDcgKzExODUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSQogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQo
KSwgcmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXJdIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEyMDUsNyArMTIyNSw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwg
SURCT2JqZWN0CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFB1dE9yQWRkT25TZXJ2ZXIocmVx
dWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBrZXksIHZhbHVlID0gbWFrZVJlZih2YWx1ZSksIG92ZXJ3cml0ZU1vZGVdIChhdXRvJiBv
cGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHV0T3JBZGRPblNlcnZlcihvcGVy
YXRpb24sIGtleS5nZXQoKSwgdmFsdWUucHRyKCksIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pKTsK
KyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiByZXF1ZXN0Owog
fQpAQCAtMTI5Myw3ICsxMzEzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5h
bWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFt
ZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUpCkBAIC0xMzIzLDcgKzEzNDMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRl
eCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxldGVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKLSAgICB9KSk7CisgICAgfSksIElzV3Jp
dGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25z
dCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSkKQEAgLTE0NzQsNiArMTQ5NCwxMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphdXRvQ29tbWl0
KCkKICAgICBjb21taXQoKTsKIH0KIAordWludDY0X3QgSURCVHJhbnNhY3Rpb246OmdlbmVyYXRl
T3BlcmF0aW9uSUQoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVu
dE9wZXJhdGlvbklEKDEpOworICAgIHJldHVybiBjdXJyZW50T3BlcmF0aW9uSUQgKz0gMTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaAppbmRleCAzNThiMDFiYzAxNGFhNjE0NDhhMzE2NTY1NjdlY2EyYTM1ZDJhMzI2Li5k
NDE3NzNjY2M1ZDY1ZjgzNDUwODFiY2Q1N2E4ZjlkYWQ2YzM0OTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTcxLDYgKzcx
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJE
YXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHN0YXRpYyBSZWY8SURC
VHJhbnNhY3Rpb24+IGNyZWF0ZShJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYsIElEQk9wZW5EQlJlcXVlc3QmKTsKIAorICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU9w
ZXJhdGlvbklEKCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SURCVHJhbnNhY3Rpb24oKSBmaW5h
bDsKIAogICAgIC8vIElEQlRyYW5zYWN0aW9uIElETApAQCAtMTY1LDcgKzE2Nyw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJv
Z3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3Bl
cmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICBlbnVt
IGNsYXNzIElzV3JpdGVPcGVyYXRpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgc2No
ZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYsIElz
V3JpdGVPcGVyYXRpb24gPSBJc1dyaXRlT3BlcmF0aW9uOjpObyk7CiAgICAgdm9pZCBoYW5kbGVP
cGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIoKTsKICAgICB2b2lkIGhhbmRsZVBlbmRpbmdPcGVy
YXRpb25zKCk7CiAgICAgdm9pZCBhdXRvQ29tbWl0KCk7CkBAIC0yNDQsOCArMjQ3LDggQEAgcHJp
dmF0ZToKIAogICAgIERlcXVlPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
Pj4gbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZTsKICAgICBEZXF1ZTxJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uKj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dy
ZXNzUXVldWU7Ci0gICAgRGVxdWU8c3RkOjpwYWlyPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4+IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZTsK
ICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJv
cnRRdWV1ZTsKKyAgICBIYXNoTWFwPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uPiwgSURCUmVzdWx0RGF0YT4gbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcDsKIAog
ICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXA7CiAKQEAgLTI1OCw2
ICsyNjEsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZGlkRGlzcGF0Y2hBYm9ydE9yQ29tbWl0IHsgZmFsc2UgfTsKKworICAg
IHVpbnQ2NF90IG1fbGFzdFdyaXRlT3BlcmF0aW9uSUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFu
c2FjdGlvbkFjdGl2YXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oCmluZGV4IDUwOWJiZjI3OGIzZjlmMzc1N2Y2ZjFiNTA0MGVjNzZkNWQyYzlhMDAu
LmJmMzA4YWRhOTZhMmIwNjA5OGQzNmQyYWM3MTBlZDViYzYzMjc3ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0xMDYsNiArMTA2LDExIEBA
IGVudW0gY2xhc3MgR2V0QWxsVHlwZSB7CiAKIGVudW0gY2xhc3MgQ29ubmVjdGlvbkNsb3NlZE9u
QmVoYWxmT2ZTZXJ2ZXIgOiBib29sIHsgTm8sIFllcyB9OwogCitlbnVtIGNsYXNzIEN1cnNvckl0
ZXJhdGVPcHRpb24geworICAgIERvTm90UmVwbHksCisgICAgUmVwbHksCit9OworCiB9IC8vIG5h
bWVzcGFjZSBJbmRleGVkREIKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcAppbmRleCA0ZWM0NDdlMjZmMTFkZmE2MmJmMDgzNjhiZjE0Zjg1YTgyZWNm
NTExLi45NTZkZmFlNjQ1MTc0OThkZTM4ZTU0ODMxYjU5MWI0ZjYzNTVjOTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcApAQCAtMjM4LDcgKzIzOCw4IEBAIHZvaWQgSURCQ29ubmVjdGlv
blByb3h5OjpvcGVuQ3Vyc29yKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IElEQkN1CiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkK
IHsKICAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSB7IG9wZXJhdGlvbiB9Owot
ICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gIT0gSW5k
ZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5KQorICAgICAgICBzYXZlT3Bl
cmF0aW9uKG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURC
Q29ubmVjdGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29yLCByZXF1ZXN0RGF0YSwgZGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCA4ZTFkZTA2ZDcxZThmMGIyMjNk
Njg2ZTVlMWE4YTIyMDliNzQzODQzLi5hYTU5MDZmNDc1ZTVlZTBhYWNkZjExZjE3ZDNlYTY4ZTI4
YjUxNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcg
QEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVz
dC5wZW5kaW5nQ3Vyc29yKCkpCiAgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwog
CisgICAgcmVxdWVzdC5zZXRUcmFuc2FjdGlvbk9wZXJhdGlvbklEKG1fb3BlcmF0aW9uSUQpOwog
ICAgIG1faWRiUmVxdWVzdCA9ICZyZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oCmluZGV4IGUyZjE0OGFlZmJiNDM0MzJhNjFjODQ2MmJiMTRmMzllNWE3NjA4YTYuLjdhYjU3
NTU1NzA4ZWM3NGI5ZDE2ZDE1NmNlOWU5MzI1Njc4N2NkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5oCkBAIC0xMTIsMTAgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZXh0UmVx
dWVzdENhbkdvVG9TZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX25leHRSZXF1ZXN0Q2FuR29Ub1Nl
cnZlciAmJiBtX2lkYlJlcXVlc3Q7IH0KICAgICB2b2lkIHNldE5leHRSZXF1ZXN0Q2FuR29Ub1Nl
cnZlcihib29sIG5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcikgeyBtX25leHRSZXF1ZXN0Q2FuR29U
b1NlcnZlciA9IG5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcjsgfQogCisgICAgdWludDY0X3Qgb3Bl
cmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbklEOyB9CisKIHByb3RlY3RlZDoK
ICAgICBUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAg
ICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2lkZW50aWZp
ZXIodHJhbnNhY3Rpb24uY29ubmVjdGlvblByb3h5KCkpCisgICAgICAgICwgbV9vcGVyYXRpb25J
RCh0cmFuc2FjdGlvbi5nZW5lcmF0ZU9wZXJhdGlvbklEKCkpCiAgICAgewogICAgIH0KIApAQCAt
MTQyLDYgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVx
dWVzdDsKICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX29wZXJhdGlv
bklEIHsgMCB9OwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDog
cHVibGljIFRyYW5zYWN0aW9uT3BlcmF0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjNDI2
NDBiM2JmNmM2MGIwODdmMjQ1ZWZkM2FmMDFjMzY2MmZhMjllLi5hN2RmN2ExZGNkNjA3NWRkYTQ1
MTA5MGFhOTMwMzdhZTgyMWNkYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw3ICs4NSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9y
TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpID0g
MDsKICAgICB2aXJ0dWFsIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJH
ZXRSZXN1bHQmIG91dFJlc3VsdCkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklk
ZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9y
T2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAppbmRleCAzNzhkMmE1ZjdhMGQ2NzNmMjQzMjkzODEwNzRlZThiMTk1ODExYmVkLi43
NGRjOTUwOTQ1YTZlZjRiOGViNTcyYThiZDRkMTVkZGE1MmI4ZmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC03NCw3ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3Ig
bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
ZG91YmxlIG5ld0tleU51bWJlcikgZmluYWw7CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
Q3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJv
ciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZp
bmFsOwotICAgIGJvb2wgcHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ZhMTAyZGI2
NTkyODBkN2Q2YTA1MGNlMWVhN2ZjNDA4MDJiZmRkNy4uNTczYmVjNzdlMmYyZjNkMWMxMjEyMWJj
NThmZWNjM2ZjZjFhM2UyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTEzNjYsOCArMTM2Niw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
SW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICB3aGlsZSAo
IWN1cnNvci0+Y3VycmVudEtleSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IGN1
cnNvci0+Y3VycmVudEtleSgpOwotICAgICAgICBhdXRvKiB2YWx1ZSA9IGN1cnNvci0+Y3VycmVu
dFZhbHVlKCk7Ci0gICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFs
dWUgPyB2YWx1ZS0+ZGF0YSgpIDogVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IGN1cnNvci0+Y3VycmVudFZhbHVlKCk7CisgICAgICAgIFRocmVhZFNhZmVEYXRh
QnVmZmVyIHZhbHVlQnVmZmVyID0gdmFsdWUuZGF0YSgpOwogCiAgICAgICAgIEFTU0VSVChjdXJz
b3ItPmN1cnJlbnRSZWNvcmRSb3dJRCgpKTsKIApAQCAtMjM1NCw3ICsyMzU0LDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJgogICAgICAgICBJREJLZXlEYXRhIGtleUNvcHkgPSBjdXJzb3ItPmN1
cnJlbnRQcmltYXJ5S2V5KCk7CiAgICAgICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlDb3B5
KSk7CiAgICAgICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWRE
Qjo6R2V0QWxsVHlwZTo6VmFsdWVzKQotICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKGN1cnNv
ci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCkp
OworICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKElEQlZhbHVlKGN1cnNvci0+Y3VycmVudFZh
bHVlKCkpKTsKIAogICAgICAgICArK2N1cnJlbnRDb3VudDsKICAgICAgICAgY3Vyc29yLT5hZHZh
bmNlKDEpOwpAQCAtMjQwMSw3ICsyNDAxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9y
T2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJRCk7CiAgICAgICAgICAgICBBU1NFUlQob2JqZWN0U3Rv
cmVJbmZvKTsKLSAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50UHJpbWFy
eUtleSgpLCBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIGN1cnNvci0+Y3VycmVudFZhbHVl
KCkgPyAqY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCksIG9iamVjdFN0b3JlSW5m
by0+a2V5UGF0aCgpIH07CisgICAgICAgICAgICBnZXRSZXN1bHQgPSB7IGN1cnNvci0+Y3VycmVu
dFByaW1hcnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpLCBJREJWYWx1ZShjdXJz
b3ItPmN1cnJlbnRWYWx1ZSgpKSwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkgfTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMjcyMSwyNiArMjcyMSwxOCBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFucwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5m
b0Zvck9iamVjdFN0b3JlKGN1cnNvci0+b2JqZWN0U3RvcmVJRCgpKTsKLSAgICBBU1NFUlQob2Jq
ZWN0U3RvcmVJbmZvKTsKLSAgICBjdXJzb3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3Rv
cmVJbmZvLT5rZXlQYXRoKCkpOwotICAgIHJldHVybiBJREJFcnJvciB7IH07Ci19Ci0KLWJvb2wg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyKQotewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yIik7Ci0KLSAgICBBU1NFUlQobV9zcWxpdGVEQik7
Ci0gICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKKyAgICBpZiAoZGF0YS5vcHRpb24g
PT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpSZXBseSkgeworICAgICAgICBhdXRv
KiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9y
ZUlEKCkpOworICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKIAotICAgIGF1dG8qIGN1
cnNvciA9IG1fY3Vyc29ycy5nZXQoY3Vyc29ySWRlbnRpZmllcik7Ci0gICAgaWYgKCFjdXJzb3Ig
fHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKSB8fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpLT5pblBy
b2dyZXNzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRQcmVm
ZXRjaCA9IGtleS5pc051bGwoKSAmJiBwcmltYXJ5S2V5LmlzTnVsbCgpOworICAgICAgICBpZiAo
c2hvdWxkUHJlZmV0Y2gpCisgICAgICAgICAgICBjdXJzb3ItPnByZWZldGNoKCk7CiAKLSAgICBB
U1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigp
LT50cmFuc2FjdGlvbklkZW50aWZpZXIoKSA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAg
ICAgICBjdXJzb3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRo
KCksIHNob3VsZFByZWZldGNoID8gU1FMaXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0
Y2hlZFJlY29yZHM6OlllcyA6IFNRTGl0ZUlEQkN1cnNvcjo6U2hvdWxkSW5jbHVkZVByZWZldGNo
ZWRSZWNvcmRzOjpObyk7CisgICAgfQogCi0gICAgcmV0dXJuIGN1cnNvci0+cHJlZmV0Y2goKTsK
KyAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCBjZTI5ZDJjZmNm
YjQxZmFiNmJkMzA1YmJlMmRjZjA0NTZmYjZkODJlLi40OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0
MzdkYWM2OTk0MGNjNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw3
ICs4MCw2IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51
bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSBmaW5h
bDsKICAgICBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0
JiBvdXRSZXN1bHQpIGZpbmFsOwogICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRh
dGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmluYWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1
cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImKSBmaW5hbDsKIAogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0
b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxl
dGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggYjM3NzE3
Mzc1NzRlMjIzNjYxN2QyNDg3YzY5MGUxMjBlYWRkNzAwYi4uZTE5YWExM2ViMDFlNTViYjBjZjgw
ODFmNzQzYmFhNzIzYTYzMjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQyLDggKzQy
LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0
aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoTGltaXQgPSAxMjg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90
IHByZWZldGNoU2l6ZUxpbWl0ID0gOCAqIE1COworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRj
aExpbWl0ID0gMjU2Oworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaFNpemVMaW1pdCA9IDEg
KiBNQjsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29y
OjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiB7CkBAIC0xMDIsNyArMTAyLDcgQEAgU1FMaXRlSURCQ3Vyc29y
Ojp+U1FMaXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3Io
KnRoaXMpOwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQordm9pZCBT
UUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBP
cHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNv
cmRzIHNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcykKIHsKICAgICBBU1NFUlQoIW1fZmV0
Y2hlZFJlY29yZHMuaXNFbXB0eSgpKTsKIApAQCAtMTEzLDcgKzExMywyNSBAQCB2b2lkIFNRTGl0
ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0geyBj
dXJyZW50UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXks
IGN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVl
IDogSURCVmFsdWUoKSwga2V5UGF0aH07CisgICAgaWYgKHNob3VsZEluY2x1ZGVQcmVmZXRjaGVk
UmVjb3JkcyA9PSBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHM6Ok5vKSB7CisgICAgICAg
IHJlc3VsdCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29y
ZC5wcmltYXJ5S2V5LCBJREJWYWx1ZShjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBh
dGggfTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxJREJDdXJzb3JSZWNv
cmQ+IHByZWZldGNoZWRSZWNvcmRzOworICAgIHByZWZldGNoZWRSZWNvcmRzLnJlc2VydmVDYXBh
Y2l0eShtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBt
X2ZldGNoZWRSZWNvcmRzKSB7CisgICAgICAgIGlmIChyZWNvcmQuaXNUZXJtaW5hbFJlY29yZCgp
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcHJlZmV0Y2hlZFJlY29yZHMuYXBwZW5k
KHJlY29yZC5yZWNvcmQpOworICAgIH0KKworICAgIC8vIEZpcnN0IHJlY29yZCB3aWxsIGJlIHJl
dHVybmVkIGFzIGN1cnJlbnQgcmVjb3JkLgorICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNF
bXB0eSgpKQorICAgICAgICBwcmVmZXRjaGVkUmVjb3Jkcy5yZW1vdmUoMCk7CisKKyAgICByZXN1
bHQgPSB7IGN1cnJlbnRSZWNvcmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJp
bWFyeUtleSwgSURCVmFsdWUoY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUpLCBrZXlQYXRoLCBX
VEZNb3ZlKHByZWZldGNoZWRSZWNvcmRzKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJl
SW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0RpcmVjdGlvbk5leHQpCkBAIC0yNjMsNiArMjgxLDggQEAg
dm9pZCBTUUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIC8v
IFdlIGFsc28gbmVlZCB0byB0aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBt
YXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgogICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKICAg
ICBtX2ZldGNoZWRSZWNvcmRzU2l6ZSA9IDA7CisKKyAgICBtX3ByZWZldGNoQ291bnQgPSAwOwog
fQogCiB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRTdGF0ZW1lbnQoKQpAQCAt
MzU5LDE3ICszNzksMzIgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0
Y2hPbmVSZWNvcmQoKQogewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6OnBy
ZWZldGNoKCkgLSBDdXJzb3IgYWxyZWFkeSBoYXMgJXp1IGZldGNoZWQgcmVjb3JkcyIsIG1fZmV0
Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vyc29y
OjpwcmVmZXRjaE9uZVJlY29yZCgpIC0gQ3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJl
Y29yZHMiLCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CiAKICAgICBpZiAobV9mZXRjaGVkUmVj
b3Jkc1NpemUgPj0gcHJlZmV0Y2hTaXplTGltaXQgfHwgbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5
KCkgfHwgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPj0gcHJlZmV0Y2hMaW1pdCB8fCBtX2ZldGNo
ZWRSZWNvcmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIG1fY3VycmVudEtleUZvclVuaXF1ZW5lc3MgPSBtX2ZldGNoZWRSZWNvcmRzLmxh
c3QoKS5yZWNvcmQua2V5OwotICAgIGZldGNoKCk7CiAKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVj
b3Jkcy5zaXplKCkgPCBwcmVmZXRjaExpbWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJl
ZmV0Y2hTaXplTGltaXQ7CisgICAgcmV0dXJuIGZldGNoKCkgJiYgbV9mZXRjaGVkUmVjb3Jkcy5z
aXplKCkgPCBwcmVmZXRjaExpbWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hT
aXplTGltaXQ7Cit9CisKK3ZvaWQgU1FMaXRlSURCQ3Vyc29yOjppbmNyZWFzZUNvdW50VG9QcmVm
ZXRjaCgpCit7CisgICAgbV9wcmVmZXRjaENvdW50ID0gbV9wcmVmZXRjaENvdW50ID8gbV9wcmVm
ZXRjaENvdW50ICogMiA6IDE7Cit9CisKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgp
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlZmV0Y2hDb3VudDsgKytpKSB7
CisgICAgICAgIGlmICghcHJlZmV0Y2hPbmVSZWNvcmQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpbmNyZWFzZUNvdW50VG9QcmVmZXRjaCgpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3Vu
dCkKQEAgLTQ4OCw3ICs1MjMsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0
ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgIEFTU0VS
VCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVj
b3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKTsKIAotICAgIHJlY29yZC5yZWNvcmQudmFs
dWUgPSBudWxscHRyOworICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IH07CiAKICAgICBhdXRv
JiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNl
KCk7CiAgICAgU1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQgPSBudWxscHRyOwpAQCAtNTQ2LDcg
KzU4MSw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjpp
bnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0g
ICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhy
ZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJs
b2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgVGhyZWFk
U2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JG
aWxlUGF0aHMgfTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFy
eUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZh
bHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBA
IC01NzIsNyArNjA3LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJD
dXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAo
cmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVT
dGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAg
IHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5y
ZWNvcmQudmFsdWUgPSB7IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlE
YXRhKSkgfTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcg
dG8gcmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAg
ICAgICAgICAvLyBTa2lwIG92ZXIgaXQuCkBAIC02NDUsMTAgKzY4MCwxMCBAQCBjb25zdCBJREJL
ZXlEYXRhJiBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogfQogCi1J
REJWYWx1ZSogU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUoKSBjb25zdAorY29uc3QgSURC
VmFsdWUmIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudFZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoIW1fZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVj
b3Jkcy5maXJzdCgpLnJlY29yZC52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbV9mZXRjaGVkUmVj
b3Jkcy5maXJzdCgpLnJlY29yZC52YWx1ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmRp
ZENvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCBkODFkZmI1YzNkOTUxMTBi
YTNjMmQxZTkzYjY2MzEyYzAyZDM2MjY3Li5mZGNhODBlZDBiNjFmNmU1MWQzMDU4ZmZmNjM5ZWRi
ZGMyYjJmMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC02NiwxMCArNjYsMTEgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgSURCS2V5RGF0YSYgY3VycmVudEtleSgpIGNvbnN0OwogICAgIGNvbnN0
IElEQktleURhdGEmIGN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgSURCVmFsdWUqIGN1
cnJlbnRWYWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IElEQlZhbHVlJiBjdXJyZW50VmFsdWUoKSBj
b25zdDsKIAogICAgIGJvb2wgYWR2YW5jZSh1aW50NjRfdCBjb3VudCk7CiAgICAgYm9vbCBpdGVy
YXRlKGNvbnN0IElEQktleURhdGEmIHRhcmdldEtleSwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0
UHJpbWFyeUtleSk7CisgICAgYm9vbCBwcmVmZXRjaE9uZVJlY29yZCgpOwogICAgIGJvb2wgcHJl
ZmV0Y2goKTsKIAogICAgIGJvb2wgZGlkQ29tcGxldGUoKSBjb25zdDsKQEAgLTc3LDcgKzc4LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKLSAg
ICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBh
dGg+Jik7CisgICAgZW51bSBjbGFzcyBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgeyBO
bywgWWVzIH07CisgICAgdm9pZCBjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRp
b25hbDxJREJLZXlQYXRoPiYsIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9IFNob3Vs
ZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jkczo6Tm8pOwogCiBwcml2YXRlOgogICAgIGJvb2wgZXN0
YWJsaXNoU3RhdGVtZW50KCk7CkBAIC0xMDksNiArMTExLDggQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgaXNEaXJlY3Rpb25OZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3JEaXJlY3Rpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWU7IH0KIAorICAgIHZvaWQgaW5j
cmVhc2VDb3VudFRvUHJlZmV0Y2goKTsKKwogICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiBtX3Ry
YW5zYWN0aW9uOwogICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX2N1cnNvcklkZW50aWZpZXI7
CiAgICAgaW50NjRfdCBtX29iamVjdFN0b3JlSUQ7CkBAIC0xMzMsNiArMTM3LDggQEAgcHJpdmF0
ZToKICAgICBpbnQ2NF90IG1fYm91bmRJRCB7IDAgfTsKIAogICAgIGJvb2wgbV9iYWNraW5nU3Rv
cmVDdXJzb3IgeyBmYWxzZSB9OworCisgICAgdW5zaWduZWQgbV9wcmVmZXRjaENvdW50IHsgMCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAppbmRleCBhMGEwNTE2ZjZmYmNjNGU2ODBmYzJjOWE3ZjA0ODc5MjM1NTNjZGRmLi5hZjViMzE4
NTA4NTZkNWQyZGI2MjlhOTYwMGFiNGY0MjY0MzE0ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTg1NCwyMiArODU0LDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBh
dXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPml0ZXJhdGVDdXJzb3IodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyLCBkYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2so
ZXJyb3IsIHJlc3VsdCk7Ci0KLSAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIHByZWZl
dGNoQ3Vyc29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3Vyc29ySWRlbnRpZmllciwgZGF0YS5j
b3VudCA/IGRhdGEuY291bnQgOiAxKTsKLX0KLQotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHJl
ZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWlu
dDY0X3Qgc3RlcCkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnBy
ZWZldGNoQ3Vyc29yIik7Ci0KLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIHVp
bnQ2NF90IGNvdW50VG9QcmVmZXRjaCA9IHN0ZXAgKiAyOwotICAgIHdoaWxlIChjb3VudFRvUHJl
ZmV0Y2ggLS0pIHsKLSAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+cHJlZmV0Y2hDdXJzb3Io
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxi
YWNrIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCAwNmJmNmE0ZWYxNmM2MjMx
OGNkYzM5MzliMjMxNmRhYmE1NGYwNDNhLi4xYzY4ODczNTA2MDI2ZWZkZWZhMGQ3Mjc5M2NlOGNh
MmM3NGM0NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMTQyLDggKzE0Miw2IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBwcmVmZXRjaEN1cnNvcihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50
NjRfdCBzdGVwKTsKLQogICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwCmluZGV4IDBjOWJiMTBmZjg4Y2Q2NGM5MDU2OTNmNjJjZmFjZWU4NDFh
ZTJmOGQuLjk5NzRjYTY3MmQzNTllM2VmZmExMDRlMWFjZTYwZDg4YzQ4ZWJlZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTM3NCw5ICszNzQs
MTMgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGEKICAgICBhdXRvIGRhdGFiYXNlID0gbV9kYXRh
YmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICAK
LSAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJl
cXVlc3REYXRhXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAg
ICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVl
c3REYXRhLCBvcHRpb24gPSBkYXRhLm9wdGlvbl0oYXV0byYgZXJyb3IsIGNvbnN0IElEQkdldFJl
c3VsdCYgcmVzdWx0KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yIChjYWxsYmFjaykiKTsKIAorICAgICAgICBpZiAo
b3B0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpIHx8IHJl
c3VsdC5pc0RlZmluZWQoKSk7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRl
Q3Vyc29yKElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJl
cXVlc3RJZGVudGlmaWVyKCksIHJlc3VsdCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3Jk
LmgKaW5kZXggNjEzNjA0YThjNWZhMmVjNzg0M2JiOThiMDU0ZTEwMWY2NjNlNjMxZS4uOWQ1YWI5
NGFkNTRkNDU5YTkzNjA0OTM4NzBiNzMyYzNlNzRhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaApA
QCAtMzUsMTIgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJDdXJzb3JS
ZWNvcmQgewogICAgIElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCVmFsdWU+IHZhbHVlOworICAgIElEQlZhbHVlIHZhbHVl
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgSURCQ3Vyc29yUmVjb3JkJik7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSArICh2YWx1ZSA/IHZhbHVlLT5zaXpl
KCkgOiAwKTsgfQorICAgIElEQkN1cnNvclJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNp
emUoKSArIHZhbHVlLnNpemUoKTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTY0LDYgKzY1LDExIEBAIGJvb2wgSURCQ3Vyc29yUmVjb3JkOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgSURCQ3Vyc29yUmVjb3JkJiByZWNvcmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lu
bGluZSBJREJDdXJzb3JSZWNvcmQgSURCQ3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeUtleS5pc29sYXRl
ZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJh
dGVDdXJzb3JEYXRhLmNwcAppbmRleCBmMWYwYmIzYjZkYjQxZWE5N2QzMDJmYTNkYzI3MjY2ZmRl
ODYxNzk3Li5hZDlmNGE0NzUwMDIyYmIwNjQ2MmZjOGRjOWY1MTkyYjQ2YmJhYjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1
cnNvckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJREJJdGVyYXRlQ3Vyc29yRGF0YSBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgp
LCBwcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQgfTsKKyAgICByZXR1cm4geyBr
ZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291
bnQsIG9wdGlvbiB9OwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaAppbmRleCA4ZDMxNWM1YTZhMzE3NGYxZTIzMWE0MGExMTU5NmNmZTgyZjNiMWIxLi40
ZGY2YzY0NWYzYjI4MWU3Y2EwMGJkOWQ5MmJiNzFkMGM0ZmI0MGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0
ZUN1cnNvckRhdGEuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRh
dGEgewogICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlE
YXRhOwogICAgIHVuc2lnbmVkIGNvdW50OworICAgIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9w
dGlvbiBvcHRpb24geyBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5IH07CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJREJJdGVyYXRlQ3Vyc29yRGF0YSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIApAQCAtNTAsNiArNTEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJ
REJJdGVyYXRlQ3Vyc29yRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBrZXlEYXRhIDw8IHByaW1hcnlLZXlEYXRhIDw8IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihjb3VudCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9wdGlvbik7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03Myw5ICs3NSwxMSBAQCBib29sIElEQkl0ZXJhdGVD
dXJzb3JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCSXRlcmF0ZUN1cnNvckRhdGEm
IGl0ZXJhdAogCiAgICAgaWYgKGNvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpdGVyYXRvckN1cnNvckRhdGEu
Y291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY291bnQpOwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0oaXRlcmF0b3JDdXJzb3JEYXRhLm9wdGlvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjE4ZTc0MjQ2YmYxZjI3ZWZmNzli
MDc2OWZlNjgwZDIzYjM1OWZlMi4uNzk3NTVkNzBmNmJhM2VlMmU1ZWZiOTgwOGViMzMyYzc5NzNh
OWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTUxMTBGQ0ZDMUUwMzY0MUQwMDZGOEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0ZCMUUwMzYyQTUw
MDZGOEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCAqLzsgfTsKKwkJNTExMEZDRkMxRTAzNjQxRDAw
NkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJl
Y29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAz
MkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJ
REJUcmFuc2FjdGlvbi5oICovOyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FM
aXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07
CkBAIC0xMzg3OSwxMiArMTM4NzksMTIgQEAKIAkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8q
IENETVJlcXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVJl
cXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUNEMUY3MUNC
NjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3Rh
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUluc3RhbmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBD
RE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDk0QTVDRjFGNzFDQjYxMDBGNTI1RDUgLyog
Q0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVDRjFGNzFDQjZBMDBG
NTI1QzUgLyogQ0RNUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
RE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQwMUY3MUNC
NkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ0RNUmVzdHJpY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEOTRBNUQxMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDk0QTVEMjFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Qcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBD
RE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVEMzFGNzFDQjZDMDBGNTI1QzUgLyog
Q0RNTWVkaWFDYXBhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENE
TU1lZGlhQ2FwYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVE
NDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENETUtleVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNU2Vzc2lvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>