<?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>230128</bug_id>
          
          <creation_ts>2021-09-09 15:55:23 -0700</creation_ts>
          <short_desc>Assertions in IDBTransaction::request*() methods fail on cross-realm methods</short_desc>
          <delta_ts>2021-10-24 10:37:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/31221</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pangle</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792129</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-09 15:55:23 -0700</bug_when>
    <thetext>/Users/admin/Desktop/foo.diff            Assertions in IDBTransaction::request*() methods fail on cross-realm methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792138</commentid>
    <comment_count>1</comment_count>
      <attachid>437798</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-09-09 16:14:00 -0700</bug_when>
    <thetext>Created attachment 437798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792139</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-09 16:14:45 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794244</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-16 15:56:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/83217153&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804049</commentid>
    <comment_count>4</comment_count>
      <attachid>437798</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-13 16:14:20 -0700</bug_when>
    <thetext>Comment on attachment 437798
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=437798&amp;action=review

Patch looks good! Nits: there are many places that space is missing around = (search for &quot;state=&quot;). 

And I think we usually don&apos;t modify imported tests directly (as they should be synced with upstream). 
So maybe either upload the test to wpt first and import it; or place the test in LayoutTests/storage/indexeddb (may need some modification).

&gt; Source/WebCore/Modules/indexeddb/IDBIndex.cpp:181
&gt; +    return doOpenCursor(direction, [state=&amp;execState, key]() {

Nit: space around =

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:634
&gt; +    return doGetAll(count, [state=&amp;execState, key]() {

Ditto.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:671
&gt; +    return doGetAllKeys(count, [state=&amp;execState, key]() {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804096</commentid>
    <comment_count>5</comment_count>
      <attachid>441165</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-13 17:36:53 -0700</bug_when>
    <thetext>Created attachment 441165
Patch

Ensure &apos;=&apos; on all changed lines is surrounded by spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804097</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-13 17:37:50 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #4)
&gt; And I think we usually don&apos;t modify imported tests directly (as they should
&gt; be synced with upstream). 
&gt; So maybe either upload the test to wpt first and import it; or place the
&gt; test in LayoutTests/storage/indexeddb (may need some modification).

Thank you for feedback, Sihui!

Regarding the tests: I am following the https://trac.webkit.org/wiki/WPTExportProcess here; as soon as the patch is reviewed, the WPT PR (https://github.com/web-platform-tests/wpt/pull/31221) gets approved by the bot and landed by me to ensure we are in sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804142</commentid>
    <comment_count>7</comment_count>
      <attachid>441165</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-13 20:50:52 -0700</bug_when>
    <thetext>Comment on attachment 441165
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808223</commentid>
    <comment_count>8</comment_count>
      <attachid>442311</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-24 09:53:45 -0700</bug_when>
    <thetext>Created attachment 442311
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808225</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-24 09:58:16 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #7)
&gt; Comment on attachment 441165 [details]
&gt; Patch
&gt; 
&gt; r=me

Thanks! Landing now after WPT PR was merged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808229</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-24 10:37:48 -0700</bug_when>
    <thetext>Committed r284761 (243470@main): &lt;https://commits.webkit.org/243470@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442311.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437798</attachid>
            <date>2021-09-09 16:14:00 -0700</date>
            <delta_ts>2021-10-13 17:36:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230128-20210910021358.patch</filename>
            <type>text/plain</type>
            <size>81003</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDIxLTA5LTA5ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBc3NlcnRpb25zIGlu
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0KigpIG1ldGhvZHMgZmFpbCBvbiBjcm9zcy1yZWFsbSBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzAxMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eGNlcHQgd2hlbiB1c2VkIHdpdGggY29uc3RydWN0b3JzLCBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBXZWJJREwgYXR0cmlidXRlIHBhc3NlcworICAgICAgICBfY3VycmVudF8gZ2xvYmFsIG9iamVj
dCBbMV0sIG9uZSB0aGF0IHRoZSBmdW5jdGlvbiB3YXMgY3JlYXRlZCBpbi4KKworICAgICAgICBB
IG1ldGhvZCBmcm9tIGFub3RoZXIgcmVhbG0gaGFzIGRpZmZlcmVudCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRoYW4gdGhlIElEQlRyYW5zYWN0aW9uLAorICAgICAgICBhbmQgaXQncyBmaW5lOiBm
dW5jdGlvbidzIGdsb2JhbCBvYmplY3QgaXMgdXNlZCBvbmx5IGZvciBJREJLZXkgcGFyc2luZyBh
bmQgc3RydWN0dXJlCisgICAgICAgIGNsb25pbmcgYXMgcGVyIHNwZWMgWzJdLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBpbmNvcnJlY3QgYXNzZXJ0aW9ucywgZml4aW5nIElEQk9iamVj
dFN0b3JlIC8gSURCSW5kZXggY3Jvc3MtcmVhbG0KKyAgICAgICAgbWV0aG9kcyBub3QgdG8gY3Jh
c2ggLS1kZWJ1ZyBidWlsZCwgYW5kIHJlbW92ZXMgbm93IHVudXNlZCBKU0dsb2JhbE9iamVjdCBw
YXJhbWV0ZXJzLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjY29uY2VwdC1jdXJyZW50LWV2ZXJ5dGhpbmcKKyAgICAg
ICAgWzJdIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9JbmRleGVkREIvI3JlZi1mb3ItcmV0cmlldmUt
YS12YWx1ZS1mcm9tLWFuLW9iamVjdC1zdG9yZQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRo
b2RzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
SW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNyb3NzLXJlYWxtLW1ldGhvZHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmRvT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9PcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6ZG9Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEtleSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRBbGxLZXlzKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCk6CisgICAg
ICAgIFVzZSBJREJPYmplY3RTdG9yZSdzIGNvbnRleHQgaW5zdGVhZCBvZiBfY3VycmVudF8gZ2xv
YmFsIG9iamVjdCBmb3IgcHJpdmF0ZSBicm93c2luZworICAgICAgICBjaGVjayBhcyBwZXIgcmVj
b21tZW5kYXRpb24gZm9yIHNwZWMgYXV0aG9ycyBbMV0uIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJl
IG9ic2VydmFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRv
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxs
SW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorCiAyMDIxLTA5LTA5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUG90ZW50aWFsIGNyYXNo
IHVuZGVyIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCShyZXZpc2lvbiAyODIy
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tl
ZEl0ZXJhdGVDdXJzb3IoYwogICAgIHRyYW5zYWN0aW9uKCkuaXRlcmF0ZUN1cnNvcigqdGhpcywg
eyBrZXksIHByaW1hcnlLZXksIDAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJ
REJSZXF1ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYgc3Rh
dGUpCitFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6ZGVs
ZXRlRnVuY3Rpb24oKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1
bmN0aW9uIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERh
dGEoZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkpKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6
SURCUmVxdWVzdD4+IElECiAgICAgaWYgKCFpc0tleUN1cnNvcldpdGhWYWx1ZSgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0
ZSAnZGVsZXRlJyBvbiAnSURCQ3Vyc29yJzogVGhlIGN1cnNvciBpcyBhIGtleSBjdXJzb3IuIl9z
IH07CiAKLSAgICBhdXRvIHJlc3VsdCA9IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkuZGVsZXRlRnVu
Y3Rpb24oc3RhdGUsIElEQktleVJhbmdlOjpjcmVhdGUobV9wcmltYXJ5S2V5LmNvcHlSZWYoKSku
cHRyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS5kZWxldGVG
dW5jdGlvbihJREJLZXlSYW5nZTo6Y3JlYXRlKG1fcHJpbWFyeUtleS5jb3B5UmVmKCkpLnB0cigp
KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZHZhbmNlKHVuc2lnbmVkKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb250aW51ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUga2V5KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb250aW51ZVBy
aW1hcnlLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIEpTQzo6SlNW
YWx1ZSBwcmltYXJ5S2V5KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRlbGV0
ZUZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRlbGV0ZUZ1bmN0aW9uKCk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleURhdGEmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCShyZXZpc2lvbiAyODIyNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw1ICs0MCw1IEBACiAgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gdW5k
ZWZpbmVkIGNvbnRpbnVlUHJpbWFyeUtleShhbnkga2V5LCBhbnkgcHJpbWFyeUtleSk7CiAKICAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgdXBkYXRlKGFu
eSB2YWx1ZSk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0LCBJbXBsZW1l
bnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOworICAgIFtOZXdPYmpl
Y3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKCk7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBJREJJ
bmRleDo6cm9sbGJhY2tJbmZvRm9yVmVyc2lvbkNoYQogICAgIG1fZGVsZXRlZCA9IGZhbHNlOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09wZW5DdXJzb3Io
SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0
aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29y
KElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtMTY2LDE5ICsxNjYsMTkgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZAogICAgICAgICByYW5nZURhdGEudXBwZXJLZXkgPSBJ
REJLZXlEYXRhOjptYXhpbXVtKCk7CiAKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJbmZvOjpp
bmRleEN1cnNvcihtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUuaW5m
bygpLmlkZW50aWZpZXIoKSwgbV9pbmZvLmlkZW50aWZpZXIoKSwgcmFuZ2VEYXRhLCBkaXJlY3Rp
b24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpOwotICAgIHJldHVybiBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoZXhlY1N0YXRlLCAqdGhp
cywgaW5mbyk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1ZXN0
T3BlbkN1cnNvcigqdGhpcywgaW5mbyk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQorRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihSZWZQdHI8SURC
S2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAg
cmV0dXJuIGRvT3BlbkN1cnNvcihleGVjU3RhdGUsIGRpcmVjdGlvbiwgW3JhbmdlPVdURk1vdmUo
cmFuZ2UpXSgpIHsKKyAgICByZXR1cm4gZG9PcGVuQ3Vyc29yKGRpcmVjdGlvbiwgW3JhbmdlID0g
V1RGTW92ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAK
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoSlNHbG9i
YWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7Ci0gICAgcmV0dXJuIGRvT3BlbkN1cnNvcihleGVjU3RhdGUsIGRpcmVjdGlvbiwg
W3N0YXRlPSZleGVjU3RhdGUsIGtleV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJl
Y3Rpb24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1
bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUg
J29wZW5DdXJzb3InIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQg
a2V5LiJfcykgfTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4OjpvCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6OmRvT3BlbktleUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNv
ciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBA
IC0yMDQsMTkgKzIwNCwxOSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
OjpkCiAKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgp
LmdldCgpOwogICAgIGF1dG8gaW5mbyA9IElEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKG1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigp
LCBtX2luZm8uaWRlbnRpZmllcigpLCBrZXlSYW5nZVBvaW50ZXIsIGRpcmVjdGlvbiwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAg
IHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKnRo
aXMsIGluZm8pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpv
cGVuS2V5Q3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5n
ZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK0V4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdl
PiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBk
b09wZW5LZXlDdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtyYW5nZT1XVEZNb3ZlKHJhbmdl
KV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbktleUN1cnNvcihkaXJlY3Rpb24sIFtyYW5nZSA9IFdU
Rk1vdmUocmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rp
b24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb09wZW5LZXlDdXJz
b3IoZGlyZWN0aW9uLCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBv
bmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkpOwogICAgICAgICBpZiAo
b25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBl
eGVjdXRlICdvcGVuS2V5Q3Vyc29yJyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5v
dCBhIHZhbGlkIGtleS4iX3MpIH07CkBAIC0yMjUsMTEgKzIyNSwxMSBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmNvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IElEQktleVJhbmdlKiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmNvdW50KElEQktleVJhbmdlKiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
SW5kZXg6OmNvdW50Iik7CiAKLSAgICByZXR1cm4gZG9Db3VudChleGVjU3RhdGUsIHJhbmdlID8g
SURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygpKTsKKyAg
ICByZXR1cm4gZG9Db3VudChyYW5nZSA/IElEQktleVJhbmdlRGF0YShyYW5nZSkgOiBJREJLZXlS
YW5nZURhdGE6OmFsbEtleXMoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmNvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQpA
QCAtMjM5LDEwICsyMzksMTAgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRl
eDo6YwogICAgIGF1dG8gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtl
eSk7CiAgICAgYXV0byogaWRiS2V5UG9pbnRlciA9IGlkYktleS0+aXNWYWxpZCgpID8gaWRiS2V5
LnB0cigpIDogbnVsbHB0cjsKIAotICAgIHJldHVybiBkb0NvdW50KGV4ZWNTdGF0ZSwgSURCS2V5
UmFuZ2VEYXRhKGlkYktleVBvaW50ZXIpKTsKKyAgICByZXR1cm4gZG9Db3VudChJREJLZXlSYW5n
ZURhdGEoaWRiS2V5UG9pbnRlcikpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4Ojpkb0NvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYgcmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
Ojpkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKGNh
bkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIApAQCAtMjU2LDE0ICsyNTYsMTQg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZAogICAgIGlmICghcmFu
Z2UuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yLCAiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2NvdW50JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5v
dCBhIHZhbGlkIGtleS4iX3MgfTsKIAotICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0Q291
bnQoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOworICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1
ZXN0Q291bnQoKnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJJbmRleDo6Z2V0KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBy
YW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldChJREJLZXlS
YW5nZSogcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXQiKTsKIAot
ICAgIHJldHVybiBkb0dldChleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShyYW5nZSkpOworICAg
IHJldHVybiBkb0dldChJREJLZXlSYW5nZURhdGEocmFuZ2UpKTsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IEpTVmFsdWUga2V5KQpAQCAtMjcyLDEyICsyNzIsMTIgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJJbmRleDo6ZwogCiAgICAgYXV0byBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURC
S2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleS0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gZG9HZXQoZXhlY1N0YXRlLCBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxp
ZCBrZXkuIl9zKSk7CisgICAgICAgIHJldHVybiBkb0dldChFeGNlcHRpb24oRGF0YUVycm9yLCAi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRlciBpcyBu
b3QgYSB2YWxpZCBrZXkuIl9zKSk7CiAKLSAgICByZXR1cm4gZG9HZXQoZXhlY1N0YXRlLCBJREJL
ZXlSYW5nZURhdGEoaWRiS2V5LnB0cigpKSk7CisgICAgcmV0dXJuIGRvR2V0KElEQktleVJhbmdl
RGF0YShpZGJLZXkucHRyKCkpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJJbmRleDo6ZG9HZXQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgRXhjZXB0aW9uT3I8SURC
S2V5UmFuZ2VEYXRhPiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmRvR2V0KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0YT4gcmFuZ2UpCiB7CiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIApAQCAtMjk1LDE0ICsy
OTUsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZAogICAgIGlm
IChrZXlSYW5nZS5pc051bGwpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3Ig
fTsKIAotICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0VmFsdWUoZXhlY1N0YXRlLCAq
dGhpcywga2V5UmFuZ2UpOworICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0VmFsdWUo
KnRoaXMsIGtleVJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6Z2V0S2V5KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIElEQktleVJhbmdlKiByYW5n
ZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEtleShJREJLZXlS
YW5nZSogcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRLZXkiKTsK
IAotICAgIHJldHVybiBkb0dldEtleShleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShyYW5nZSkp
OworICAgIHJldHVybiBkb0dldEtleShJREJLZXlSYW5nZURhdGEocmFuZ2UpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KEpTR2xvYmFsT2JqZWN0
JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQpAQCAtMzExLDEyICszMTEsMTIgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZwogCiAgICAgYXV0byBpZGJLZXkgPSBzY3Jp
cHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleS0+aXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gZG9HZXRLZXkoZXhlY1N0YXRlLCBFeGNlcHRpb24oRGF0YUVy
cm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFt
ZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zKSk7CisgICAgICAgIHJldHVybiBkb0dldEtleShF
eGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQklu
ZGV4JzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zKSk7CiAKLSAgICByZXR1
cm4gZG9HZXRLZXkoZXhlY1N0YXRlLCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LnB0cigpKSk7Cisg
ICAgcmV0dXJuIGRvR2V0S2V5KElEQktleVJhbmdlRGF0YShpZGJLZXkucHRyKCkpKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRLZXkoSlNHbG9iYWxP
YmplY3QmIGV4ZWNTdGF0ZSwgRXhjZXB0aW9uT3I8SURCS2V5UmFuZ2VEYXRhPiByYW5nZSkKK0V4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4Y2VwdGlvbk9y
PElEQktleVJhbmdlRGF0YT4gcmFuZ2UpCiB7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRB
Y2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkpKTsKIApAQCAtMzM0LDEwICszMzQsMTAgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZAogICAgIGlmIChrZXlSYW5nZS5pc051bGwpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IgfTsKIAotICAgIHJldHVybiB0cmFu
c2FjdGlvbi5yZXF1ZXN0R2V0S2V5KGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdlKTsKKyAgICBy
ZXR1cm4gdHJhbnNhY3Rpb24ucmVxdWVzdEdldEtleSgqdGhpcywga2V5UmFuZ2UpOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbChKU0dsb2JhbE9i
amVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRBbGwoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6
OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxE
YXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgp
KSk7CkBAIC0zNTMsMTkgKzM1MywxOSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
QkluZGV4OjpkCiAgICAgICAgIHJldHVybiBrZXlSYW5nZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAK
ICAgICBhdXRvIGtleVJhbmdlUG9pbnRlciA9IGtleVJhbmdlLnJldHVyblZhbHVlKCkuZ2V0KCk7
Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1ZXN0R2V0QWxsSW5k
ZXhSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKKyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoKnRoaXMsIGtleVJhbmdlUG9pbnRl
ciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwo
UmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCkKIHsKLSAgICByZXR1cm4gZG9HZXRBbGwoZXhlY1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RG
TW92ZShyYW5nZSldKCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3JhbmdlID0gV1RG
TW92ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChKU0dsb2JhbE9iamVj
dCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQp
CiB7Ci0gICAgcmV0dXJuIGRvR2V0QWxsKGV4ZWNTdGF0ZSwgY291bnQsIFtzdGF0ZT0mZXhlY1N0
YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3N0YXRlPSZleGVjU3Rh
dGUsIGtleV0oKSB7CiAgICAgICAgIGF1dG8gb25seVJlc3VsdCA9IElEQktleVJhbmdlOjpvbmx5
KCpzdGF0ZSwga2V5KTsKICAgICAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj57IEV4Y2Vw
dGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCSW5kZXgn
OiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkBAIC0zNzQsNyArMzc0
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZwogICAgIH0pOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMo
SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQs
IFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5j
dGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsS2V5
cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFk
QWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zOTAsMTkgKzM5MCwxOSBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgICAgIHJldHVybiBrZXlSYW5nZS5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5y
ZXR1cm5WYWx1ZSgpLmdldCgpOwotICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZVBv
aW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291bnQpOworICAgIHJldHVybiBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcygqdGhp
cywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewotICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhl
Y1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgeworICAgIHJldHVybiBk
b0dldEFsbEtleXMoY291bnQsIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKICAgICAgICAg
cmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4OjpnZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKLSAgICByZXR1cm4gZG9HZXRB
bGxLZXlzKGV4ZWNTdGF0ZSwgY291bnQsIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAg
IHJldHVybiBkb0dldEFsbEtleXMoY291bnQsIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgewog
ICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7
CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBwYXJh
bWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMjIgKzU2LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcm9sbGJhY2tJbmZvRm9yVmVyc2lv
bkNoYW5nZUFib3J0KCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5D
dXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vy
c29yRGlyZWN0aW9uKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJz
b3IoUmVmUHRyPElEQktleVJhbmdlPiYmLCBJREJDdXJzb3JEaXJlY3Rpb24pOwogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gb3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlIGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0
cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmLCBJREJD
dXJzb3JEaXJlY3Rpb24pOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gb3Blbktl
eUN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgSURCQ3Vyc29y
RGlyZWN0aW9uKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlND
OjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBjb3VudChJREJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwog
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQo
SURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJhbmdlKik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSURCS2V5UmFuZ2UqKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXRBbGwoUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0
QWxsS2V5cyhSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKIAogICAgIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mbzsgfQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkKiBvYmplY3RT
dG9yZUFzT3BhcXVlUm9vdCgpIHsgcmV0dXJuICZtX29iamVjdFN0b3JlOyB9CiAKIHByaXZhdGU6
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRvR2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlS
YW5nZURhdGE+KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvT3BlbktleUN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9u
LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
Q291bnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBkb0dldChFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0
YT4pOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1
cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlD
dXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7
CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
OSArNDAsMTkgQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0
XSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKICAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwotICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/
IGtleSk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtl
eSk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdl
dEtleShhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElE
QlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3Rd
IElEQlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwoYW55IGtleSwgb3B0
aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwg
SURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWdu
ZWQgbG9uZyBjb3VudCk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9w
dGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBu
dWxsKTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJh
bmdlPyByYW5nZSA9IG51bGwpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAi
bmV4dCIpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJ
REJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uID0gIm5leHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3Rd
IElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQi
KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURC
S2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiA9ICJuZXh0Iik7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJ
REJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAkocmV2aXNpb24gMjgyMjQx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6
YXV0b0luY3JlbWVudCgpIGNvbgogICAgIHJldHVybiBtX2luZm8uYXV0b0luY3JlbWVudCgpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5D
dXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTE2MiwxOSArMTYyLDE5IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIg
PSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vy
c29ySW5mbzo6b2JqZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbiwgbV9pbmZvLmlkZW50aWZp
ZXIoKSwga2V5UmFuZ2VQb2ludGVyLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6
S2V5QW5kVmFsdWUpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RPcGVuQ3Vyc29y
KGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVl
c3RPcGVuQ3Vyc29yKCp0aGlzLCBpbmZvKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKLSAgICByZXR1cm4gZG9PcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgZGlyZWN0aW9uLCBb
cmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJl
Y3Rpb24sIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdl
OwogICAgIH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5DdXJzb3Io
ZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJl
dHVybiBkb09wZW5DdXJzb3IoZGlyZWN0aW9uLCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsK
ICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0YXRlLCBrZXkp
OwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9uKERhdGFFcnJv
ciwgIkZhaWxlZCB0byBleGVjdXRlICdvcGVuQ3Vyc29yJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBU
aGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkBAIC0xODMsNyArMTgzLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIH0pOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlD
dXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBB
U1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTIwMCwxOSArMjAwLDE5IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKIAogICAgIGF1dG8qIGtleVJhbmdl
UG9pbnRlciA9IGtleVJhbmdlLnJldHVyblZhbHVlKCkuZ2V0KCk7CiAgICAgYXV0byBpbmZvID0g
SURCQ3Vyc29ySW5mbzo6b2JqZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbiwgbV9pbmZvLmlk
ZW50aWZpZXIoKSwga2V5UmFuZ2VQb2ludGVyLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29y
VHlwZTo6S2V5T25seSk7Ci0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdE9wZW5DdXJz
b3IoZXhlY1N0YXRlLCAqdGhpcywgaW5mbyk7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVx
dWVzdE9wZW5DdXJzb3IoKnRoaXMsIGluZm8pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZXhlY1N0YXRlLCBk
aXJlY3Rpb24sIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKKyAgICByZXR1cm4gZG9PcGVu
S2V5Q3Vyc29yKGRpcmVjdGlvbiwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgewogICAgICAg
ICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0
dXJuIGRvT3BlbkN1cnNvcihleGVjU3RhdGUsIGRpcmVjdGlvbiwgW3N0YXRlPSZleGVjU3RhdGUs
IGtleV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJlY3Rpb24sIFtzdGF0ZT0mZXhl
Y1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6
b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBF
eGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9u
ICdJREJPYmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykg
fTsKQEAgLTIzNiwxMCArMjM2LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3QKICAgICBpZiAoIWlkYktleS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zIH07CiAKLSAgICBy
ZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKGV4ZWNTdGF0ZSwgKnRoaXMsIHsg
aWRiS2V5LnB0cigpLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CisgICAg
cmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZCgqdGhpcywgeyBpZGJLZXkucHRy
KCksIElEQkdldFJlY29yZERhdGFUeXBlOjpLZXlBbmRWYWx1ZSB9KTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0KEpTR2xvYmFsT2JqZWN0JiBl
eGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXQiKTsKICAgICBBU1NFUlQoY2FuQ3Vy
cmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkpKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgaWYgKCFrZXlSYW5nZURhdGEuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yIH07CiAKLSAgICByZXR1cm4gbV90
cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKGV4ZWNTdGF0ZSwgKnRoaXMsIHsga2V5UmFuZ2VE
YXRhLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CisgICAgcmV0dXJuIG1f
dHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZCgqdGhpcywgeyBrZXlSYW5nZURhdGEsIElEQkdl
dFJlY29yZERhdGFUeXBlOjpLZXlBbmRWYWx1ZSB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEpTR2xvYmFsT2JqZWN0JiBleGVjU3Rh
dGUsIEpTVmFsdWUga2V5KQpAQCAtMjcyLDEwICsyNzIsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0
S2V5JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtl
eS4iX3MgfTsKIAotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRSZWNvcmQoZXhl
Y1N0YXRlLCAqdGhpcywgeyBpZGJLZXkucHRyKCksIElEQkdldFJlY29yZERhdGFUeXBlOjpLZXlP
bmx5IH0pOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRSZWNvcmQoKnRoaXMs
IHsgaWRiS2V5LnB0cigpLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5T25seSB9KTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkKK0V4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShJREJLZXlSYW5nZSoga2V5
UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRLZXkiKTsK
ICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgaWYgKCFrZXlSYW5n
ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yLCAi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIHBhcmFt
ZXRlciBpcyBub3QgYSB2YWxpZCBrZXkgcmFuZ2UuIl9zIH07CiAKLSAgICByZXR1cm4gbV90cmFu
c2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKGV4ZWNTdGF0ZSwgKnRoaXMsIHsga2V5UmFuZ2VEYXRh
LCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5T25seSB9KTsKKyAgICByZXR1cm4gbV90cmFuc2Fj
dGlvbi5yZXF1ZXN0R2V0UmVjb3JkKCp0aGlzLCB7IGtleVJhbmdlRGF0YSwgSURCR2V0UmVjb3Jk
RGF0YVR5cGU6OktleU9ubHkgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCT2JqZWN0U3RvcmU6OmFkZChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlIGtleSkKQEAgLTMyMiw3ICszMjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpwdXRPckFkZCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAg
YXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KTsKKyAgICBhdXRvIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHN0b3JlIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUgYmVjYXVzZSBpdCBkb2VzIG5vdCBo
YXZlIGEgdmFsaWQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0Il9zIH07CiAKQEAgLTM4NCwxNyAr
Mzg0LDE3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICB9
IGVsc2UgaWYgKCF1c2VzS2V5R2VuZXJhdG9yICYmICFrZXkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBEYXRhRXJyb3IsICJGYWlsZWQgdG8gc3RvcmUgcmVjb3JkIGluIGFuIElEQk9iamVj
dFN0b3JlOiBUaGUgb2JqZWN0IHN0b3JlIHVzZXMgb3V0LW9mLWxpbmUga2V5cyBhbmQgaGFzIG5v
IGtleSBnZW5lcmF0b3IgYW5kIHRoZSBrZXkgcGFyYW1ldGVyIHdhcyBub3QgcHJvdmlkZWQuIl9z
IH07CiAKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0UHV0T3JBZGQoc3RhdGUsICp0
aGlzLCBXVEZNb3ZlKGtleSksICpzZXJpYWxpemVkVmFsdWUsIG92ZXJ3cml0ZU1vZGUpOworICAg
IHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RQdXRPckFkZCgqdGhpcywgV1RGTW92ZShrZXkp
LCAqc2VyaWFsaXplZFZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmpl
Y3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIGtleVJhbmdlKQorRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oSURCS2V5UmFuZ2UqIGtl
eVJhbmdlKQogewotICAgIHJldHVybiBkb0RlbGV0ZShleGVjU3RhdGUsIFtrZXlSYW5nZV0oKSB7
CisgICAgcmV0dXJuIGRvRGVsZXRlKFtrZXlSYW5nZV0oKSB7CiAgICAgICAgIHJldHVybiBtYWtl
UmVmUHRyKGtleVJhbmdlKTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0
aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxl
dGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24iKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0
YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTQyMSwxMiAr
NDIxLDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBp
ZiAoIWtleVJhbmdlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBE
YXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCT2JqZWN0U3RvcmUn
OiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleSByYW5nZS4iX3MgfTsKIAotICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3REZWxldGVSZWNvcmQoZXhlY1N0YXRlLCAqdGhpcywg
a2V5UmFuZ2VEYXRhKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0RGVsZXRlUmVj
b3JkKCp0aGlzLCBrZXlSYW5nZURhdGEpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleSkKIHsKLSAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCBbc3Rh
dGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9EZWxldGUoW3N0YXRlPSZleGVj
U3RhdGUsIGtleV0oKSB7CiAgICAgICAgIGF1dG8gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktl
eSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj57IEV4Y2VwdGlvbihE
YXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCT2JqZWN0U3RvcmUn
OiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkBAIC00MzQsNyArNDM0
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIH0pOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjbGVhcihK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Y2xlYXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RT
dG9yZTo6Y2xlYXIiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTQ1
MywxMCArNDUzLDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QK
ICAgICBpZiAobV90cmFuc2FjdGlvbi5pc1JlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSZWFkb25seUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2NsZWFyJyBvbiAnSURC
T2JqZWN0U3RvcmUnOiBUaGUgdHJhbnNhY3Rpb24gaXMgcmVhZC1vbmx5LiJfcyB9OwogCi0gICAg
cmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoZXhlY1N0YXRlLCAq
dGhpcyk7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdENsZWFyT2JqZWN0U3RvcmUo
KnRoaXMpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgoSlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIElEQktleVBh
dGgmJiBrZXlQYXRoLCBjb25zdCBJbmRleFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitFeGNlcHRp
b25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJLZXlQYXRoJiYga2V5UGF0aCwgY29uc3QgSW5kZXhQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXggJXMgKGtleVBhdGg6ICVzLCB1bmlxdWU6ICVpLCBtdWx0aUVudHJ5OiAlaSkiLCBuYW1l
LnV0ZjgoKS5kYXRhKCksIGxvZ2dpbmdTdHJpbmcoa2V5UGF0aCkudXRmOCgpLmRhdGEoKSwgcGFy
YW1ldGVycy51bmlxdWUsIHBhcmFtZXRlcnMubXVsdGlFbnRyeSk7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKSk7CkBAIC01NzIsMTcgKzU3MiwxNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVl
VG9JREJLZXkoZXhlY1N0YXRlLCBrZXkpOwogCi0gICAgcmV0dXJuIGRvQ291bnQoZXhlY1N0YXRl
LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LT5pc1ZhbGlkKCkgPyBpZGJLZXkucHRyKCkgOiBudWxs
cHRyKSk7CisgICAgcmV0dXJuIGRvQ291bnQoSURCS2V5UmFuZ2VEYXRhKGlkYktleS0+aXNWYWxp
ZCgpID8gaWRiS2V5LnB0cigpIDogbnVsbHB0cikpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjb3VudChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBJREJLZXlSYW5nZSogcmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpjb3VudChJREJLZXlSYW5nZSogcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogCi0gICAgcmV0dXJuIGRvQ291bnQoZXhlY1N0
YXRlLCByYW5nZSA/IElEQktleVJhbmdlRGF0YShyYW5nZSkgOiBJREJLZXlSYW5nZURhdGE6OmFs
bEtleXMoKSk7CisgICAgcmV0dXJuIGRvQ291bnQocmFuZ2UgPyBJREJLZXlSYW5nZURhdGEocmFu
Z2UpIDogSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UpCiB7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERh
dGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CiAKQEAgLTYwMCwx
MCArNjAwLDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAg
ICBpZiAoIXJhbmdlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFF
cnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdjb3VudCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhl
IHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zIH07CiAKLSAgICByZXR1cm4gbV90cmFu
c2FjdGlvbi5yZXF1ZXN0Q291bnQoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOworICAgIHJldHVy
biBtX3RyYW5zYWN0aW9uLnJlcXVlc3RDb3VudCgqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChKU0dsb2JhbE9i
amVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
T2JqZWN0U3RvcmU6OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNz
VGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkp
OwpAQCAtNjE5LDE5ICs2MTksMTkgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdAogICAgICAgICByZXR1cm4ga2V5UmFuZ2UucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgYXV0byoga2V5UmFuZ2VQb2ludGVyID0ga2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5nZXQoKTsK
LSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRz
KGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
OjpWYWx1ZXMsIGNvdW50KTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxs
T2JqZWN0U3RvcmVSZWNvcmRzKCp0aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0
QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKFJlZlB0
cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7
Ci0gICAgcmV0dXJuIGRvR2V0QWxsKGV4ZWNTdGF0ZSwgY291bnQsIFtyYW5nZSA9IFdURk1vdmUo
cmFuZ2UpXSgpIHsKKyAgICByZXR1cm4gZG9HZXRBbGwoY291bnQsIFtyYW5nZSA9IFdURk1vdmUo
cmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoSlNHbG9iYWxPYmpl
Y3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KQogewotICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNT
dGF0ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9HZXRBbGwoY291bnQsIFtzdGF0ZT0mZXhlY1N0
YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25s
eSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNl
cHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zKSB9OwpAQCAtNjQw
LDcgKzY0MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAg
ICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9HZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0b3JlOjpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMiKTsKICAg
ICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTY1NiwxOSArNjU2LDE5IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICAgICAgcmV0dXJuIGtl
eVJhbmdlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGF1dG8qIGtleVJhbmdlUG9pbnRlciA9
IGtleVJhbmdlLnJldHVyblZhbHVlKCkuZ2V0KCk7Ci0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24u
cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5n
ZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291bnQpOworICAgIHJldHVy
biBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoKnRoaXMsIGtl
eVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMo
SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKLSAgICByZXR1cm4gZG9HZXRBbGxL
ZXlzKGV4ZWNTdGF0ZSwgY291bnQsIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKKyAgICBy
ZXR1cm4gZG9HZXRBbGxLZXlzKGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAg
ICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0gICAg
cmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKKyAgICByZXR1cm4gZG9HZXRBbGxLZXlzKGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0
ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHko
KnN0YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0
aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGxLZXlzJyBvbiAnSURCT2Jq
ZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmgJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI3ICs3NCwyNyBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgbXVsdGlFbnRyeTsKICAgICB9OwogCi0gICAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8
SURCS2V5UmFuZ2U+JiYsIElEQkN1cnNvckRpcmVjdGlvbik7CisgICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29y
RGlyZWN0aW9uKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJzb3Io
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlv
bik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vyc29yKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIElEQkN1cnNvckRpcmVjdGlv
bik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vyc29yKFJlZlB0
cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKICAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwot
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBJREJLZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0KElE
QktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSop
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KElEQktleVJhbmdlKik7
CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBhZGQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7CiAgICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBwdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgSlND
OjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVG
dW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRlbGV0ZUZ1bmN0aW9uKElEQktleVJhbmdlKik7CiAgICAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5jdGlvbihKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBjbGVhcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElE
QkluZGV4Pj4gY3JlYXRlSW5kZXgoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCS2V5UGF0aCYmLCBjb25zdCBJbmRleFBhcmFtZXRlcnMmKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGNsZWFyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQklu
ZGV4Pj4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYsIGNvbnN0
IEluZGV4UGFyYW1ldGVycyYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IGluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNv
dW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUg
a2V5KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoUmVmUHRy
PElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhSZWZQdHI8SURCS2V5
UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKIAogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0Rm9yQ3Vyc29yVXBkYXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+JiYsIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYpOwpAQCAtMTE1LDEyICsxMTUsMTIgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBlbnVtIGNsYXNzIElubGluZUtleUNoZWNrIHsgUGVyZm9ybSwgRG9Ob3RQZXJmb3JtIH07
CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBwdXRPckFkZChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGUsIElubGluZUtleUNoZWNrLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmID0gbnVsbHB0cik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBk
b0NvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvRGVsZXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYm
KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlv
bk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJDdXJzb3JE
aXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4o
KT4mJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChKU0M6OkpT
R2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8
SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBk
b09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxF
eGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBX
VEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5
UmFuZ2U+PigpPiAmJik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNp
b24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyOCArNDIsMjggQEAgdHlwZWRlZiAoRE9N
U3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogCiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IHB1dChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkp
OwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBhZGQo
YW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1H
bG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVs
ZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7CisgICAgW05ld09iamVjdCwgSW1wbGVtZW50ZWRB
cz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdl
KTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9
ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwotICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOwotICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/
IGtleSk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAgIFtOZXdPYmpl
Y3RdIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtOZXdPYmplY3QsIENh
bGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0gICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5n
ZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8g
a2V5KTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3Qg
Z2V0S2V5KGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0g
SURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0
aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW05ld09iamVj
dF0gSURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwg
b3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBv
cHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2Jq
ZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRpb25h
bCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNp
Z25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMo
b3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5n
ZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9yY2VS
YW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5
UmFuZ2U/IHJhbmdlID0gbnVsbCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9
ICJuZXh0Iik7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFs
IElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24gPSAibmV4dCIpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyBy
YW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4
dCIpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJ
REJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uID0gIm5leHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3Rd
IElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAogICAgIElEQkluZGV4IGluZGV4KERPTVN0cmlu
ZyBuYW1lKTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCSW5k
ZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9N
U3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOwor
ICAgIFtOZXdPYmplY3RdIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCAoRE9N
U3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIGtleVBhdGgsIG9wdGlvbmFsIElEQkluZGV4
UGFyYW1ldGVycyBvcHRpb25zKTsKICAgICB1bmRlZmluZWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5n
IG5hbWUpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MTgsMzUgKzgxOCwzMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVJbmRl
eE9uU2VyCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9
PSBJREJSZXN1bHRUeXBlOjpSZW5hbWVJbmRleFN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQorUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihJREJPYmplY3RTdG9yZSYg
b2JqZWN0U3RvcmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwogICAgIEFTU0VSVChj
YW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJz
b3JUeXBlOjpLZXlPbmx5KQotICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0
ZSwgSURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3RvcmUsIGluZm8pKTsKKyAgICAgICAgcmV0dXJu
IGRvUmVxdWVzdE9wZW5DdXJzb3IoSURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3RvcmUsIGluZm8p
KTsKIAotICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKHN0YXRlLCBJREJDdXJzb3JXaXRo
VmFsdWU6OmNyZWF0ZShvYmplY3RTdG9yZSwgaW5mbykpOworICAgIHJldHVybiBkb1JlcXVlc3RP
cGVuQ3Vyc29yKElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKG9iamVjdFN0b3JlLCBpbmZvKSk7
CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3Io
SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1cnNvcklu
Zm8mIGluZm8pCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vy
c29yKElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpKTsKIAogICAgIGlmIChpbmZvLmN1cnNvclR5cGUoKSA9PSBJbmRleGVk
REI6OkN1cnNvclR5cGU6OktleU9ubHkpCi0gICAgICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vy
c29yKHN0YXRlLCBJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwgaW5mbykpOworICAgICAgICByZXR1
cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwgaW5mbykpOwog
Ci0gICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNvcldpdGhWYWx1
ZTo6Y3JlYXRlKGluZGV4LCBpbmZvKSk7CisgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Io
SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoaW5kZXgsIGluZm8pKTsKIH0KIAotUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0
JiBzdGF0ZSwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCitSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiB7
CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBB
U1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3Vyc29yLmdl
dCgpLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIApAQCAtOTI2LDE0
ICs5MjQsMTIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uUwogICAg
IGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAotUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRz
KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5
cGUgZ2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsK
ICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KCZzdGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKIApAQCAtOTQ5LDEzICs5NDUsMTIgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlND
OjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYgaW5kZXgsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxs
VHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7CiAgICAgQVNT
RVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFk
TG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1
ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsICp0aGlzKTsKICAg
ICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTAwNSwxNSArMTAwMCwxMyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TCiAgICAgY29tcGxldGVOb25jdXJz
b3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29y
ZERhdGEpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQo
SURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRS
ZWNvcmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIWdldFJl
Y29yZERhdGEua2V5UmFuZ2VEYXRhLmlzTnVsbCk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAot
ICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQogICAgIEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIHR5cGUgPSBnZXRSZWNvcmREYXRhLnR5cGUgPT0gSURC
R2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlID8gSW5kZXhlZERCOjpPYmplY3RTdG9yZVJl
Y29yZFR5cGU6OlZhbHVlT25seSA6IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlOjpL
ZXlPbmx5OwogCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3Rv
cmVHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsIHR5cGUsICp0aGlz
KTsKQEAgLTEwMjksMzEgKzEwMjIsMjkgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZShKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQklu
ZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKElEQkluZGV4JiBpbmRleCwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBy
ZXR1cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJl
Y29yZFR5cGU6OlZhbHVlLCByYW5nZSk7CisgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChp
bmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OlZhbHVlLCByYW5nZSk7CiB9CiAKLVJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShKU0dsb2JhbE9iamVj
dCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
K1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShJREJJbmRleCYg
aW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFsdWUiKTsKICAgICBBU1NFUlQoY2FuQ3Vy
cmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSkpOwogCi0gICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4
ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKKyAgICByZXR1cm4gcmVxdWVzdElu
ZGV4UmVjb3JkKGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6S2V5LCByYW5nZSk7
CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3Jk
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBJbmRleGVkREI6OkluZGV4
UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5kZXgmIGluZGV4
LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghcmFuZ2UuaXNO
dWxsKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YSht
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZzdGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
SW5kZXhHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsIHR5cGUsICp0aGlzKTsK
ICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTEwLDE1ICsxMTAxLDEzIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmUKICAgICBjb21wbGV0ZU5v
bmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9y
ZSkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwp
OwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTMyLDE1ICsxMTIxLDEzIEBAIFJlZjxJREJSZXF1
ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEMKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAot
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmpl
Y3QmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Up
CitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChJREJJbmRleCYg
aW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQgKElEQkluZGV4KSIpOwogICAgIEFTU0VS
VChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7CiAgICAgQVNTRVJUKGNh
bkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQog
ICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBpbmRleCwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAK
QEAgLTExNzEsMTUgKzExNTgsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRP
blNlcnZlcgogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRh
KTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVj
b3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7
CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFk
QWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAg
ICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVl
c3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0
U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMjA5
LDE0ICsxMTk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9uU2UK
ICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAK
LVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUo
SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCitSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKElEQk9i
amVjdFN0b3JlJiBvYmplY3RTdG9yZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkp
OwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMjQ5LDcgKzEyMzIsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlCiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0
KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RQdXRPckFkZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iamVjdFN0b3Jl
JiBvYmplY3RTdG9yZSwgUmVmUHRyPElEQktleT4mJiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1v
ZGUpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIFJlZlB0cjxJREJLZXk+JiYga2V5LCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdFB1dE9yQWRkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtMTI1Nyw4ICsxMjQw
LDYgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UAogICAgIEFTU0VS
VChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7CiAgICAgQVNTRVJU
KGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsK
LQogICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBvYmplY3RTdG9yZSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5n
ZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE4
ICsxMTIsMTggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gY3JlYXRl
SW5kZXgoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJJbmRleEluZm8mKTsKICAgICB2b2lkIHJl
bmFtZUluZGV4KElEQkluZGV4JiwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKIAotICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0UHV0T3JBZGQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVj
dFN0b3JlJiwgUmVmUHRyPElEQktleT4mJiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1
ZXN0R2V0UmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0
IElEQkdldFJlY29yZERhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbElu
ZGV4UmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29yZChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
LSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIElEQk9iamVjdFN0b3JlJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RD
b3VudChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENvdW50KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0R2V0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RH
ZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29yKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKLSAgICBS
ZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElE
QkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1
ZXN0UHV0T3JBZGQoSURCT2JqZWN0U3RvcmUmLCBSZWZQdHI8SURCS2V5PiYmLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJ
bmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0RGVsZXRlUmVj
b3JkKElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgUmVmPElE
QlJlcXVlc3Q+IHJlcXVlc3RDbGVhck9iamVjdFN0b3JlKElEQk9iamVjdFN0b3JlJik7CisgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291bnQoSURCSW5kZXgm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdl
dFZhbHVlKElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3RHZXRLZXkoSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
KyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSURCT2JqZWN0U3RvcmUmLCBj
b25zdCBJREJDdXJzb3JJbmZvJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vy
c29yKElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQgaXRlcmF0ZUN1
cnNvcihJREJDdXJzb3ImLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAgdm9p
ZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CkBAIC0x
ODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVPbkFib3J0KCk7CiAgICAgdm9p
ZCBlbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1
ZXN0SW5kZXhSZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4JiwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5kZXgmLCBJbmRleGVkREI6OkluZGV4UmVj
b3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAKICAgICB2b2lkIGNvbW1pdE9uU2Vy
dmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBwZW5kaW5nUmVx
dWVzdENvdW50KTsKICAgICB2b2lkIGFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IGRvUmVxdWVzdE9wZW5DdXJz
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxJREJDdXJzb3I+JiYpOworICAgIFJlZjxJREJS
ZXF1ZXN0PiBkb1JlcXVlc3RPcGVuQ3Vyc29yKFJlZjxJREJDdXJzb3I+JiYpOwogICAgIHZvaWQg
b3BlbkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25z
dCBJREJDdXJzb3JJbmZvJik7CiAgICAgdm9pZCBkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIoSURCUmVx
dWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAJKHJldmlzaW9uIDI4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNyArNDYx
LDYgQEAgcHVibGljOgogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFjdGl2YXRvcihp
ZGJUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1
ZXN0OwotICAgICAgICBhdXRvKiBleGVjID0gY29udGV4dCgpID8gY29udGV4dCgpLT5nbG9iYWxP
YmplY3QoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkg
ewpAQCAtNDY5LDE3ICs0NjgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGV4ZWMpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IGlkYkluZGV4LT5vcGVuQ3Vyc29yKCpleGVjLCBtX2lkYktleVJhbmdl
LmdldCgpLCBJREJDdXJzb3JEaXJlY3Rpb246Ok5leHQpOwotICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBpZGJSZXF1ZXN0ID0g
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBpZGJJbmRleC0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLmdldCgpLCBJ
REJDdXJzb3JEaXJlY3Rpb246Ok5leHQpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChleGVjKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvcigq
ZXhlYywgbV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpOZXh0KTsKLSAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICAgICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJz
b3IobV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpOZXh0KTsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlkYlJl
cXVlc3QgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWlkYlJlcXVlc3QpIHsKQEAgLTcwMywxNSArNjk4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFjdGl2YXRvcihpZGJUcmFuc2Fj
dGlvbi5nZXQoKSk7Ci0gICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1ZXN0OwotICAg
ICAgICBpZiAoYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0
KCkgOiBudWxscHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9iamVjdFN0b3Jl
LT5jbGVhcigqZXhlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRpb24o
KSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAg
ICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKG1ha2VTdHJpbmcoIkNvdWxkIG5v
dCBjbGVhciBvYmplY3Qgc3RvcmUgJyIsIG1fb2JqZWN0U3RvcmVOYW1lLCAiJzogIiwgc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZGJSZXF1ZXN0ID0g
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9i
amVjdFN0b3JlLT5jbGVhcigpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRpb24o
KSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIG1f
cmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShtYWtlU3RyaW5nKCJDb3VsZCBub3QgY2xlYXIg
b2JqZWN0IHN0b3JlICciLCBtX29iamVjdFN0b3JlTmFtZSwgIic6ICIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpKSk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZGJUcmFuc2FjdGlvbi0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyOjpj
cmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSwgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODIyNDEpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDktMDkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIEFzc2VydGlvbnMgaW4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3QqKCkgbWV0aG9kcyBmYWls
IG9uIGNyb3NzLXJlYWxtIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDEyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1j
cm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0
c3RvcmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0t
bWV0aG9kcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wOS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICByaWdodC0gYW5kIGJvdHRvbS1yZWxhdGl2ZSB2
YWx1ZXMgaW4gYmFja2dyb3VuZC1wb3NpdGlvbi14L3kgZG9uJ3Qgd29yawpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgt
Y3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtY3Jv
c3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtY3Jv
c3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
IEBACisKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCSW5kZXg6OmdldCgpIG1ldGhvZCBmcm9tIGRldGFj
aGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQkluZGV4
OjpnZXRLZXkoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3Rl
ZAorUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRleDo6Z2V0QWxsKCkgbWV0aG9kIGZyb20gZGV0YWNo
ZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCSW5kZXg6
OmdldEFsbEtleXMoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBl
Y3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRleDo6Y291bnQoKSBtZXRob2QgZnJvbSBkZXRh
Y2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRl
eDo6b3BlbkN1cnNvcigpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4
cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKCkgbWV0aG9k
IGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKKwpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgt
Y3Jvc3MtcmVhbG0tbWV0aG9kcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4LWNyb3NzLXJlYWxt
LW1ldGhvZHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2Rz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLXJlYWxtIElEQkluZGV4IG1ldGhvZHMg
ZnJvbSBkZXRhY2hlZCBpZnJhbWUgd29yayBhcyBleHBlY3RlZDwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPXN1cHBvcnQu
anM+PC9zY3JpcHQ+CisKKzxib2R5PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2NvbnN0IElO
REVYX0xPV0VSID0gMTAwMDsKK2NvbnN0IElOREVYX1VQUEVSID0gMTAwMTsKK2NvbnN0IElOREVY
X1JBTkdFID0gSURCS2V5UmFuZ2UuYm91bmQoSU5ERVhfTE9XRVIsIElOREVYX1VQUEVSKTsKKwor
Y29uc3QgdGVzdENhc2VzID0gWworICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImdldCIsCisg
ICAgICAgIGFyZ3VtZW50czogW0lOREVYX0xPV0VSXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6
IGUgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQuaW5kZXhl
ZEtleSwgSU5ERVhfTE9XRVIpOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgICBt
ZXRob2ROYW1lOiAiZ2V0S2V5IiwKKyAgICAgICAgYXJndW1lbnRzOiBbSU5ERVhfVVBQRVJdLAor
ICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGUudGFyZ2V0LnJlc3VsdCwgSU5ERVhfVVBQRVIpOworICAgICAgICB9LAorICAgIH0sCisgICAg
eworICAgICAgICBtZXRob2ROYW1lOiAiZ2V0QWxsIiwKKyAgICAgICAgYXJndW1lbnRzOiBbSU5E
RVhfUkFOR0VdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdC5tYXAodiA9PiB2LmluZGV4ZWRLZXkp
LCBbSU5ERVhfTE9XRVIsIElOREVYX1VQUEVSXSk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7
CisgICAgICAgIG1ldGhvZE5hbWU6ICJnZXRBbGxLZXlzIiwKKyAgICAgICAgYXJndW1lbnRzOiBb
SU5ERVhfUkFOR0VdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgW0lOREVYX0xPV0VSLCBJTkRF
WF9VUFBFUl0pOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgICBtZXRob2ROYW1l
OiAiY291bnQiLAorICAgICAgICBhcmd1bWVudHM6IFtJTkRFWF9SQU5HRV0sCisgICAgICAgIHZh
bGlkYXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJnZXQu
cmVzdWx0LCAyKTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFt
ZTogIm9wZW5DdXJzb3IiLAorICAgICAgICBhcmd1bWVudHM6IFtdLAorICAgICAgICB2YWxpZGF0
ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAgICBjb25zdCBjdXJzb3IgPSBlLnRhcmdldC5yZXN1
bHQ7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3Ip
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdXJzb3IudmFsdWUuaW5kZXhlZEtleSwgSU5E
RVhfTE9XRVIpOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgICBtZXRob2ROYW1l
OiAib3BlbktleUN1cnNvciIsCisgICAgICAgIGFyZ3VtZW50czogW10sCisgICAgICAgIHZhbGlk
YXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGUudGFyZ2V0LnJl
c3VsdDsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
cik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1cnNvci5rZXksIElOREVYX0xPV0VSKTsK
KyAgICAgICAgfSwKKyAgICB9LAorXTsKKworZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiB0ZXN0Q2Fz
ZXMpIHsKKyAgICBhc3luY190ZXN0KHQgPT4geworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lLm9ubG9hZCA9ICgp
ID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IGlmcmFtZS5jb250ZW50V2luZG93LklE
QkluZGV4LnByb3RvdHlwZVt0ZXN0Q2FzZS5tZXRob2ROYW1lXTsKKyAgICAgICAgICAgIGlmcmFt
ZS5yZW1vdmUoKTsKKworICAgICAgICAgICAgbGV0IGRiOworICAgICAgICAgICAgY29uc3Qgb3Bl
bl9ycSA9IGNyZWF0ZWRiKHQpOworICAgICAgICAgICAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQg
PSBlID0+IHsKKyAgICAgICAgICAgICAgICBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAg
ICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIp
OworICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJpbmRleCIsICJpbmRl
eGVkS2V5Iik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHsgaW5kZXhlZEtleTog
SU5ERVhfTE9XRVIgfSwgSU5ERVhfTE9XRVIpOworICAgICAgICAgICAgICAgIG9iamVjdFN0b3Jl
LmFkZCh7IGluZGV4ZWRLZXk6IElOREVYX1VQUEVSIH0sIElOREVYX1VQUEVSKTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIG9wZW5fcnEub25zdWNjZXNzID0gKCkgPT4geworICAgICAg
ICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIikub2JqZWN0U3Rv
cmUoInN0b3JlIikuaW5kZXgoImluZGV4Iik7CisgICAgICAgICAgICAgICAgY29uc3QgcnEgPSBt
ZXRob2QuY2FsbChpbmRleCwgLi4udGVzdENhc2UuYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAg
ICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4geworICAgICAgICAgICAgICAg
ICAgICB0ZXN0Q2FzZS52YWxpZGF0ZVJlc3VsdChlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlm
cmFtZSk7CisgICAgfSwgYENyb3NzLXJlYWxtIElEQkluZGV4Ojoke3Rlc3RDYXNlLm1ldGhvZE5h
bWV9KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWRgKTsK
K30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy1l
eHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0tbWV0
aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorCitQQVNT
IENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpwdXQoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8
aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9y
ZTo6YWRkKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQK
K1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSgpIG1ldGhvZCBmcm9tIGRl
dGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9i
amVjdFN0b3JlOjpjbGVhcigpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFz
IGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpnZXQoKSBtZXRob2Qg
ZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFs
bSBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4g
d29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6OmdldEFs
bCgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNT
IENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKCkgbWV0aG9kIGZyb20gZGV0
YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2Jq
ZWN0U3RvcmU6OmNvdW50KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMg
ZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoKSBt
ZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9z
cy1yZWFsbSBJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvcigpIG1ldGhvZCBmcm9tIGRldGFj
aGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNyb3Nz
LXJlYWxtLW1ldGhvZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFs
bS1tZXRob2RzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0t
bWV0aG9kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3MtcmVhbG0gSURCT2JqZWN0
U3RvcmUgbWV0aG9kcyBmcm9tIGRldGFjaGVkIGlmcmFtZSB3b3JrIGFzIGV4cGVjdGVkPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9c3VwcG9ydC5qcz48L3NjcmlwdD4KKworPGJvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJp
Y3QiOworY29uc3QgS0VZX0VYSVNUSU5HX0xPV0VSID0gMTAwMDsKK2NvbnN0IEtFWV9FWElTVElO
R19VUFBFUiA9IDEwMDE7Citjb25zdCBLRVlfRVhJU1RJTkdfUkFOR0UgPSBJREJLZXlSYW5nZS5i
b3VuZChLRVlfRVhJU1RJTkdfTE9XRVIsIEtFWV9FWElTVElOR19VUFBFUik7Citjb25zdCBLRVlf
TkVXTFlfQURERUQgPSAxMDAyOworCitjb25zdCBWQUxVRV9FWElTVElOR19MT1dFUiA9ICJWQUxV
RV9FWElTVElOR19MT1dFUiI7Citjb25zdCBWQUxVRV9FWElTVElOR19VUFBFUiA9ICJWQUxVRV9F
WElTVElOR19VUFBFUiI7Citjb25zdCBWQUxVRV9ORVdMWV9BRERFRCA9ICJWQUxVRV9ORVdMWV9B
RERFRCI7CisKK2NvbnN0IHRlc3RDYXNlcyA9IFsKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6
ICJwdXQiLAorICAgICAgICBhcmd1bWVudHM6IFtLRVlfTkVXTFlfQURERUQsIEtFWV9FWElTVElO
R19MT1dFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIEtFWV9FWElTVElOR19MT1dFUik7Cisg
ICAgICAgICAgICBjb25zdCBycSA9IGUudGFyZ2V0LnNvdXJjZS5nZXRBbGwoKTsKKyAgICAgICAg
ICAgIHJxLm9uc3VjY2VzcyA9IHQuc3RlcF9mdW5jX2RvbmUoZSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIFtLRVlfTkVXTFlfQURERUQs
IFZBTFVFX0VYSVNUSU5HX1VQUEVSXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAg
ICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImFkZCIsCisgICAgICAgIGFyZ3VtZW50
czogW1ZBTFVFX05FV0xZX0FEREVELCBLRVlfTkVXTFlfQURERURdLAorICAgICAgICB2YWxpZGF0
ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJnZXQu
cmVzdWx0LCBLRVlfTkVXTFlfQURERUQpOworICAgICAgICAgICAgY29uc3QgcnEgPSBlLnRhcmdl
dC5zb3VyY2UuZ2V0QWxsKCk7CisgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVu
Y19kb25lKGUgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS50YXJn
ZXQucmVzdWx0LCBbVkFMVUVfRVhJU1RJTkdfTE9XRVIsIFZBTFVFX0VYSVNUSU5HX1VQUEVSLCBW
QUxVRV9ORVdMWV9BRERFRF0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgfSwK
KyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJkZWxldGUiLAorICAgICAgICBhcmd1bWVudHM6
IFtLRVlfRVhJU1RJTkdfTE9XRVJdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogKHQsIGUpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCB1bmRlZmluZWQp
OworICAgICAgICAgICAgY29uc3QgcnEgPSBlLnRhcmdldC5zb3VyY2UuZ2V0QWxsS2V5cygpOwor
ICAgICAgICAgICAgcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmNfZG9uZShlID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgW0tFWV9FWElT
VElOR19VUFBFUl0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7
CisgICAgICAgIG1ldGhvZE5hbWU6ICJjbGVhciIsCisgICAgICAgIGFyZ3VtZW50czogW10sCisg
ICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhlLnRhcmdldC5yZXN1bHQsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICBjb25zdCBycSA9
IGUudGFyZ2V0LnNvdXJjZS5jb3VudCgpOworICAgICAgICAgICAgcnEub25zdWNjZXNzID0gdC5z
dGVwX2Z1bmNfZG9uZShlID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUudGFy
Z2V0LnJlc3VsdCwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICB9LAorICAg
IHsKKyAgICAgICAgbWV0aG9kTmFtZTogImdldCIsCisgICAgICAgIGFyZ3VtZW50czogW0tFWV9F
WElTVElOR19VUFBFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIFZBTFVFX0VYSVNUSU5HX1VQ
UEVSKTsKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9LAorICAgIH0sCisgICAgewor
ICAgICAgICBtZXRob2ROYW1lOiAiZ2V0S2V5IiwKKyAgICAgICAgYXJndW1lbnRzOiBbS0VZX0VY
SVNUSU5HX0xPV0VSXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgS0VZX0VYSVNUSU5HX0xPV0VS
KTsKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAg
ICAgICBtZXRob2ROYW1lOiAiZ2V0QWxsIiwKKyAgICAgICAgYXJndW1lbnRzOiBbS0VZX0VYSVNU
SU5HX1JBTkdFXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgW1ZBTFVFX0VYSVNUSU5H
X0xPV0VSLCBWQUxVRV9FWElTVElOR19VUFBFUl0pOworICAgICAgICAgICAgdC5kb25lKCk7Cisg
ICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJnZXRBbGxLZXlz
IiwKKyAgICAgICAgYXJndW1lbnRzOiBbS0VZX0VYSVNUSU5HX1JBTkdFXSwKKyAgICAgICAgdmFs
aWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGUudGFyZ2V0LnJlc3VsdCwgW0tFWV9FWElTVElOR19MT1dFUiwgS0VZX0VYSVNUSU5HX1VQUEVS
XSk7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAg
ICAgICAgbWV0aG9kTmFtZTogImNvdW50IiwKKyAgICAgICAgYXJndW1lbnRzOiBbXSwKKyAgICAg
ICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGUudGFyZ2V0LnJlc3VsdCwgMik7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAgfSwK
KyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogIm9wZW5DdXJzb3IiLAorICAgICAg
ICBhcmd1bWVudHM6IFtdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGN1cnNvci52YWx1ZSwgVkFMVUVfRVhJU1RJTkdfTE9XRVIpOworICAgICAgICAg
ICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5h
bWU6ICJvcGVuS2V5Q3Vyc29yIiwKKyAgICAgICAgYXJndW1lbnRzOiBbXSwKKyAgICAgICAgdmFs
aWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBjb25zdCBjdXJzb3IgPSBlLnRh
cmdldC5yZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJ
REJDdXJzb3IpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdXJzb3Iua2V5LCBLRVlfRVhJ
U1RJTkdfTE9XRVIpOworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwK
K107CisKK2ZvciAoY29uc3QgdGVzdENhc2Ugb2YgdGVzdENhc2VzKSB7CisgICAgYXN5bmNfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBtZXRob2QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5JREJPYmplY3RTdG9yZS5wcm90b3R5
cGVbdGVzdENhc2UubWV0aG9kTmFtZV07CisgICAgICAgICAgICBpZnJhbWUucmVtb3ZlKCk7CisK
KyAgICAgICAgICAgIGxldCBkYjsKKyAgICAgICAgICAgIGNvbnN0IG9wZW5fcnEgPSBjcmVhdGVk
Yih0KTsKKyAgICAgICAgICAgIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZSA9PiB7CisgICAg
ICAgICAgICAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICAgICAgY29uc3Qg
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiKTsKKyAgICAgICAgICAg
ICAgICBvYmplY3RTdG9yZS5hZGQoVkFMVUVfRVhJU1RJTkdfTE9XRVIsIEtFWV9FWElTVElOR19M
T1dFUik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuYWRkKFZBTFVFX0VYSVNUSU5HX1VQ
UEVSLCBLRVlfRVhJU1RJTkdfVVBQRVIpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
b3Blbl9ycS5vbnN1Y2Nlc3MgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0
U3RvcmUgPSBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdyaXRlIikub2JqZWN0U3RvcmUo
InN0b3JlIik7CisgICAgICAgICAgICAgICAgY29uc3QgcnEgPSBtZXRob2QuY2FsbChvYmplY3RT
dG9yZSwgLi4udGVzdENhc2UuYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBycS5vbnN1Y2Nl
c3MgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhc2UudmFs
aWRhdGVSZXN1bHQodCwgZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOworICAgIH0s
IGBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6JHt0ZXN0Q2FzZS5tZXRob2ROYW1lfSgpIG1l
dGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkYCk7Cit9Cis8L3Nj
cmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441165</attachid>
            <date>2021-10-13 17:36:53 -0700</date>
            <delta_ts>2021-10-24 09:53:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230128-20211014013649.patch</filename>
            <type>text/plain</type>
            <size>80964</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDIxLTEwLTEzICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBc3NlcnRpb25zIGlu
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0KigpIG1ldGhvZHMgZmFpbCBvbiBjcm9zcy1yZWFsbSBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzAxMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eGNlcHQgd2hlbiB1c2VkIHdpdGggY29uc3RydWN0b3JzLCBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBXZWJJREwgYXR0cmlidXRlIHBhc3NlcworICAgICAgICBfY3VycmVudF8gZ2xvYmFsIG9iamVj
dCBbMV0sIG9uZSB0aGF0IHRoZSBmdW5jdGlvbiB3YXMgY3JlYXRlZCBpbi4KKworICAgICAgICBB
IG1ldGhvZCBmcm9tIGFub3RoZXIgcmVhbG0gaGFzIGRpZmZlcmVudCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRoYW4gdGhlIElEQlRyYW5zYWN0aW9uLAorICAgICAgICBhbmQgaXQncyBmaW5lOiBm
dW5jdGlvbidzIGdsb2JhbCBvYmplY3QgaXMgdXNlZCBvbmx5IGZvciBJREJLZXkgcGFyc2luZyBh
bmQgc3RydWN0dXJlCisgICAgICAgIGNsb25pbmcgYXMgcGVyIHNwZWMgWzJdLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBpbmNvcnJlY3QgYXNzZXJ0aW9ucywgZml4aW5nIElEQk9iamVj
dFN0b3JlIC8gSURCSW5kZXggY3Jvc3MtcmVhbG0KKyAgICAgICAgbWV0aG9kcyBub3QgdG8gY3Jh
c2ggLS1kZWJ1ZyBidWlsZCwgYW5kIHJlbW92ZXMgbm93IHVudXNlZCBKU0dsb2JhbE9iamVjdCBw
YXJhbWV0ZXJzLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjY29uY2VwdC1jdXJyZW50LWV2ZXJ5dGhpbmcKKyAgICAg
ICAgWzJdIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9JbmRleGVkREIvI3JlZi1mb3ItcmV0cmlldmUt
YS12YWx1ZS1mcm9tLWFuLW9iamVjdC1zdG9yZQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRo
b2RzLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
SW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNyb3NzLXJlYWxtLW1ldGhvZHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmRvT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9PcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6ZG9Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEtleSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRBbGxLZXlzKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCk6CisgICAg
ICAgIFVzZSBJREJPYmplY3RTdG9yZSdzIGNvbnRleHQgaW5zdGVhZCBvZiBfY3VycmVudF8gZ2xv
YmFsIG9iamVjdCBmb3IgcHJpdmF0ZSBicm93c2luZworICAgICAgICBjaGVjayBhcyBwZXIgcmVj
b21tZW5kYXRpb24gZm9yIHNwZWMgYXV0aG9ycyBbMV0uIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJl
IG9ic2VydmFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRv
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxs
SW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorCiAyMDIxLTEwLTEzICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFByZXNl
cnZlZCB0YWIgaXMgbm90IGEgd29yZCBzZXBhcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkocmV2aXNpb24gMjg0MTM0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRl
Q3Vyc29yKGMKICAgICB0cmFuc2FjdGlvbigpLml0ZXJhdGVDdXJzb3IoKnRoaXMsIHsga2V5LCBw
cmltYXJ5S2V5LCAwIH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVz
dD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmIHN0YXRlKQorRXhj
ZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0
aW9uKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbiIp
OwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVj
dGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgp
KSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVl
c3Q+PiBJRAogICAgIGlmICghaXNLZXlDdXJzb3JXaXRoVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0
ZScgb24gJ0lEQkN1cnNvcic6IFRoZSBjdXJzb3IgaXMgYSBrZXkgY3Vyc29yLiJfcyB9OwogCi0g
ICAgYXV0byByZXN1bHQgPSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLmRlbGV0ZUZ1bmN0aW9uKHN0
YXRlLCBJREJLZXlSYW5nZTo6Y3JlYXRlKG1fcHJpbWFyeUtleS5jb3B5UmVmKCkpLnB0cigpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkuZGVsZXRlRnVuY3Rpb24o
SURCS2V5UmFuZ2U6OmNyZWF0ZShtX3ByaW1hcnlLZXkuY29weVJlZigpKS5wdHIoKSk7CiAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5oCShyZXZpc2lvbiAyODQxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWR2YW5jZSh1bnNpZ25lZCk7CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gY29udGludWVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1ZhbHVlIGtleSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udGludWVQcmltYXJ5S2V5
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBKU0M6OkpTVmFsdWUgcHJp
bWFyeUtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5jdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkZWxldGVGdW5jdGlvbigpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udGludWVGdW5j
dGlvbihjb25zdCBJREJLZXlEYXRhJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkocmV2aXNpb24gMjg0MTM0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNSArNDAsNSBAQAogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBj
b250aW51ZVByaW1hcnlLZXkoYW55IGtleSwgYW55IHByaW1hcnlLZXkpOwogCiAgICAgW05ld09i
amVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUp
OwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1k
ZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoKTsKKyAgICBbTmV3T2JqZWN0LCBJbXBs
ZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAJKHJldmlz
aW9uIDI4NDEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSURCSW5kZXg6OnJv
bGxiYWNrSW5mb0ZvclZlcnNpb25DaGEKICAgICBtX2RlbGV0ZWQgPSBmYWxzZTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29yKEpTR2xvYmFs
T2JqZWN0JiBleGVjU3RhdGUsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvT3BlbkN1cnNvcihJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQklu
ZGV4OjpvcGVuQ3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJl
YWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkpKTsKQEAgLTE2NiwxOSArMTY2LDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmQKICAgICAgICAgcmFuZ2VEYXRhLnVwcGVyS2V5ID0gSURCS2V5RGF0
YTo6bWF4aW11bSgpOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29ySW5mbzo6aW5kZXhDdXJz
b3IobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLCBtX29iamVjdFN0b3JlLmluZm8oKS5pZGVu
dGlmaWVyKCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlRGF0YSwgZGlyZWN0aW9uLCBJbmRl
eGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8p
OworICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJz
b3IoKnRoaXMsIGluZm8pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK0V4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoUmVmUHRyPElEQktleVJhbmdl
PiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBk
b09wZW5DdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtyYW5nZT1XVEZNb3ZlKHJhbmdlKV0o
KSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJlY3Rpb24sIFtyYW5nZSA9IFdURk1vdmUo
cmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0
JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewotICAgIHJldHVybiBkb09wZW5DdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtzdGF0ZT0m
ZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb09wZW5DdXJzb3IoZGlyZWN0aW9uLCBb
c3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJ
REJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5D
dXJzb3InIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJf
cykgfTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
QkluZGV4OjpvCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmRvT3BlbktleUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0
aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOwog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0
U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0yMDQs
MTkgKzIwNCwxOSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAK
ICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgp
OwogICAgIGF1dG8gaW5mbyA9IElEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKG1fb2JqZWN0U3Rv
cmUudHJhbnNhY3Rpb24oKSwgbV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpLCBtX2lu
Zm8uaWRlbnRpZmllcigpLCBrZXlSYW5nZVBvaW50ZXIsIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlOjpLZXlPbmx5KTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAgIHJldHVy
biBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKnRoaXMsIGlu
Zm8pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiBy
YW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmIHJh
bmdlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5L
ZXlDdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtyYW5nZT1XVEZNb3ZlKHJhbmdlKV0oKSB7
CisgICAgcmV0dXJuIGRvT3BlbktleUN1cnNvcihkaXJlY3Rpb24sIFtyYW5nZSA9IFdURk1vdmUo
cmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKEpTR2xvYmFsT2Jq
ZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
KQogewotICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtz
dGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZGly
ZWN0aW9uLCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlS
ZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1
dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEg
dmFsaWQga2V5LiJfcykgfTsKQEAgLTIyNSwxMSArMjI1LDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6Om8KICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Y291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURC
S2V5UmFuZ2UqIHJhbmdlKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
Y291bnQoSURCS2V5UmFuZ2UqIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRl
eDo6Y291bnQiKTsKIAotICAgIHJldHVybiBkb0NvdW50KGV4ZWNTdGF0ZSwgcmFuZ2UgPyBJREJL
ZXlSYW5nZURhdGEocmFuZ2UpIDogSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCkpOworICAgIHJl
dHVybiBkb0NvdW50KHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdl
RGF0YTo6YWxsS2V5cygpKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6Y291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCkBAIC0y
MzksMTAgKzIzOSwxMCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpj
CiAgICAgYXV0byBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwga2V5KTsK
ICAgICBhdXRvKiBpZGJLZXlQb2ludGVyID0gaWRiS2V5LT5pc1ZhbGlkKCkgPyBpZGJLZXkucHRy
KCkgOiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRvQ291bnQoZXhlY1N0YXRlLCBJREJLZXlSYW5n
ZURhdGEoaWRiS2V5UG9pbnRlcikpOworICAgIHJldHVybiBkb0NvdW50KElEQktleVJhbmdlRGF0
YShpZGJLZXlQb2ludGVyKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmRvQ291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRv
Q291bnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3Vy
cmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgaWYgKCFyYW5nZS5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IsICJGYWlsZWQg
dG8gZXhlY3V0ZSAnY291bnQnIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEg
dmFsaWQga2V5LiJfcyB9OwogCi0gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RDb3VudChl
eGVjU3RhdGUsICp0aGlzLCByYW5nZSk7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RD
b3VudCgqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
QkluZGV4OjpnZXQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdl
KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0KElEQktleVJhbmdl
KiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldCIpOwogCi0gICAg
cmV0dXJuIGRvR2V0KGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSk7CisgICAgcmV0
dXJuIGRvR2V0KElEQktleVJhbmdlRGF0YShyYW5nZSkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXkpCkBAIC0yNzIsMTIgKzI3MiwxMiBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4OjpnCiAKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXko
ZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiBkb0dldChleGVjU3RhdGUsIEV4Y2VwdGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhl
Y3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtl
eS4iX3MpKTsKKyAgICAgICAgcmV0dXJuIGRvR2V0KEV4Y2VwdGlvbihEYXRhRXJyb3IsICJGYWls
ZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBh
IHZhbGlkIGtleS4iX3MpKTsKIAotICAgIHJldHVybiBkb0dldChleGVjU3RhdGUsIElEQktleVJh
bmdlRGF0YShpZGJLZXkucHRyKCkpKTsKKyAgICByZXR1cm4gZG9HZXQoSURCS2V5UmFuZ2VEYXRh
KGlkYktleS5wdHIoKSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4Ojpkb0dldChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBFeGNlcHRpb25PcjxJREJLZXlS
YW5nZURhdGE+IHJhbmdlKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
ZG9HZXQoRXhjZXB0aW9uT3I8SURCS2V5UmFuZ2VEYXRhPiByYW5nZSkKIHsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogCkBAIC0yOTUsMTQgKzI5NSwx
NCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgaWYgKGtl
eVJhbmdlLmlzTnVsbCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9Owog
Ci0gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRWYWx1ZShleGVjU3RhdGUsICp0aGlz
LCBrZXlSYW5nZSk7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRWYWx1ZSgqdGhp
cywga2V5UmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
OjpnZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlKQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KElEQktleVJhbmdl
KiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEtleSIpOwogCi0g
ICAgcmV0dXJuIGRvR2V0S2V5KGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSk7Cisg
ICAgcmV0dXJuIGRvR2V0S2V5KElEQktleVJhbmdlRGF0YShyYW5nZSkpOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCkBAIC0zMTEsMTIgKzMxMSwxMiBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnCiAKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZh
bHVlVG9JREJLZXkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybiBkb0dldEtleShleGVjU3RhdGUsIEV4Y2VwdGlvbihEYXRhRXJyb3Is
ICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVy
IGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpKTsKKyAgICAgICAgcmV0dXJuIGRvR2V0S2V5KEV4Y2Vw
dGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCSW5kZXgn
OiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpKTsKIAotICAgIHJldHVybiBk
b0dldEtleShleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJLZXkucHRyKCkpKTsKKyAgICBy
ZXR1cm4gZG9HZXRLZXkoSURCS2V5UmFuZ2VEYXRhKGlkYktleS5wdHIoKSkpOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEtleShKU0dsb2JhbE9iamVj
dCYgZXhlY1N0YXRlLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJhbmdlKQorRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRLZXkoRXhjZXB0aW9uT3I8SURC
S2V5UmFuZ2VEYXRhPiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vz
c1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSkpOwogCkBAIC0zMzQsMTAgKzMzNCwxMCBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgaWYgKGtleVJhbmdlLmlzTnVsbCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCi0gICAgcmV0dXJuIHRyYW5zYWN0
aW9uLnJlcXVlc3RHZXRLZXkoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2UpOworICAgIHJldHVy
biB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0S2V5KCp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0
JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0
QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEo
bV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsK
QEAgLTM1MywxOSArMzUzLDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmQKICAgICAgICAgcmV0dXJuIGtleVJhbmdlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAg
IGF1dG8ga2V5UmFuZ2VQb2ludGVyID0ga2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5nZXQoKTsKLSAg
ICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJl
Y29yZHMoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFs
bFR5cGU6OlZhbHVlcywgY291bnQpOworICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0
aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcygqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJ
bmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVlcywgY291bnQpOwogfQogCi1FeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0
ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewotICAgIHJldHVybiBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3Zl
KHJhbmdlKV0oKSB7CisgICAgcmV0dXJuIGRvR2V0QWxsKGNvdW50LCBbcmFuZ2UgPSBXVEZNb3Zl
KHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBl
eGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsK
LSAgICByZXR1cm4gZG9HZXRBbGwoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRlPSZleGVjU3RhdGUs
IGtleV0oKSB7CisgICAgcmV0dXJuIGRvR2V0QWxsKGNvdW50LCBbc3RhdGUgPSAmZXhlY1N0YXRl
LCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgq
c3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRp
b24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4Jzog
VGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zKSB9OwpAQCAtMzc0LDcgKzM3NCw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmcKICAgICB9KTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRBbGxLZXlzKEpT
R2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBX
VEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rp
b24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCSW5kZXg6OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtMzkwLDE5ICszOTAsMTkgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZAogICAgICAgICByZXR1cm4ga2V5UmFuZ2UucmVsZWFz
ZUV4Y2VwdGlvbigpOwogCiAgICAgYXV0byoga2V5UmFuZ2VQb2ludGVyID0ga2V5UmFuZ2UucmV0
dXJuVmFsdWUoKS5nZXQoKTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigp
LnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VQb2lu
dGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKKyAgICByZXR1cm4gbV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoKnRoaXMs
IGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9
CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNH
bG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmdldEFsbEtleXMoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKLSAgICByZXR1cm4gZG9HZXRBbGxLZXlzKGV4ZWNT
dGF0ZSwgY291bnQsIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKKyAgICByZXR1cm4gZG9H
ZXRBbGxLZXlzKGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJl
dHVybiByYW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJJbmRleDo6Z2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtl
eSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0gICAgcmV0dXJuIGRvR2V0QWxs
S2V5cyhleGVjU3RhdGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKKyAgICBy
ZXR1cm4gZG9HZXRBbGxLZXlzKGNvdW50LCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewog
ICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7
CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBwYXJh
bWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAkocmV2aXNpb24gMjg0MTM0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMjIgKzU2LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcm9sbGJhY2tJbmZvRm9yVmVyc2lv
bkNoYW5nZUFib3J0KCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5D
dXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vy
c29yRGlyZWN0aW9uKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJz
b3IoUmVmUHRyPElEQktleVJhbmdlPiYmLCBJREJDdXJzb3JEaXJlY3Rpb24pOwogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gb3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlIGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0
cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmLCBJREJD
dXJzb3JEaXJlY3Rpb24pOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gb3Blbktl
eUN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgSURCQ3Vyc29y
RGlyZWN0aW9uKTsKIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlND
OjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBjb3VudChJREJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwog
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQo
SURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJhbmdlKik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSURCS2V5UmFuZ2UqKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXRBbGwoUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0
QWxsS2V5cyhSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKIAogICAgIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mbzsgfQpAQCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkKiBvYmplY3RT
dG9yZUFzT3BhcXVlUm9vdCgpIHsgcmV0dXJuICZtX29iamVjdFN0b3JlOyB9CiAKIHByaXZhdGU6
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRvR2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlS
YW5nZURhdGE+KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvT3BlbktleUN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9u
LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
Q291bnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBkb0dldChFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0
YT4pOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1
cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlD
dXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7
CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbAkocmV2aXNpb24gMjg0MTM0KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
OSArNDAsMTkgQEAgdHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0
XSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKICAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwotICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/
IGtleSk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtl
eSk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdl
dEtleShhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElE
QlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlv
bmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3Rd
IElEQlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9w
dGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwoYW55IGtleSwgb3B0
aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwg
SURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWdu
ZWQgbG9uZyBjb3VudCk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9w
dGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2Vd
IHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFu
Z2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBu
dWxsKTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJh
bmdlPyByYW5nZSA9IG51bGwpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAi
bmV4dCIpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJ
REJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uID0gIm5leHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3Rd
IElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFu
Z2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQi
KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURC
S2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiA9ICJuZXh0Iik7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJ
REJSZXF1ZXN0IG9wZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAkocmV2aXNpb24gMjg0MTM0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6
YXV0b0luY3JlbWVudCgpIGNvbgogICAgIHJldHVybiBtX2luZm8uYXV0b0luY3JlbWVudCgpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5D
dXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTE2MiwxOSArMTYyLDE5IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIg
PSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vy
c29ySW5mbzo6b2JqZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbiwgbV9pbmZvLmlkZW50aWZp
ZXIoKSwga2V5UmFuZ2VQb2ludGVyLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6
S2V5QW5kVmFsdWUpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RPcGVuQ3Vyc29y
KGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVl
c3RPcGVuQ3Vyc29yKCp0aGlzLCBpbmZvKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKLSAgICByZXR1cm4gZG9PcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgZGlyZWN0aW9uLCBb
cmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJl
Y3Rpb24sIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdl
OwogICAgIH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5DdXJzb3Io
ZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJl
dHVybiBkb09wZW5DdXJzb3IoZGlyZWN0aW9uLCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkg
ewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtl
eSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVy
cm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6
IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTE4Myw3ICsxODMs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgfSk7CiB9
CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvT3Blbktl
eUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvciIpOwogICAg
IEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rp
b24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtMjAwLDE5ICsyMDAsMTkgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogCiAgICAgYXV0byoga2V5UmFu
Z2VQb2ludGVyID0ga2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5nZXQoKTsKICAgICBhdXRvIGluZm8g
PSBJREJDdXJzb3JJbmZvOjpvYmplY3RTdG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLCBtX2luZm8u
aWRlbnRpZmllcigpLCBrZXlSYW5nZVBvaW50ZXIsIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJz
b3JUeXBlOjpLZXlPbmx5KTsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0T3BlbkN1
cnNvcihleGVjU3RhdGUsICp0aGlzLCBpbmZvKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5y
ZXF1ZXN0T3BlbkN1cnNvcigqdGhpcywgaW5mbyk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4
ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
b3BlbktleUN1cnNvcihSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGRvT3BlbktleUN1cnNvcihleGVjU3RhdGUs
IGRpcmVjdGlvbiwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgeworICAgIHJldHVybiBkb09w
ZW5LZXlDdXJzb3IoZGlyZWN0aW9uLCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAg
ICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBy
ZXR1cm4gZG9PcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgZGlyZWN0aW9uLCBbc3RhdGU9JmV4ZWNTdGF0
ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9PcGVuQ3Vyc29yKGRpcmVjdGlvbiwgW3N0YXRlID0g
JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFu
Z2U6Om9ubHkoKnN0YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PnsgRXhjZXB0aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdvcGVuS2V5Q3Vyc29y
JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4i
X3MpIH07CkBAIC0yMzYsMTAgKzIzNiwxMCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQk9iamVjdFN0CiAgICAgaWYgKCFpZGJLZXktPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJREJP
YmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcyB9OwogCi0g
ICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlz
LCB7IGlkYktleS5wdHIoKSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlIH0pOwor
ICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRSZWNvcmQoKnRoaXMsIHsgaWRiS2V5
LnB0cigpLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChKU0dsb2JhbE9iamVj
dCYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXQoSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CiAgICAgQVNTRVJUKGNh
bkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0yNTQsNyArMjU0LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlmICgha2V5UmFuZ2VEYXRhLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCi0gICAgcmV0dXJu
IG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGtleVJh
bmdlRGF0YSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlIH0pOworICAgIHJldHVy
biBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRSZWNvcmQoKnRoaXMsIHsga2V5UmFuZ2VEYXRhLCBJ
REJHZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSkKQEAgLTI3MiwxMCArMjcyLDEwIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBpZiAoIWlkYktleS0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUg
J2dldEtleScgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxp
ZCBrZXkuIl9zIH07CiAKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3Jk
KGV4ZWNTdGF0ZSwgKnRoaXMsIHsgaWRiS2V5LnB0cigpLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6
S2V5T25seSB9KTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKCp0
aGlzLCB7IGlkYktleS5wdHIoKSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleU9ubHkgfSk7CiB9
CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRLZXkoSURCS2V5UmFuZ2Uq
IGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0S2V5
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90
cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0yOTAsNyArMjkwLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlmICgha2V5
UmFuZ2VEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJv
ciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRLZXknIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBw
YXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5IHJhbmdlLiJfcyB9OwogCi0gICAgcmV0dXJuIG1f
dHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGtleVJhbmdl
RGF0YSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleU9ubHkgfSk7CisgICAgcmV0dXJuIG1fdHJh
bnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZCgqdGhpcywgeyBrZXlSYW5nZURhdGEsIElEQkdldFJl
Y29yZERhdGFUeXBlOjpLZXlPbmx5IH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjphZGQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSwgSlNWYWx1ZSBrZXkpCkBAIC0zMjIsNyArMzIyLDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RT
dG9yZTo6cHV0T3JBZGQiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVh
ZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIAot
ICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSk7CisgICAgYXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzdG9yZSByZWNvcmQgaW4gb2JqZWN0IHN0b3JlIGJlY2F1c2UgaXQgZG9lcyBu
b3QgaGF2ZSBhIHZhbGlkIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCJfcyB9OwogCkBAIC0zODQs
MTcgKzM4NCwxNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAg
ICAgfSBlbHNlIGlmICghdXNlc0tleUdlbmVyYXRvciAmJiAha2V5KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgRGF0YUVycm9yLCAiRmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBhbiBJREJP
YmplY3RTdG9yZTogVGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhh
cyBubyBrZXkgZ2VuZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVk
LiJfcyB9OwogCi0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdFB1dE9yQWRkKHN0YXRl
LCAqdGhpcywgV1RGTW92ZShrZXkpLCAqc2VyaWFsaXplZFZhbHVlLCBvdmVyd3JpdGVNb2RlKTsK
KyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0UHV0T3JBZGQoKnRoaXMsIFdURk1vdmUo
a2V5KSwgKnNlcmlhbGl6ZWRWYWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0JiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkKK0V4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKElEQktleVJhbmdl
KiBrZXlSYW5nZSkKIHsKLSAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCBba2V5UmFuZ2Vd
KCkgeworICAgIHJldHVybiBkb0RlbGV0ZShba2V5UmFuZ2VdKCkgewogICAgICAgICByZXR1cm4g
UmVmUHRyIHsga2V5UmFuZ2UgfTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0
ZSwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9E
ZWxldGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYm
IGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6ZGVsZXRl
RnVuY3Rpb24iKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2Fs
RGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTQyMSwx
MiArNDIxLDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAg
ICBpZiAoIWtleVJhbmdlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleSByYW5nZS4iX3MgfTsKIAotICAg
IHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3REZWxldGVSZWNvcmQoZXhlY1N0YXRlLCAqdGhp
cywga2V5UmFuZ2VEYXRhKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0RGVsZXRl
UmVjb3JkKCp0aGlzLCBrZXlSYW5nZURhdGEpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSkKIHsKLSAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCBb
c3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9EZWxldGUoW3N0YXRlID0g
JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRv
SURCS2V5KCpzdGF0ZSwga2V5KTsKICAgICAgICAgaWYgKCFpZGJLZXktPmlzVmFsaWQoKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0
aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGUnIG9uICdJREJPYmplY3RT
dG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTQzNCw3
ICs0MzQsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAg
fSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmNs
ZWFyKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpjbGVhcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9i
amVjdFN0b3JlOjpjbGVhciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhy
ZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpA
QCAtNDUzLDEwICs0NTMsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdAogICAgIGlmIChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnY2xlYXInIG9u
ICdJREJPYmplY3RTdG9yZSc6IFRoZSB0cmFuc2FjdGlvbiBpcyByZWFkLW9ubHkuIl9zIH07CiAK
LSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShleGVjU3Rh
dGUsICp0aGlzKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSgqdGhpcyk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
S2V5UGF0aCYmIGtleVBhdGgsIGNvbnN0IEluZGV4UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK0V4
Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQktleVBhdGgmJiBrZXlQYXRoLCBjb25zdCBJbmRleFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpj
cmVhdGVJbmRleCAlcyAoa2V5UGF0aDogJXMsIHVuaXF1ZTogJWksIG11bHRpRW50cnk6ICVpKSIs
IG5hbWUudXRmOCgpLmRhdGEoKSwgbG9nZ2luZ1N0cmluZyhrZXlQYXRoKS51dGY4KCkuZGF0YSgp
LCBwYXJhbWV0ZXJzLnVuaXF1ZSwgcGFyYW1ldGVycy5tdWx0aUVudHJ5KTsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTU3MiwxNyArNTcyLDE3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKIAogICAgIGF1dG8gaWRiS2V5ID0gc2NyaXB0
VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtleSk7CiAKLSAgICByZXR1cm4gZG9Db3VudChleGVj
U3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJLZXktPmlzVmFsaWQoKSA/IGlkYktleS5wdHIoKSA6
IG51bGxwdHIpKTsKKyAgICByZXR1cm4gZG9Db3VudChJREJLZXlSYW5nZURhdGEoaWRiS2V5LT5p
c1ZhbGlkKCkgPyBpZGJLZXkucHRyKCkgOiBudWxscHRyKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmNvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIElEQktleVJhbmdlKiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCT2JqZWN0U3RvcmU6OmNvdW50KElEQktleVJhbmdlKiByYW5nZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CiAKLSAgICByZXR1cm4gZG9Db3VudChl
eGVjU3RhdGUsIHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0
YTo6YWxsS2V5cygpKTsKKyAgICByZXR1cm4gZG9Db3VudChyYW5nZSA/IElEQktleVJhbmdlRGF0
YShyYW5nZSkgOiBJREJLZXlSYW5nZURhdGE6OmFsbEtleXMoKSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoSlNHbG9iYWxPYmplY3Qm
IGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIApAQCAt
NjAwLDEwICs2MDAsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dAogICAgIGlmICghcmFuZ2UuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2NvdW50JyBvbiAnSURCT2JqZWN0U3RvcmUn
OiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MgfTsKIAotICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uLnJlcXVlc3RDb3VudChleGVjU3RhdGUsICp0aGlzLCByYW5nZSk7CisgICAg
cmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdENvdW50KCp0aGlzLCByYW5nZSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24p
CitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRB
Y2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpKSk7CkBAIC02MTksMTkgKzYxOSwxOSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQk9iamVjdFN0CiAgICAgICAgIHJldHVybiBrZXlSYW5nZS5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdl
dCgpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFs
bFR5cGU6OlZhbHVlcywgY291bnQpOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoKnRoaXMsIGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwo
UmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCkKIHsKLSAgICByZXR1cm4gZG9HZXRBbGwoZXhlY1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RG
TW92ZShyYW5nZSldKCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3JhbmdlID0gV1RG
TW92ZShyYW5nZSldKCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2Jh
bE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpCiB7Ci0gICAgcmV0dXJuIGRvR2V0QWxsKGV4ZWNTdGF0ZSwgY291bnQsIFtzdGF0ZT0m
ZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3N0YXRlID0g
JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFu
Z2U6Om9ubHkoKnN0YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PnsgRXhjZXB0aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGwnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsK
QEAgLTY0MCw3ICs2NDAsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0CiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmRvR2V0QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURC
S2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6ZG9HZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlz
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90
cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02NTYsMTkgKzY1Niwx
OSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgICAgIHJl
dHVybiBrZXlSYW5nZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBhdXRvKiBrZXlSYW5nZVBv
aW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwotICAgIHJldHVybiBtX3RyYW5z
YWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywg
a2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKKyAg
ICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKCp0
aGlzLCBrZXlSYW5nZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291bnQp
OwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRB
bGxLZXlzKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiBy
YW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKFJlZlB0cjxJREJLZXlSYW5nZT4m
JiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0gICAgcmV0dXJuIGRv
R2V0QWxsS2V5cyhleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7
CisgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSld
KCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3Qm
IGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewotICAgIHJldHVybiBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRlPSZleGVj
U3RhdGUsIGtleV0oKSB7CisgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhjb3VudCwgW3N0YXRlID0g
JmV4ZWNTdGF0ZSwga2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFu
Z2U6Om9ubHkoKnN0YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PnsgRXhjZXB0aW9uKERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGxLZXlzJyBv
biAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3Mp
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgJKHJldmlzaW9uIDI4NDEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI3ICs3NCwy
NyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbXVsdGlFbnRyeTsKICAgICB9OwogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIElEQkN1cnNvckRpcmVjdGlvbik7CisgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiwg
SURCQ3Vyc29yRGlyZWN0aW9uKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9w
ZW5DdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIElEQkN1cnNv
ckRpcmVjdGlvbik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vy
c29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIElEQkN1cnNv
ckRpcmVjdGlvbik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vy
c29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKICAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbik7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1
ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBJREJLZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZ2V0KElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBn
ZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJL
ZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KElEQktl
eVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBhZGQoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7CiAgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBwdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkZWxldGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRlbGV0ZUZ1bmN0aW9uKElEQktleVJhbmdl
Kik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5jdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBjbGVhcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgRXhjZXB0aW9u
T3I8UmVmPElEQkluZGV4Pj4gY3JlYXRlSW5kZXgoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmLCBjb25zdCBJbmRleFBhcmFtZXRlcnMmKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNsZWFyKCk7CisgICAgRXhjZXB0aW9uT3I8
UmVmPElEQkluZGV4Pj4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRo
JiYsIGNvbnN0IEluZGV4UGFyYW1ldGVycyYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRl
eD4+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVs
ZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSURCS2V5UmFuZ2UqKTsKICAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUga2V5KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRB
bGwoUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7
CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKIAog
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0Rm9yQ3Vyc29yVXBkYXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+JiYsIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOwpAQCAtMTE1LDEyICsxMTUsMTIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIElubGluZUtleUNoZWNrIHsgUGVyZm9ybSwgRG9Ob3RQ
ZXJmb3JtIH07CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBwdXRPckFkZChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIElubGluZUtleUNoZWNrLCBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmID0gbnVsbHB0cik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvRGVsZXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNv
cihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOwotICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJ
REJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4mJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFs
bChKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdU
Rjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlk
bAkocmV2aXNpb24gMjg0MTM0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyOCArNDIsMjggQEAgdHlw
ZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogCiAgICAgW05ld09iamVjdCwg
Q2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IHB1dChhbnkgdmFsdWUsIG9wdGlvbmFs
IGFueSBrZXkpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVx
dWVzdCBhZGQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBD
YWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJl
cXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7CisgICAgW05ld09iamVjdCwgSW1w
bGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/
IGtleVJhbmdlKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxl
bWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwotICAg
IFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOwot
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURC
S2V5UmFuZ2U/IGtleSk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAg
IFtOZXdPYmplY3RdIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0g
ICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJ
REJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJL
ZXlSYW5nZT8ga2V5KTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElE
QlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0g
bnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAg
W05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdl
ID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CiAg
ICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChh
bnkga2V5LCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAg
ICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5
cyhvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJh
bmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdl
dEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0Vu
Zm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwg
W0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdl
PyByYW5nZSA9IG51bGwpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3QgY291bnQob3B0aW9u
YWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwg
SURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29y
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUds
b2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3QsIENhbGxX
aXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24gPSAibmV4dCIpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihv
cHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9i
YWxPYmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJD
dXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAogICAgIElEQkluZGV4IGluZGV4
KERPTVN0cmluZyBuYW1lKTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcgb3Igc2Vx
dWVuY2U8RE9NU3RyaW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9w
dGlvbnMpOworICAgIFtOZXdPYmplY3RdIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBu
YW1lLCAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIGtleVBhdGgsIG9wdGlvbmFs
IElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKICAgICB1bmRlZmluZWQgZGVsZXRlSW5kZXgo
RE9NU3RyaW5nIG5hbWUpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjg0MTM0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MTgsMzUgKzgxOCwzMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRS
ZW5hbWVJbmRleE9uU2VyCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpSZW5hbWVJbmRleFN1Y2Nlc3MgfHwgcmVzdWx0RGF0
YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCi1SZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwg
SURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihJREJPYmpl
Y3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwogICAg
IEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhl
ZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQotICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1
cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3RvcmUsIGluZm8pKTsKKyAgICAg
ICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3IoSURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3Rv
cmUsIGluZm8pKTsKIAotICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKHN0YXRlLCBJREJD
dXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShvYmplY3RTdG9yZSwgaW5mbykpOworICAgIHJldHVybiBk
b1JlcXVlc3RPcGVuQ3Vyc29yKElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKG9iamVjdFN0b3Jl
LCBpbmZvKSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9w
ZW5DdXJzb3IoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVl
c3RPcGVuQ3Vyc29yKElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29y
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAogICAgIGlmIChpbmZvLmN1cnNvclR5cGUoKSA9
PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleU9ubHkpCi0gICAgICAgIHJldHVybiBkb1JlcXVl
c3RPcGVuQ3Vyc29yKHN0YXRlLCBJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwgaW5mbykpOworICAg
ICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwg
aW5mbykpOwogCi0gICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNv
cldpdGhWYWx1ZTo6Y3JlYXRlKGluZGV4LCBpbmZvKSk7CisgICAgcmV0dXJuIGRvUmVxdWVzdE9w
ZW5DdXJzb3IoSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoaW5kZXgsIGluZm8pKTsKIH0KIAot
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEpTR2xv
YmFsT2JqZWN0JiBzdGF0ZSwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCitSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoUmVmPElEQkN1cnNvcj4mJiBj
dXJzb3IpCiB7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7
CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRv
IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
Y3Vyc29yLmdldCgpLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIApA
QCAtOTI2LDE0ICs5MjQsMTIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNv
ck9uUwogICAgIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0K
IAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3Rv
cmVSZWNvcmRzKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6
OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0Fj
dGl2ZSgpKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0
YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNFRChzdGF0
ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlKCZzdGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAg
YWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIApAQCAtOTQ5LDEzICs5NDUsMTIgQEAgUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0Owog
fQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJl
Y29yZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRB
bGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYgaW5kZXgs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5
cGUgZ2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7
CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBB
U1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKICAgICBhdXRvIHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsICp0
aGlzKTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTAwNSwxNSArMTAwMCwx
MyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TCiAgICAgY29tcGxl
dGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0
YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
IGdldFJlY29yZERhdGEpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRSZWNvcmQoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldFJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NF
UlQoIWdldFJlY29yZERhdGEua2V5UmFuZ2VEYXRhLmlzTnVsbCk7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQogICAg
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIHR5cGUgPSBnZXRSZWNvcmREYXRhLnR5
cGUgPT0gSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlID8gSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZVJlY29yZFR5cGU6OlZhbHVlT25seSA6IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNv
cmRUeXBlOjpLZXlPbmx5OwogCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
T2JqZWN0U3RvcmVHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsIHR5
cGUsICp0aGlzKTsKQEAgLTEwMjksMzEgKzEwMjIsMjkgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZShKU0dsb2JhbE9iamVjdCYgc3Rh
dGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKElEQkluZGV4JiBpbmRl
eCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7
CiAKLSAgICByZXR1cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGU6OlZhbHVlLCByYW5nZSk7CisgICAgcmV0dXJuIHJlcXVlc3RJbmRl
eFJlY29yZChpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OlZhbHVlLCByYW5nZSk7
CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShKU0ds
b2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShJ
REJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFsdWUiKTsKICAgICBBU1NF
UlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSkpOwogCi0gICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5k
ZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKKyAgICByZXR1cm4g
cmVxdWVzdEluZGV4UmVjb3JkKGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6S2V5
LCByYW5nZSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdElu
ZGV4UmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBJbmRleGVk
REI6OkluZGV4UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5k
ZXgmIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCgh
cmFuZ2UuaXNOdWxsKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNF
RChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlSW5kZXhHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsIHR5cGUs
ICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTEwLDE1ICsx
MTAxLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmUKICAgICBj
b21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50IChJREJP
YmplY3RTdG9yZSkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5n
ZS5pc051bGwpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxE
YXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0
YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAg
ICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTMyLDE1ICsxMTIxLDEzIEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEMKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChJ
REJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQgKElEQkluZGV4KSIpOwog
ICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3Rh
dGUpKTsKLQogICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBpbmRleCwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5n
ZXQoKSk7CiAKQEAgLTExNzEsMTUgKzExNTgsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlk
R2V0Q291bnRPblNlcnZlcgogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCBy
ZXN1bHREYXRhKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
RGVsZXRlUmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVj
dFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKElEQk9iamVjdFN0b3JlJiBvYmplY3RT
dG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNB
Y3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwogICAgIEFTU0VSVChjYW5DdXJy
ZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
PT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBh
dXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CkBAIC0xMjA5LDE0ICsxMTk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJl
Y29yZE9uU2UKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0
YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3Rv
cmUpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0
b3JlKElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJUKGlz
QWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxE
YXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0
YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAg
ICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMjQ5LDcgKzEyMzIsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlCiAgICAgY29tcGxldGVOb25jdXJz
b3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9i
amVjdFN0b3JlJiBvYmplY3RTdG9yZSwgUmVmUHRyPElEQktleT4mJiBrZXksIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92
ZXJ3cml0ZU1vZGUpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRP
ckFkZChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIFJlZlB0cjxJREJLZXk+JiYga2V5LCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdFB1dE9yQWRkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtMTI1
Nyw4ICsxMjQwLDYgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UAog
ICAgIEFTU0VSVChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7CiAg
ICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgm
c3RhdGUpKTsKLQogICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBvYmplY3RTdG9yZSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjg0MTM0KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDE4ICsxMTIsMTggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRl
eD4gY3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJJbmRleEluZm8mKTsKICAg
ICB2b2lkIHJlbmFtZUluZGV4KElEQkluZGV4JiwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKIAot
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0UHV0T3JBZGQoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IElEQk9iamVjdFN0b3JlJiwgUmVmUHRyPElEQktleT4mJiwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0R2V0UmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJPYmplY3RTdG9y
ZSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVz
dEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVz
dEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29y
ZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVjdFN0b3JlJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+
IHJlcXVlc3RDb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENvdW50KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwot
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+
IHJlcXVlc3RHZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4JiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29yKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8m
KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0UHV0T3JBZGQoSURCT2JqZWN0U3RvcmUmLCBSZWZQdHI8SURCS2V5PiYmLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSURCT2JqZWN0U3RvcmUm
LCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RH
ZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJ
bmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
RGVsZXRlUmVjb3JkKElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Cisg
ICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDbGVhck9iamVjdFN0b3JlKElEQk9iamVjdFN0b3Jl
Jik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChJREJPYmplY3RTdG9yZSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291bnQo
SURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdEdldFZhbHVlKElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRLZXkoSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVl
c3RPcGVuQ3Vyc29yKElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQg
aXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwog
CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSk7CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVPbkFib3J0KCk7
CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKTsKIAotICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4Jiwg
SW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAg
IFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5kZXgmLCBJbmRleGVkREI6
OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAKICAgICB2b2lkIGNv
bW1pdE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBw
ZW5kaW5nUmVxdWVzdENvdW50KTsKICAgICB2b2lkIGFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1
ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CkBAIC0yMjEsNyArMjIxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4T25TZXJ2
ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IGRvUmVxdWVz
dE9wZW5DdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxJREJDdXJzb3I+JiYpOworICAg
IFJlZjxJREJSZXF1ZXN0PiBkb1JlcXVlc3RPcGVuQ3Vyc29yKFJlZjxJREJDdXJzb3I+JiYpOwog
ICAgIHZvaWQgb3BlbkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24mLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CiAgICAgdm9pZCBkaWRPcGVuQ3Vyc29yT25TZXJ2
ZXIoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAJKHJldmlzaW9uIDI4NDEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NjEsNyArNDYxLDYgQEAgcHVibGljOgogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFj
dGl2YXRvcihpZGJUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiBpZGJSZXF1ZXN0OwotICAgICAgICBhdXRvKiBleGVjID0gY29udGV4dCgpID8gY29udGV4dCgp
LT5nbG9iYWxPYmplY3QoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9y
ZShpZGJPYmplY3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFp
ZGJJbmRleCkgewpAQCAtNDY5LDE3ICs0NjgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGV4ZWMpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYkluZGV4LT5vcGVuQ3Vyc29yKCpleGVjLCBtX2lk
YktleVJhbmdlLmdldCgpLCBJREJDdXJzb3JEaXJlY3Rpb246Ok5leHQpOwotICAgICAgICAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBpZGJS
ZXF1ZXN0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBpZGJJbmRleC0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdl
LmdldCgpLCBJREJDdXJzb3JEaXJlY3Rpb246Ok5leHQpOworICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChl
eGVjKSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpZGJPYmplY3RTdG9yZS0+b3Bl
bkN1cnNvcigqZXhlYywgbV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpO
ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICAgICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaWRiT2JqZWN0U3RvcmUt
Pm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpOZXh0
KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgIGlkYlJlcXVlc3QgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWlkYlJlcXVlc3QpIHsKQEAgLTcwMywxNSArNjk4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFjdGl2YXRvcihp
ZGJUcmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1
ZXN0OwotICAgICAgICBpZiAoYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+Z2xv
YmFsT2JqZWN0KCkgOiBudWxscHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9i
amVjdFN0b3JlLT5jbGVhcigqZXhlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNF
eGNlcHRpb24oKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKG1ha2VTdHJpbmco
IkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmUgJyIsIG1fb2JqZWN0U3RvcmVOYW1lLCAiJzog
Iiwgc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZGJS
ZXF1ZXN0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGlkYk9iamVjdFN0b3JlLT5jbGVhcigpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNF
eGNlcHRpb24oKSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShtYWtlU3RyaW5nKCJDb3VsZCBu
b3QgY2xlYXIgb2JqZWN0IHN0b3JlICciLCBtX29iamVjdFN0b3JlTmFtZSwgIic6ICIsIHN0YXRp
Y19jYXN0PGludD4ocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpKSk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZGJUcmFuc2FjdGlvbi0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2xlYXJPYmplY3RTdG9yZUxp
c3RlbmVyOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSwgZmFsc2UpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQxMzQpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMTAtMTMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgorCisgICAgICAgIEFzc2VydGlvbnMgaW4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3QqKCkgbWV0
aG9kcyBmYWlsIG9uIGNyb3NzLXJlYWxtIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDEyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRo
b2RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
aWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jv
c3MtcmVhbG0tbWV0aG9kcy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0xMyAgVGltIE5ndXllbiAg
PG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCA8ZGlhbG9nPiBmb2N1c2luZyBz
dGVwcwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRl
eGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRl
eGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCSW5kZXg6OmdldCgp
IG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENy
b3NzLXJlYWxtIElEQkluZGV4OjpnZXRLZXkoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1l
PiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRleDo6Z2V0QWxsKCkg
bWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jv
c3MtcmVhbG0gSURCSW5kZXg6OmdldEFsbEtleXMoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZy
YW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRleDo6Y291bnQo
KSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBD
cm9zcy1yZWFsbSBJREJJbmRleDo6b3BlbkN1cnNvcigpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxp
ZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQkluZGV4OjpvcGVu
S2V5Q3Vyc29yKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0
ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
YmluZGV4LWNyb3NzLXJlYWxtLW1ldGhvZHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1j
cm9zcy1yZWFsbS1tZXRob2RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLXJlYWxt
IElEQkluZGV4IG1ldGhvZHMgZnJvbSBkZXRhY2hlZCBpZnJhbWUgd29yayBhcyBleHBlY3RlZDwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPXN1cHBvcnQuanM+PC9zY3JpcHQ+CisKKzxib2R5PgorPHNjcmlwdD4KKyJ1c2Ug
c3RyaWN0IjsKK2NvbnN0IElOREVYX0xPV0VSID0gMTAwMDsKK2NvbnN0IElOREVYX1VQUEVSID0g
MTAwMTsKK2NvbnN0IElOREVYX1JBTkdFID0gSURCS2V5UmFuZ2UuYm91bmQoSU5ERVhfTE9XRVIs
IElOREVYX1VQUEVSKTsKKworY29uc3QgdGVzdENhc2VzID0gWworICAgIHsKKyAgICAgICAgbWV0
aG9kTmFtZTogImdldCIsCisgICAgICAgIGFyZ3VtZW50czogW0lOREVYX0xPV0VSXSwKKyAgICAg
ICAgdmFsaWRhdGVSZXN1bHQ6IGUgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRh
cmdldC5yZXN1bHQuaW5kZXhlZEtleSwgSU5ERVhfTE9XRVIpOworICAgICAgICB9LAorICAgIH0s
CisgICAgeworICAgICAgICBtZXRob2ROYW1lOiAiZ2V0S2V5IiwKKyAgICAgICAgYXJndW1lbnRz
OiBbSU5ERVhfVVBQRVJdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgSU5ERVhfVVBQRVIpOworICAgICAg
ICB9LAorICAgIH0sCisgICAgeworICAgICAgICBtZXRob2ROYW1lOiAiZ2V0QWxsIiwKKyAgICAg
ICAgYXJndW1lbnRzOiBbSU5ERVhfUkFOR0VdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdC5tYXAo
diA9PiB2LmluZGV4ZWRLZXkpLCBbSU5ERVhfTE9XRVIsIElOREVYX1VQUEVSXSk7CisgICAgICAg
IH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJnZXRBbGxLZXlzIiwKKyAg
ICAgICAgYXJndW1lbnRzOiBbSU5ERVhfUkFOR0VdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDog
ZSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwg
W0lOREVYX0xPV0VSLCBJTkRFWF9VUFBFUl0pOworICAgICAgICB9LAorICAgIH0sCisgICAgewor
ICAgICAgICBtZXRob2ROYW1lOiAiY291bnQiLAorICAgICAgICBhcmd1bWVudHM6IFtJTkRFWF9S
QU5HRV0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCAyKTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsK
KyAgICAgICAgbWV0aG9kTmFtZTogIm9wZW5DdXJzb3IiLAorICAgICAgICBhcmd1bWVudHM6IFtd
LAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAgICBjb25zdCBjdXJz
b3IgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5z
dGFuY2VvZiBJREJDdXJzb3IpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdXJzb3IudmFs
dWUuaW5kZXhlZEtleSwgSU5ERVhfTE9XRVIpOworICAgICAgICB9LAorICAgIH0sCisgICAgewor
ICAgICAgICBtZXRob2ROYW1lOiAib3BlbktleUN1cnNvciIsCisgICAgICAgIGFyZ3VtZW50czog
W10sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGN1
cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBp
bnN0YW5jZW9mIElEQkN1cnNvcik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1cnNvci5r
ZXksIElOREVYX0xPV0VSKTsKKyAgICAgICAgfSwKKyAgICB9LAorXTsKKworZm9yIChjb25zdCB0
ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsKKyAgICBhc3luY190ZXN0KHQgPT4geworICAgICAgICBj
b25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAg
aWZyYW1lLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IGlmcmFt
ZS5jb250ZW50V2luZG93LklEQkluZGV4LnByb3RvdHlwZVt0ZXN0Q2FzZS5tZXRob2ROYW1lXTsK
KyAgICAgICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKKworICAgICAgICAgICAgbGV0IGRiOworICAg
ICAgICAgICAgY29uc3Qgb3Blbl9ycSA9IGNyZWF0ZWRiKHQpOworICAgICAgICAgICAgb3Blbl9y
cS5vbnVwZ3JhZGVuZWVkZWQgPSBlID0+IHsKKyAgICAgICAgICAgICAgICBkYiA9IGUudGFyZ2V0
LnJlc3VsdDsKKyAgICAgICAgICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCJzdG9yZSIpOworICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCJpbmRleCIsICJpbmRleGVkS2V5Iik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUu
YWRkKHsgaW5kZXhlZEtleTogSU5ERVhfTE9XRVIgfSwgSU5ERVhfTE9XRVIpOworICAgICAgICAg
ICAgICAgIG9iamVjdFN0b3JlLmFkZCh7IGluZGV4ZWRLZXk6IElOREVYX1VQUEVSIH0sIElOREVY
X1VQUEVSKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG9wZW5fcnEub25zdWNjZXNz
ID0gKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGIudHJhbnNhY3Rpb24o
InN0b3JlIikub2JqZWN0U3RvcmUoInN0b3JlIikuaW5kZXgoImluZGV4Iik7CisgICAgICAgICAg
ICAgICAgY29uc3QgcnEgPSBtZXRob2QuY2FsbChpbmRleCwgLi4udGVzdENhc2UuYXJndW1lbnRz
KTsKKyAgICAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4g
eworICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FzZS52YWxpZGF0ZVJlc3VsdChlKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CisgICAgfSwgYENyb3NzLXJlYWxtIElEQkluZGV4Ojok
e3Rlc3RDYXNlLm1ldGhvZE5hbWV9KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29y
a3MgYXMgZXhwZWN0ZWRgKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3Mt
cmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jv
c3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3Rv
cmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMyBAQAorCitQQVNTIENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpwdXQoKSBtZXRo
b2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1y
ZWFsbSBJREJPYmplY3RTdG9yZTo6YWRkKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4g
d29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6OmRlbGV0
ZSgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNT
IENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpjbGVhcigpIG1ldGhvZCBmcm9tIGRldGFjaGVk
IDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9iamVjdFN0
b3JlOjpnZXQoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3Rl
ZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KCkgbWV0aG9kIGZyb20g
ZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURC
T2JqZWN0U3RvcmU6OmdldEFsbCgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtz
IGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlz
KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1Mg
Q3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6OmNvdW50KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQg
PGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBl
eHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvcigp
IG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCisKSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
Ym9iamVjdHN0b3JlLWNyb3NzLXJlYWxtLW1ldGhvZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmpl
Y3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2RzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0
c3RvcmUtY3Jvc3MtcmVhbG0tbWV0aG9kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jv
c3MtcmVhbG0gSURCT2JqZWN0U3RvcmUgbWV0aG9kcyBmcm9tIGRldGFjaGVkIGlmcmFtZSB3b3Jr
IGFzIGV4cGVjdGVkPC90aXRsZT4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9c3VwcG9ydC5qcz48L3NjcmlwdD4KKworPGJvZHk+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworY29uc3QgS0VZX0VYSVNUSU5HX0xPV0VSID0gMTAwMDsK
K2NvbnN0IEtFWV9FWElTVElOR19VUFBFUiA9IDEwMDE7Citjb25zdCBLRVlfRVhJU1RJTkdfUkFO
R0UgPSBJREJLZXlSYW5nZS5ib3VuZChLRVlfRVhJU1RJTkdfTE9XRVIsIEtFWV9FWElTVElOR19V
UFBFUik7Citjb25zdCBLRVlfTkVXTFlfQURERUQgPSAxMDAyOworCitjb25zdCBWQUxVRV9FWElT
VElOR19MT1dFUiA9ICJWQUxVRV9FWElTVElOR19MT1dFUiI7Citjb25zdCBWQUxVRV9FWElTVElO
R19VUFBFUiA9ICJWQUxVRV9FWElTVElOR19VUFBFUiI7Citjb25zdCBWQUxVRV9ORVdMWV9BRERF
RCA9ICJWQUxVRV9ORVdMWV9BRERFRCI7CisKK2NvbnN0IHRlc3RDYXNlcyA9IFsKKyAgICB7Cisg
ICAgICAgIG1ldGhvZE5hbWU6ICJwdXQiLAorICAgICAgICBhcmd1bWVudHM6IFtLRVlfTkVXTFlf
QURERUQsIEtFWV9FWElTVElOR19MT1dFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwg
ZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIEtFWV9F
WElTVElOR19MT1dFUik7CisgICAgICAgICAgICBjb25zdCBycSA9IGUudGFyZ2V0LnNvdXJjZS5n
ZXRBbGwoKTsKKyAgICAgICAgICAgIHJxLm9uc3VjY2VzcyA9IHQuc3RlcF9mdW5jX2RvbmUoZSA9
PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlLnRhcmdldC5yZXN1bHQs
IFtLRVlfTkVXTFlfQURERUQsIFZBTFVFX0VYSVNUSU5HX1VQUEVSXSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImFkZCIs
CisgICAgICAgIGFyZ3VtZW50czogW1ZBTFVFX05FV0xZX0FEREVELCBLRVlfTkVXTFlfQURERURd
LAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBLRVlfTkVXTFlfQURERUQpOworICAgICAgICAgICAg
Y29uc3QgcnEgPSBlLnRhcmdldC5zb3VyY2UuZ2V0QWxsKCk7CisgICAgICAgICAgICBycS5vbnN1
Y2Nlc3MgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBbVkFMVUVfRVhJU1RJTkdfTE9XRVIsIFZBTFVF
X0VYSVNUSU5HX1VQUEVSLCBWQUxVRV9ORVdMWV9BRERFRF0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJkZWxldGUiLAor
ICAgICAgICBhcmd1bWVudHM6IFtLRVlfRVhJU1RJTkdfTE9XRVJdLAorICAgICAgICB2YWxpZGF0
ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJnZXQu
cmVzdWx0LCB1bmRlZmluZWQpOworICAgICAgICAgICAgY29uc3QgcnEgPSBlLnRhcmdldC5zb3Vy
Y2UuZ2V0QWxsS2V5cygpOworICAgICAgICAgICAgcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmNf
ZG9uZShlID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0
LnJlc3VsdCwgW0tFWV9FWElTVElOR19VUFBFUl0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJjbGVhciIsCisgICAgICAg
IGFyZ3VtZW50czogW10sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIHVuZGVmaW5lZCk7CisgICAg
ICAgICAgICBjb25zdCBycSA9IGUudGFyZ2V0LnNvdXJjZS5jb3VudCgpOworICAgICAgICAgICAg
cnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmNfZG9uZShlID0+IHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImdldCIsCisgICAgICAg
IGFyZ3VtZW50czogW0tFWV9FWElTVElOR19VUFBFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0
OiAodCwgZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQs
IFZBTFVFX0VYSVNUSU5HX1VQUEVSKTsKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9
LAorICAgIH0sCisgICAgeworICAgICAgICBtZXRob2ROYW1lOiAiZ2V0S2V5IiwKKyAgICAgICAg
YXJndW1lbnRzOiBbS0VZX0VYSVNUSU5HX0xPV0VSXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6
ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwg
S0VZX0VYSVNUSU5HX0xPV0VSKTsKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9LAor
ICAgIH0sCisgICAgeworICAgICAgICBtZXRob2ROYW1lOiAiZ2V0QWxsIiwKKyAgICAgICAgYXJn
dW1lbnRzOiBbS0VZX0VYSVNUSU5HX1JBTkdFXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0
LCBlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3Vs
dCwgW1ZBTFVFX0VYSVNUSU5HX0xPV0VSLCBWQUxVRV9FWElTVElOR19VUFBFUl0pOworICAgICAg
ICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhv
ZE5hbWU6ICJnZXRBbGxLZXlzIiwKKyAgICAgICAgYXJndW1lbnRzOiBbS0VZX0VYSVNUSU5HX1JB
TkdFXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgW0tFWV9FWElTVElOR19MT1dFUiwg
S0VZX0VYSVNUSU5HX1VQUEVSXSk7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAgfSwK
KyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImNvdW50IiwKKyAgICAgICAgYXJn
dW1lbnRzOiBbXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgMik7CisgICAgICAgICAgICB0LmRv
bmUoKTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogIm9w
ZW5DdXJzb3IiLAorICAgICAgICBhcmd1bWVudHM6IFtdLAorICAgICAgICB2YWxpZGF0ZVJlc3Vs
dDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGUudGFyZ2V0LnJlc3Vs
dDsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1cnNvci52YWx1ZSwgVkFMVUVfRVhJU1RJTkdf
TE9XRVIpOworICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7
CisgICAgICAgIG1ldGhvZE5hbWU6ICJvcGVuS2V5Q3Vyc29yIiwKKyAgICAgICAgYXJndW1lbnRz
OiBbXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBj
b25zdCBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShj
dXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhj
dXJzb3Iua2V5LCBLRVlfRVhJU1RJTkdfTE9XRVIpOworICAgICAgICAgICAgdC5kb25lKCk7Cisg
ICAgICAgIH0sCisgICAgfSwKK107CisKK2ZvciAoY29uc3QgdGVzdENhc2Ugb2YgdGVzdENhc2Vz
KSB7CisgICAgYXN5bmNfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBtZXRob2QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5JREJP
YmplY3RTdG9yZS5wcm90b3R5cGVbdGVzdENhc2UubWV0aG9kTmFtZV07CisgICAgICAgICAgICBp
ZnJhbWUucmVtb3ZlKCk7CisKKyAgICAgICAgICAgIGxldCBkYjsKKyAgICAgICAgICAgIGNvbnN0
IG9wZW5fcnEgPSBjcmVhdGVkYih0KTsKKyAgICAgICAgICAgIG9wZW5fcnEub251cGdyYWRlbmVl
ZGVkID0gZSA9PiB7CisgICAgICAgICAgICAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAg
ICAgICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3Rv
cmUiKTsKKyAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQoVkFMVUVfRVhJU1RJTkdfTE9X
RVIsIEtFWV9FWElTVElOR19MT1dFUik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuYWRk
KFZBTFVFX0VYSVNUSU5HX1VQUEVSLCBLRVlfRVhJU1RJTkdfVVBQRVIpOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdy
aXRlIikub2JqZWN0U3RvcmUoInN0b3JlIik7CisgICAgICAgICAgICAgICAgY29uc3QgcnEgPSBt
ZXRob2QuY2FsbChvYmplY3RTdG9yZSwgLi4udGVzdENhc2UuYXJndW1lbnRzKTsKKyAgICAgICAg
ICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdENhc2UudmFsaWRhdGVSZXN1bHQodCwgZSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZChpZnJhbWUpOworICAgIH0sIGBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6JHt0ZXN0Q2Fz
ZS5tZXRob2ROYW1lfSgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4
cGVjdGVkYCk7Cit9Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442311</attachid>
            <date>2021-10-24 09:53:45 -0700</date>
            <delta_ts>2021-10-24 10:37:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-230128-20211024175344.patch</filename>
            <type>text/plain</type>
            <size>81149</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDIxLTEwLTI0ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBc3NlcnRpb25zIGlu
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0KigpIG1ldGhvZHMgZmFpbCBvbiBjcm9zcy1yZWFsbSBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzAxMjgKKworICAgICAgICBSZXZpZXdlZCBieSBTaWh1aSBMaXUuCisKKyAgICAgICAgRXhjZXB0
IHdoZW4gdXNlZCB3aXRoIGNvbnN0cnVjdG9ycywgW0NhbGxXaXRoPUdsb2JhbE9iamVjdF0gV2Vi
SURMIGF0dHJpYnV0ZSBwYXNzZXMKKyAgICAgICAgX2N1cnJlbnRfIGdsb2JhbCBvYmplY3QgWzFd
LCBvbmUgdGhhdCB0aGUgZnVuY3Rpb24gd2FzIGNyZWF0ZWQgaW4uCisKKyAgICAgICAgQSBtZXRo
b2QgZnJvbSBhbm90aGVyIHJlYWxtIGhhcyBkaWZmZXJlbnQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB0aGFuIHRoZSBJREJUcmFuc2FjdGlvbiwKKyAgICAgICAgYW5kIGl0J3MgZmluZTogZnVuY3Rp
b24ncyBnbG9iYWwgb2JqZWN0IGlzIHVzZWQgb25seSBmb3IgSURCS2V5IHBhcnNpbmcgYW5kIHN0
cnVjdHVyZQorICAgICAgICBjbG9uaW5nIGFzIHBlciBzcGVjIFsyXS4KKworICAgICAgICBUaGlz
IHBhdGNoIHJlbW92ZXMgaW5jb3JyZWN0IGFzc2VydGlvbnMsIGZpeGluZyBJREJPYmplY3RTdG9y
ZSAvIElEQkluZGV4IGNyb3NzLXJlYWxtCisgICAgICAgIG1ldGhvZHMgbm90IHRvIGNyYXNoIC0t
ZGVidWcgYnVpbGQsIGFuZCByZW1vdmVzIG5vdyB1bnVzZWQgSlNHbG9iYWxPYmplY3QgcGFyYW1l
dGVycy4KKworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvd2ViYXBwYXBpcy5odG1sI2NvbmNlcHQtY3VycmVudC1ldmVyeXRoaW5nCisgICAgICAgIFsy
XSBodHRwczovL3d3dy53My5vcmcvVFIvSW5kZXhlZERCLyNyZWYtZm9yLXJldHJpZXZlLWEtdmFs
dWUtZnJvbS1hbi1vYmplY3Qtc3RvcmUKKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy5o
dG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2RzLmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4Ojpkb09wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvT3BlbktleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRv
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleDo6ZG9HZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtl
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmRvR2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpn
ZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0QWxsS2V5cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvT3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldEtleSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAgICAgICBV
c2UgSURCT2JqZWN0U3RvcmUncyBjb250ZXh0IGluc3RlYWQgb2YgX2N1cnJlbnRfIGdsb2JhbCBv
YmplY3QgZm9yIHByaXZhdGUgYnJvd3NpbmcKKyAgICAgICAgY2hlY2sgYXMgcGVyIHJlY29tbWVu
ZGF0aW9uIGZvciBzcGVjIGF1dGhvcnMgWzFdLiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBvYnNl
cnZhYmxlLgorCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0dldEFsbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpkb0dldEFsbEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmdldEFsbEtleXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3Jk
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4
UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0ZVJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKwogMjAyMS0xMC0yNCAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgZG9jdW1lbnQub3Bl
bigpIGFuZCBmcmllbmRzIHVzZSBpbmNvcnJlY3QgZG9jdW1lbnQgYXMgYSBzb3VyY2UgZm9yIHJl
c2V0ZWQgZG9jdW1lbnQncyBVUkwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk0
LDcgKzI5NCw3IEBAIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKGMKICAg
ICB0cmFuc2FjdGlvbigpLml0ZXJhdGVDdXJzb3IoKnRoaXMsIHsga2V5LCBwcmltYXJ5S2V5LCAw
IH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNv
cjo6ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmIHN0YXRlKQorRXhjZXB0aW9uT3I8UmVm
PFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKCkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbiIpOwogICAgIEFTU0VS
VChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0
b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zMTQs
NyArMzE0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJRAogICAg
IGlmICghaXNLZXlDdXJzb3JXaXRoVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZScgb24gJ0lEQkN1
cnNvcic6IFRoZSBjdXJzb3IgaXMgYSBrZXkgY3Vyc29yLiJfcyB9OwogCi0gICAgYXV0byByZXN1
bHQgPSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLmRlbGV0ZUZ1bmN0aW9uKHN0YXRlLCBJREJLZXlS
YW5nZTo6Y3JlYXRlKG1fcHJpbWFyeUtleS5jb3B5UmVmKCkpLnB0cigpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkuZGVsZXRlRnVuY3Rpb24oSURCS2V5UmFuZ2U6
OmNyZWF0ZShtX3ByaW1hcnlLZXkuY29weVJlZigpKS5wdHIoKSk7CiAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5o
CShyZXZpc2lvbiAyODQ3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gYWR2YW5jZSh1bnNpZ25lZCk7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gY29udGludWVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtl
eSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udGludWVQcmltYXJ5S2V5KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5LCBKU0M6OkpTVmFsdWUgcHJpbWFyeUtleSk7Ci0g
ICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0Jik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5j
dGlvbigpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udGludWVGdW5jdGlvbihjb25zdCBJ
REJLZXlEYXRhJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmlkbAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDAsNSArNDAs
NSBAQAogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIHVuZGVmaW5lZCBjb250aW51ZVByaW1h
cnlLZXkoYW55IGtleSwgYW55IHByaW1hcnlLZXkpOwogCiAgICAgW05ld09iamVjdCwgQ2FsbFdp
dGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwotICAgIFtOZXdP
YmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlv
bl0gSURCUmVxdWVzdCBkZWxldGUoKTsKKyAgICBbTmV3T2JqZWN0LCBJbXBsZW1lbnRlZEFzPWRl
bGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAJKHJldmlzaW9uIDI4NDc1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5mb0Zv
clZlcnNpb25DaGEKICAgICBtX2RlbGV0ZWQgPSBmYWxzZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0
aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vy
c29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEo
bV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsK
QEAgLTE2NiwxOSArMTY2LDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmQKICAgICAgICAgcmFuZ2VEYXRhLnVwcGVyS2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgp
OwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29ySW5mbzo6aW5kZXhDdXJzb3IobV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLCBtX29iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCksIG1f
aW5mby5pZGVudGlmaWVyKCksIHJhbmdlRGF0YSwgZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNv
clR5cGU6OktleUFuZFZhbHVlKTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAgIHJldHVy
biBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKnRoaXMsIGlu
Zm8pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vy
c29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5n
ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBJ
REJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5DdXJzb3Io
ZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtyYW5nZT1XVEZNb3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0
dXJuIGRvT3BlbkN1cnNvcihkaXJlY3Rpb24sIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsK
ICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVy
biBkb09wZW5DdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBr
ZXldKCkgeworICAgIHJldHVybiBkb09wZW5DdXJzb3IoZGlyZWN0aW9uLCBbc3RhdGUgPSAmZXhl
Y1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6
b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBF
eGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJ
REJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTE4
Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvCiAg
ICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvT3Bl
bktleUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJREJDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOwogICAgIEFTU0VSVChj
YW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0yMDQsMTkgKzIwNCwxOSBA
QCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAKICAgICBhdXRvKiBr
ZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwogICAgIGF1dG8g
aW5mbyA9IElEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rp
b24oKSwgbV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpLCBtX2luZm8uaWRlbnRpZmll
cigpLCBrZXlSYW5nZVBvaW50ZXIsIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpL
ZXlPbmx5KTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RP
cGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRoaXMsIGluZm8pOworICAgIHJldHVybiBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoKnRoaXMsIGluZm8pOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgSURCQ3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZXhl
Y1N0YXRlLCBkaXJlY3Rpb24sIFtyYW5nZT1XVEZNb3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0dXJu
IGRvT3BlbktleUN1cnNvcihkaXJlY3Rpb24sIFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsK
ICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3Rh
dGUsIEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJl
dHVybiBkb09wZW5LZXlDdXJzb3IoZXhlY1N0YXRlLCBkaXJlY3Rpb24sIFtzdGF0ZT0mZXhlY1N0
YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3IoZGlyZWN0aW9uLCBbc3Rh
dGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJL
ZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5LZXlD
dXJzb3InIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJf
cykgfTsKQEAgLTIyNSwxMSArMjI1LDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6Om8KICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJJbmRleDo6Y291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJh
bmdlKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Y291bnQoSURCS2V5
UmFuZ2UqIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Y291bnQiKTsK
IAotICAgIHJldHVybiBkb0NvdW50KGV4ZWNTdGF0ZSwgcmFuZ2UgPyBJREJLZXlSYW5nZURhdGEo
cmFuZ2UpIDogSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCkpOworICAgIHJldHVybiBkb0NvdW50
KHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5
cygpKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Y291bnQo
SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCkBAIC0yMzksMTAgKzIzOSwx
MCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpjCiAgICAgYXV0byBp
ZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBhdXRvKiBp
ZGJLZXlQb2ludGVyID0gaWRiS2V5LT5pc1ZhbGlkKCkgPyBpZGJLZXkucHRyKCkgOiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGRvQ291bnQoZXhlY1N0YXRlLCBJREJLZXlSYW5nZURhdGEoaWRiS2V5
UG9pbnRlcikpOworICAgIHJldHVybiBkb0NvdW50KElEQktleVJhbmdlRGF0YShpZGJLZXlQb2lu
dGVyKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvQ291
bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5n
ZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvQ291bnQoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSkpOwogCkBAIC0yNTYsMTQgKzI1NiwxNCBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgaWYgKCFyYW5nZS5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAn
Y291bnQnIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJf
cyB9OwogCi0gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RDb3VudChleGVjU3RhdGUsICp0
aGlzLCByYW5nZSk7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RDb3VudCgqdGhpcywg
cmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQo
SlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlKQorRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0KElEQktleVJhbmdlKiByYW5nZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldCIpOwogCi0gICAgcmV0dXJuIGRvR2V0
KGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSk7CisgICAgcmV0dXJuIGRvR2V0KElE
QktleVJhbmdlRGF0YShyYW5nZSkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4OjpnZXQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCkBA
IC0yNzIsMTIgKzI3MiwxMiBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
OjpnCiAKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoZXhlY1N0YXRlLCBr
ZXkpOwogICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBkb0dldChl
eGVjU3RhdGUsIEV4Y2VwdGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBv
biAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpKTsKKyAg
ICAgICAgcmV0dXJuIGRvR2V0KEV4Y2VwdGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0
ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4i
X3MpKTsKIAotICAgIHJldHVybiBkb0dldChleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJL
ZXkucHRyKCkpKTsKKyAgICByZXR1cm4gZG9HZXQoSURCS2V5UmFuZ2VEYXRhKGlkYktleS5wdHIo
KSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldChK
U0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJh
bmdlKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXQoRXhjZXB0
aW9uT3I8SURCS2V5UmFuZ2VEYXRhPiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwogCkBAIC0yOTUsMTQgKzI5NSwxNCBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpkCiAgICAgaWYgKGtleVJhbmdlLmlzTnVs
bCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCi0gICAgcmV0dXJu
IHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRWYWx1ZShleGVjU3RhdGUsICp0aGlzLCBrZXlSYW5nZSk7
CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRWYWx1ZSgqdGhpcywga2V5UmFuZ2Up
OwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRLZXkoSlNH
bG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlKQorRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KElEQktleVJhbmdlKiByYW5nZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEtleSIpOwogCi0gICAgcmV0dXJuIGRv
R2V0S2V5KGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSk7CisgICAgcmV0dXJuIGRv
R2V0S2V5KElEQktleVJhbmdlRGF0YShyYW5nZSkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpnZXRLZXkoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXkpCkBAIC0zMTEsMTIgKzMxMSwxMiBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4OjpnCiAKICAgICBhdXRvIGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXko
ZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmICghaWRiS2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiBkb0dldEtleShleGVjU3RhdGUsIEV4Y2VwdGlvbihEYXRhRXJyb3IsICJGYWlsZWQgdG8g
ZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZh
bGlkIGtleS4iX3MpKTsKKyAgICAgICAgcmV0dXJuIGRvR2V0S2V5KEV4Y2VwdGlvbihEYXRhRXJy
b3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1l
dGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpKTsKIAotICAgIHJldHVybiBkb0dldEtleShleGVj
U3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJLZXkucHRyKCkpKTsKKyAgICByZXR1cm4gZG9HZXRL
ZXkoSURCS2V5UmFuZ2VEYXRhKGlkYktleS5wdHIoKSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEtleShKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJhbmdlKQorRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRLZXkoRXhjZXB0aW9uT3I8SURCS2V5UmFuZ2VEYXRh
PiByYW5nZSkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2Fs
RGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSkpOwogCkBAIC0zMzQsMTAgKzMzNCwxMCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4OjpkCiAgICAgaWYgKGtleVJhbmdlLmlzTnVsbCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCi0gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RH
ZXRLZXkoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2UpOworICAgIHJldHVybiB0cmFuc2FjdGlv
bi5yZXF1ZXN0R2V0S2V5KCp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUs
IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTM1MywxOSAr
MzUzLDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmQKICAgICAg
ICAgcmV0dXJuIGtleVJhbmdlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGF1dG8ga2V5UmFu
Z2VQb2ludGVyID0ga2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5nZXQoKTsKLSAgICByZXR1cm4gbV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoZXhlY1N0
YXRlLCAqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVl
cywgY291bnQpOworICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVz
dEdldEFsbEluZGV4UmVjb3JkcygqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6Okdl
dEFsbFR5cGU6OlZhbHVlcywgY291bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4OjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVmUHRyPElE
QktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChSZWZQdHI8SURCS2V5UmFu
Z2U+JiYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewotICAgIHJldHVy
biBkb0dldEFsbChleGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7
CisgICAgcmV0dXJuIGRvR2V0QWxsKGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7
CiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpT
VmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKLSAgICByZXR1cm4g
ZG9HZXRBbGwoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRlPSZleGVjU3RhdGUsIGtleV0oKSB7Cisg
ICAgcmV0dXJuIGRvR2V0QWxsKGNvdW50LCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewog
ICAgICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7
CiAgICAgICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRl
ciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zKSB9OwpAQCAtMzc0LDcgKzM3NCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmcKICAgICB9KTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRBbGxLZXlzKEpTR2xvYmFsT2JqZWN0
JiBleGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6
OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSkpOwpAQCAtMzkwLDE5ICszOTAsMTkgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJJbmRleDo6ZAogICAgICAgICByZXR1cm4ga2V5UmFuZ2UucmVsZWFzZUV4Y2VwdGlvbigp
OwogCiAgICAgYXV0byoga2V5UmFuZ2VQb2ludGVyID0ga2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5n
ZXQoKTsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRB
bGxJbmRleFJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVk
REI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKKyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoKnRoaXMsIGtleVJhbmdlUG9p
bnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3Qm
IGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Omdl
dEFsbEtleXMoUmVmUHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCkKIHsKLSAgICByZXR1cm4gZG9HZXRBbGxLZXlzKGV4ZWNTdGF0ZSwgY291bnQs
IFtyYW5nZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKKyAgICByZXR1cm4gZG9HZXRBbGxLZXlzKGNv
dW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiByYW5nZTsK
ICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0
QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0gICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhleGVjU3Rh
dGUsIGNvdW50LCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9HZXRB
bGxLZXlzKGNvdW50LCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBhdXRv
IG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAgIGlm
IChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
bk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90
IGEgdmFsaWQga2V5LiJfcykgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjIgKzU2LDIy
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcm9sbGJhY2tJbmZvRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJzb3IoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9u
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJzb3IoUmVmUHRyPElE
QktleVJhbmdlPiYmLCBJREJDdXJzb3JEaXJlY3Rpb24pOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gb3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVl
IGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5n
ZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IG9wZW5LZXlDdXJzb3IoUmVmUHRyPElEQktleVJhbmdlPiYmLCBJREJDdXJzb3JEaXJlY3Rp
b24pOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gb3BlbktleUN1cnNvcihKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uKTsK
IAotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291bnQoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBj
b3VudChJREJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gY291
bnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwogCi0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJh
bmdlKik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXQoSURCS2V5UmFuZ2Uq
KTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBnZXRLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQktleVJhbmdlKik7CisgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRB
bGwoUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7
CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhSZWZQ
dHI8SURCS2V5UmFuZ2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKIAog
ICAgIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQpA
QCAtODUsMTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkKiBvYmplY3RTdG9yZUFzT3BhcXVl
Um9vdCgpIHsgcmV0dXJuICZtX29iamVjdFN0b3JlOyB9CiAKIHByaXZhdGU6Ci0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRv
R2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0S2V5KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vy
c29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbktleUN1
cnNvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkb0dldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvQ291bnQoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dl
dChFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRvR2V0S2V5KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0YT4pOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlv
biwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURCQ3Vy
c29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CiAKICAgICAvLyBB
Y3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxOSArNDAsMTkgQEAg
dHlwZWRlZiAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gdW5pcXVlOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJS
ZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0
IGdldChJREJLZXlSYW5nZT8ga2V5KTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxP
YmplY3RdIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtleSk7CisgICAg
W05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5UmFuZ2U/IGtleSk7CiAgICAgW05l
d09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5
KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0
QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNl
UmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qg
Z2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZv
cmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRo
PUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXRBbGwoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9y
Y2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/
IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3Vu
dCk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxv
bmcgY291bnQpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVx
dWVzdCBnZXRBbGxLZXlzKGFueSBrZXksIG9wdGlvbmFsIFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgY291bnQpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURC
UmVxdWVzdCBjb3VudChvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsKTsKKyAgICBb
TmV3T2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVz
dCBjb3VudChhbnkga2V5KTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVj
dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51
bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIpOworICAg
IFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8g
cmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5l
eHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3Qg
b3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
ID0gIm5leHQiKTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJl
cXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBv
cHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbTmV3
T2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJh
bmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJuZXh0
Iik7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9w
ZW5LZXlDdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biA9ICJuZXh0Iik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVu
dCgpIGNvbgogICAgIHJldHVybiBtX2luZm8uYXV0b0luY3JlbWVudCgpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5DdXJzb3IoSlNHbG9i
YWxPYmplY3QmIGV4ZWNTdGF0ZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9PcGVuQ3Vyc29y
KElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkpKTsKQEAgLTE2MiwxOSArMTYyLDE5IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5y
ZXR1cm5WYWx1ZSgpLmdldCgpOwogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29ySW5mbzo6b2Jq
ZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbiwgbV9pbmZvLmlkZW50aWZpZXIoKSwga2V5UmFu
Z2VQb2ludGVyLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUp
OwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwg
KnRoaXMsIGluZm8pOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RPcGVuQ3Vyc29y
KCp0aGlzLCBpbmZvKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBSZWZQdHI8SURC
S2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFJlZlB0cjxJ
REJLZXlSYW5nZT4mJiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICByZXR1cm4gZG9PcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgZGlyZWN0aW9uLCBbcmFuZ2UgPSBXVEZN
b3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0dXJuIGRvT3BlbkN1cnNvcihkaXJlY3Rpb24sIFtyYW5n
ZSA9IFdURk1vdmUocmFuZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0pOwog
fQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkb09wZW5DdXJzb3IoZXhlY1N0YXRlLCBk
aXJlY3Rpb24sIFtzdGF0ZT0mZXhlY1N0YXRlLCBrZXldKCkgeworICAgIHJldHVybiBkb09wZW5D
dXJzb3IoZGlyZWN0aW9uLCBbc3RhdGUgPSAmZXhlY1N0YXRlLCBrZXldKCkgewogICAgICAgICBh
dXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seSgqc3RhdGUsIGtleSk7CiAgICAgICAg
IGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+eyBFeGNlcHRpb24oRGF0YUVycm9yLCAiRmFpbGVk
IHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0
ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvT3BlbktleUN1cnNvcihKU0ds
b2JhbE9iamVjdCYgZXhlY1N0YXRlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24p
CitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlD
dXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRp
b25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvciIpOwogICAgIEFTU0VSVChjYW5D
dXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtMjAwLDE5ICsyMDAsMTkgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogCiAgICAgYXV0byoga2V5UmFuZ2VQb2ludGVyID0g
a2V5UmFuZ2UucmV0dXJuVmFsdWUoKS5nZXQoKTsKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJ
bmZvOjpvYmplY3RTdG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLCBtX2luZm8uaWRlbnRpZmllcigp
LCBrZXlSYW5nZVBvaW50ZXIsIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlP
bmx5KTsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0T3BlbkN1cnNvcihleGVjU3Rh
dGUsICp0aGlzLCBpbmZvKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0T3BlbkN1
cnNvcigqdGhpcywgaW5mbyk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgUmVm
UHRyPElEQktleVJhbmdlPiYmIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNv
cihSZWZQdHI8SURCS2V5UmFuZ2U+JiYgcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7Ci0gICAgcmV0dXJuIGRvT3BlbktleUN1cnNvcihleGVjU3RhdGUsIGRpcmVjdGlvbiwg
W3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgeworICAgIHJldHVybiBkb09wZW5LZXlDdXJzb3Io
ZGlyZWN0aW9uLCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CiAgICAgICAgIHJldHVybiBy
YW5nZTsKICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6b3BlbktleUN1cnNvcihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1ZhbHVl
IGtleSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICByZXR1cm4gZG9PcGVu
Q3Vyc29yKGV4ZWNTdGF0ZSwgZGlyZWN0aW9uLCBbc3RhdGU9JmV4ZWNTdGF0ZSwga2V5XSgpIHsK
KyAgICByZXR1cm4gZG9PcGVuQ3Vyc29yKGRpcmVjdGlvbiwgW3N0YXRlID0gJmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0
YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9u
KERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdvcGVuS2V5Q3Vyc29yJyBvbiAnSURCT2Jq
ZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkBAIC0y
MzYsMTAgKzIzNiwxMCBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
CiAgICAgaWYgKCFpZGJLZXktPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJREJPYmplY3RTdG9yZSc6
IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcyB9OwogCi0gICAgcmV0dXJuIG1f
dHJhbnNhY3Rpb24ucmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGlkYktleS5w
dHIoKSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlIH0pOworICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRSZWNvcmQoKnRoaXMsIHsgaWRiS2V5LnB0cigpLCBJREJH
ZXRSZWNvcmREYXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRl
LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpnZXQoSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpKSk7CkBAIC0yNTQsNyArMjU0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdAogICAgIGlmICgha2V5UmFuZ2VEYXRhLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciB9OwogCi0gICAgcmV0dXJuIG1fdHJhbnNhY3Rp
b24ucmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGtleVJhbmdlRGF0YSwgSURC
R2V0UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlIH0pOworICAgIHJldHVybiBtX3RyYW5zYWN0
aW9uLnJlcXVlc3RHZXRSZWNvcmQoKnRoaXMsIHsga2V5UmFuZ2VEYXRhLCBJREJHZXRSZWNvcmRE
YXRhVHlwZTo6S2V5QW5kVmFsdWUgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSkKQEAgLTI3MiwxMCArMjcyLDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3QKICAgICBpZiAoIWlkYktleS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24g
J0lEQk9iamVjdFN0b3JlJzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIl9zIH07
CiAKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKGV4ZWNTdGF0ZSwg
KnRoaXMsIHsgaWRiS2V5LnB0cigpLCBJREJHZXRSZWNvcmREYXRhVHlwZTo6S2V5T25seSB9KTsK
KyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0UmVjb3JkKCp0aGlzLCB7IGlkYktl
eS5wdHIoKSwgSURCR2V0UmVjb3JkRGF0YVR5cGU6OktleU9ubHkgfSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShKU0dsb2JhbE9iamVj
dCYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRLZXkoSURCS2V5UmFuZ2UqIGtleVJhbmdlKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0S2V5Iik7CiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0yOTAsNyArMjkwLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlmICgha2V5UmFuZ2VEYXRhLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFFcnJvciwgIkZhaWxlZCB0
byBleGVjdXRlICdnZXRLZXknIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMg
bm90IGEgdmFsaWQga2V5IHJhbmdlLiJfcyB9OwogCi0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24u
cmVxdWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGtleVJhbmdlRGF0YSwgSURCR2V0
UmVjb3JkRGF0YVR5cGU6OktleU9ubHkgfSk7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVx
dWVzdEdldFJlY29yZCgqdGhpcywgeyBrZXlSYW5nZURhdGEsIElEQkdldFJlY29yZERhdGFUeXBl
OjpLZXlPbmx5IH0pOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0b3JlOjphZGQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZSBrZXkpCkBAIC0zMjIsNyArMzIyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdAogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6cHV0T3JB
ZGQiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YSht
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIGF1dG8gY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSk7CisgICAg
YXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
dG9yZSByZWNvcmQgaW4gb2JqZWN0IHN0b3JlIGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIHZh
bGlkIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCJfcyB9OwogCkBAIC0zODQsMTcgKzM4NCwxNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgfSBlbHNlIGlm
ICghdXNlc0tleUdlbmVyYXRvciAmJiAha2V5KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RGF0YUVycm9yLCAiRmFpbGVkIHRvIHN0b3JlIHJlY29yZCBpbiBhbiBJREJPYmplY3RTdG9yZTog
VGhlIG9iamVjdCBzdG9yZSB1c2VzIG91dC1vZi1saW5lIGtleXMgYW5kIGhhcyBubyBrZXkgZ2Vu
ZXJhdG9yIGFuZCB0aGUga2V5IHBhcmFtZXRlciB3YXMgbm90IHByb3ZpZGVkLiJfcyB9OwogCi0g
ICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdFB1dE9yQWRkKHN0YXRlLCAqdGhpcywgV1RG
TW92ZShrZXkpLCAqc2VyaWFsaXplZFZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICByZXR1cm4g
bV90cmFuc2FjdGlvbi5yZXF1ZXN0UHV0T3JBZGQoKnRoaXMsIFdURk1vdmUoa2V5KSwgKnNlcmlh
bGl6ZWRWYWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0JiBleGVj
U3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKElEQktleVJhbmdlKiBrZXlSYW5nZSkK
IHsKLSAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCBba2V5UmFuZ2VdKCkgeworICAgIHJl
dHVybiBkb0RlbGV0ZShba2V5UmFuZ2VdKCkgewogICAgICAgICByZXR1cm4gUmVmUHRyIHsga2V5
UmFuZ2UgfTsKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6ZG9EZWxldGUoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24iKTsK
ICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTQyMSwxMiArNDIxLDEyIEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3QKICAgICBpZiAoIWtleVJh
bmdlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3Is
ICJGYWlsZWQgdG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFy
YW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleSByYW5nZS4iX3MgfTsKIAotICAgIHJldHVybiBtX3Ry
YW5zYWN0aW9uLnJlcXVlc3REZWxldGVSZWNvcmQoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VE
YXRhKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0RGVsZXRlUmVjb3JkKCp0aGlz
LCBrZXlSYW5nZURhdGEpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSkKIHsKLSAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCBbc3RhdGU9JmV4ZWNT
dGF0ZSwga2V5XSgpIHsKKyAgICByZXR1cm4gZG9EZWxldGUoW3N0YXRlID0gJmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKICAgICAgICAgYXV0byBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCpzdGF0
ZSwga2V5KTsKICAgICAgICAgaWYgKCFpZGJLZXktPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9uKERhdGFFcnJv
ciwgIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGUnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBw
YXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgfSk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKEpTR2xvYmFs
T2JqZWN0JiBleGVjU3RhdGUpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0b3JlOjpjbGVhcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpj
bGVhciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRh
KG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtNDUzLDEwICs0
NTMsMTAgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlm
IChtX3RyYW5zYWN0aW9uLmlzUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFJlYWRvbmx5RXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnY2xlYXInIG9uICdJREJPYmplY3RT
dG9yZSc6IFRoZSB0cmFuc2FjdGlvbiBpcyByZWFkLW9ubHkuIl9zIH07CiAKLSAgICByZXR1cm4g
bV90cmFuc2FjdGlvbi5yZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShleGVjU3RhdGUsICp0aGlzKTsK
KyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSgqdGhpcyk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleChKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmIGtl
eVBhdGgsIGNvbnN0IEluZGV4UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK0V4Y2VwdGlvbk9yPFJl
ZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIElEQktleVBhdGgmJiBrZXlQYXRoLCBjb25zdCBJbmRleFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCAl
cyAoa2V5UGF0aDogJXMsIHVuaXF1ZTogJWksIG11bHRpRW50cnk6ICVpKSIsIG5hbWUudXRmOCgp
LmRhdGEoKSwgbG9nZ2luZ1N0cmluZyhrZXlQYXRoKS51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXJz
LnVuaXF1ZSwgcGFyYW1ldGVycy5tdWx0aUVudHJ5KTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkpKTsKQEAgLTU3MiwxNyArNTcyLDE3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3QKIAogICAgIGF1dG8gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktl
eShleGVjU3RhdGUsIGtleSk7CiAKLSAgICByZXR1cm4gZG9Db3VudChleGVjU3RhdGUsIElEQktl
eVJhbmdlRGF0YShpZGJLZXktPmlzVmFsaWQoKSA/IGlkYktleS5wdHIoKSA6IG51bGxwdHIpKTsK
KyAgICByZXR1cm4gZG9Db3VudChJREJLZXlSYW5nZURhdGEoaWRiS2V5LT5pc1ZhbGlkKCkgPyBp
ZGJLZXkucHRyKCkgOiBudWxscHRyKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmNvdW50KEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIElEQktl
eVJhbmdlKiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmNvdW50KElEQktleVJhbmdlKiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
T2JqZWN0U3RvcmU6OmNvdW50Iik7CiAKLSAgICByZXR1cm4gZG9Db3VudChleGVjU3RhdGUsIHJh
bmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygp
KTsKKyAgICByZXR1cm4gZG9Db3VudChyYW5nZSA/IElEQktleVJhbmdlRGF0YShyYW5nZSkgOiBJ
REJLZXlSYW5nZURhdGE6OmFsbEtleXMoKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
IHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIApAQCAtNjAwLDEwICs2MDAs
MTAgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdAogICAgIGlmICgh
cmFuZ2UuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRGF0YUVycm9yLCAi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2NvdW50JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFyYW1l
dGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MgfTsKIAotICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
LnJlcXVlc3RDb3VudChleGVjU3RhdGUsICp0aGlzLCByYW5nZSk7CisgICAgcmV0dXJuIG1fdHJh
bnNhY3Rpb24ucmVxdWVzdENvdW50KCp0aGlzLCByYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBl
eGVjU3RhdGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5
UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RT
dG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRM
b2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02
MTksMTkgKzYxOSwxOSBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
CiAgICAgICAgIHJldHVybiBrZXlSYW5nZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBhdXRv
KiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlSYW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwotICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoZXhlY1N0
YXRlLCAqdGhpcywga2V5UmFuZ2VQb2ludGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVl
cywgY291bnQpOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RT
dG9yZVJlY29yZHMoKnRoaXMsIGtleVJhbmdlUG9pbnRlciwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
OjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJL
ZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoUmVmUHRyPElEQktl
eVJhbmdlPiYmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKLSAgICBy
ZXR1cm4gZG9HZXRBbGwoZXhlY1N0YXRlLCBjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSld
KCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSld
KCkgewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChKU0dsb2JhbE9iamVjdCYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0g
ICAgcmV0dXJuIGRvR2V0QWxsKGV4ZWNTdGF0ZSwgY291bnQsIFtzdGF0ZT0mZXhlY1N0YXRlLCBr
ZXldKCkgeworICAgIHJldHVybiBkb0dldEFsbChjb3VudCwgW3N0YXRlID0gJmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0
YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9u
KERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGwnIG9uICdJREJPYmplY3RTdG9y
ZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiJfcykgfTsKQEAgLTY0MCw3ICs2
NDAsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgfSk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0
QWxsS2V5cyhKU0dsb2JhbE9iamVjdCYgZXhlY1N0YXRlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+Pigp
PiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9y
ZTo6ZG9HZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzIik7CiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02NTYsMTkgKzY1NiwxOSBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0CiAgICAgICAgIHJldHVybiBrZXlSYW5n
ZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBhdXRvKiBrZXlSYW5nZVBvaW50ZXIgPSBrZXlS
YW5nZS5yZXR1cm5WYWx1ZSgpLmdldCgpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVl
c3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywga2V5UmFuZ2VQb2lu
dGVyLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKKyAgICByZXR1cm4gbV90
cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKCp0aGlzLCBrZXlSYW5n
ZVBvaW50ZXIsIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291bnQpOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEpTR2xv
YmFsT2JqZWN0JiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKFJlZlB0cjxJREJLZXlSYW5nZT4mJiByYW5nZSwgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7Ci0gICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhl
eGVjU3RhdGUsIGNvdW50LCBbcmFuZ2UgPSBXVEZNb3ZlKHJhbmdlKV0oKSB7CisgICAgcmV0dXJu
IGRvR2V0QWxsS2V5cyhjb3VudCwgW3JhbmdlID0gV1RGTW92ZShyYW5nZSldKCkgewogICAgICAg
ICByZXR1cm4gcmFuZ2U7CiAgICAgfSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0ZSwg
SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewotICAgIHJldHVy
biBkb0dldEFsbEtleXMoZXhlY1N0YXRlLCBjb3VudCwgW3N0YXRlPSZleGVjU3RhdGUsIGtleV0o
KSB7CisgICAgcmV0dXJuIGRvR2V0QWxsS2V5cyhjb3VudCwgW3N0YXRlID0gJmV4ZWNTdGF0ZSwg
a2V5XSgpIHsKICAgICAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoKnN0
YXRlLCBrZXkpOwogICAgICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PnsgRXhjZXB0aW9u
KERhdGFFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGxLZXlzJyBvbiAnSURCT2JqZWN0
U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iX3MpIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgJ
KHJldmlzaW9uIDI4NDc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI3ICs3NCwyNyBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgbXVsdGlFbnRyeTsKICAgICB9OwogCi0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8SURC
S2V5UmFuZ2U+JiYsIElEQkN1cnNvckRpcmVjdGlvbik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBvcGVuQ3Vyc29yKFJlZlB0cjxJREJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGly
ZWN0aW9uKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IG9wZW5DdXJzb3IoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbik7
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vyc29yKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYsIElEQkN1cnNvckRpcmVjdGlvbik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBvcGVuS2V5Q3Vyc29yKFJlZlB0cjxJ
REJLZXlSYW5nZT4mJiwgSURCQ3Vyc29yRGlyZWN0aW9uKTsKICAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IG9wZW5LZXlDdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJ
REJLZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0KElEQktl
eVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KElEQktleVJhbmdlKik7CiAg
ICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBhZGQoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBwdXQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpK
U1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5j
dGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCS2V5UmFuZ2UqKTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGRlbGV0ZUZ1bmN0aW9uKElEQktleVJhbmdlKik7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkZWxldGVGdW5jdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBjbGVhcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQklu
ZGV4Pj4gY3JlYXRlSW5kZXgoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCS2V5UGF0aCYmLCBjb25zdCBJbmRleFBhcmFtZXRlcnMmKTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGNsZWFyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4
Pj4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYsIGNvbnN0IElu
ZGV4UGFyYW1ldGVycyYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IGluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNvdW50
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJLZXlSYW5nZSopOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gY291bnQoSURCS2V5UmFuZ2UqKTsKICAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUga2V5
KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgUmVmUHRyPElEQktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoUmVmUHRyPElE
QktleVJhbmdlPiYmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJl
ZlB0cjxJREJLZXlSYW5nZT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhSZWZQdHI8SURCS2V5UmFu
Z2U+JiYsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNW
YWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKIAogICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0Rm9yQ3Vyc29yVXBkYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYpOwpAQCAtMTE1LDEyICsxMTUsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIElubGluZUtleUNoZWNrIHsgUGVyZm9ybSwgRG9Ob3RQZXJmb3JtIH07CiAg
ICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBwdXRPckFkZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUsIElubGluZUtleUNoZWNrLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmID0gbnVsbHB0cik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0Nv
dW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvRGVsZXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJDdXJzb3JEaXJl
Y3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4m
Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChKU0M6OkpTR2xv
YmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZG9EZWxldGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURC
S2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09w
ZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiAmJik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAkocmV2aXNpb24g
Mjg0NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyOCArNDIsMjggQEAgdHlwZWRlZiAoRE9NU3Ry
aW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZwogCiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBJREJSZXF1ZXN0IHB1dChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwog
ICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBhZGQoYW55
IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9i
YWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRl
KElEQktleVJhbmdlPyBrZXlSYW5nZSk7CisgICAgW05ld09iamVjdCwgSW1wbGVtZW50ZWRBcz1k
ZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsK
ICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3QsIEltcGxlbWVudGVkQXM9ZGVs
ZXRlRnVuY3Rpb25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwotICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOwotICAgIFtOZXdPYmpl
Y3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtl
eSk7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBjbGVhcigpOworICAgIFtOZXdPYmplY3Rd
IElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtOZXdPYmplY3QsIENhbGxX
aXRoPUdsb2JhbE9iamVjdF0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7Ci0gICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8g
a2V5KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdldEtleShJREJLZXlSYW5nZT8ga2V5
KTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0
S2V5KGFueSBrZXkpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURC
UmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9u
YWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW05ld09iamVjdF0g
SURCUmVxdWVzdCBnZXRBbGwob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0
aW9uYWwgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgW05ld09iamVj
dCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbChhbnkga2V5LCBvcHRp
b25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKLSAgICBbTmV3T2JqZWN0
LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElEQlJlcXVlc3QgZ2V0QWxsS2V5cyhvcHRpb25hbCBJ
REJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBbRW5mb3JjZVJhbmdlXSB1bnNpZ25l
ZCBsb25nIGNvdW50KTsKKyAgICBbTmV3T2JqZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0
aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgW0VuZm9yY2VSYW5nZV0g
dW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2Jq
ZWN0XSBJREJSZXF1ZXN0IGdldEFsbEtleXMoYW55IGtleSwgb3B0aW9uYWwgW0VuZm9yY2VSYW5n
ZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7Ci0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51
bGwpOworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlID0gbnVsbCk7CiAgICAgW05ld09iamVjdCwgQ2FsbFdpdGg9R2xvYmFsT2JqZWN0
XSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9
R2xvYmFsT2JqZWN0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/
IHJhbmdlID0gbnVsbCwgb3B0aW9uYWwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJu
ZXh0Iik7CisgICAgW05ld09iamVjdF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElE
QktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJl
Y3Rpb24gPSAibmV4dCIpOwogICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0g
SURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24gPSAibmV4dCIpOwotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9i
amVjdF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5n
ZSA9IG51bGwsIG9wdGlvbmFsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSAibmV4dCIp
OworICAgIFtOZXdPYmplY3RdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihvcHRpb25hbCBJREJL
ZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uID0gIm5leHQiKTsKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1HbG9iYWxPYmplY3RdIElE
QlJlcXVlc3Qgb3BlbktleUN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uID0gIm5leHQiKTsKIAogICAgIElEQkluZGV4IGluZGV4KERPTVN0cmluZyBu
YW1lKTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPUdsb2JhbE9iamVjdF0gSURCSW5kZXgg
Y3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3Ry
aW5nPikga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAg
IFtOZXdPYmplY3RdIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCAoRE9NU3Ry
aW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIGtleVBhdGgsIG9wdGlvbmFsIElEQkluZGV4UGFy
YW1ldGVycyBvcHRpb25zKTsKICAgICB1bmRlZmluZWQgZGVsZXRlSW5kZXgoRE9NU3RyaW5nIG5h
bWUpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MTgsMzUgKzgxOCwzMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVJbmRleE9u
U2VyCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJ
REJSZXN1bHRUeXBlOjpSZW5hbWVJbmRleFN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0g
SURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RPcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQorUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwogICAgIEFTU0VSVChjYW5D
dXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJzb3JU
eXBlOjpLZXlPbmx5KQotICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0ZSwg
SURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3RvcmUsIGluZm8pKTsKKyAgICAgICAgcmV0dXJuIGRv
UmVxdWVzdE9wZW5DdXJzb3IoSURCQ3Vyc29yOjpjcmVhdGUob2JqZWN0U3RvcmUsIGluZm8pKTsK
IAotICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKHN0YXRlLCBJREJDdXJzb3JXaXRoVmFs
dWU6OmNyZWF0ZShvYmplY3RTdG9yZSwgaW5mbykpOworICAgIHJldHVybiBkb1JlcXVlc3RPcGVu
Q3Vyc29yKElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKG9iamVjdFN0b3JlLCBpbmZvKSk7CiB9
CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoSlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1cnNvckluZm8m
IGluZm8pCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29y
KElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkpKTsKIAogICAgIGlmIChpbmZvLmN1cnNvclR5cGUoKSA9PSBJbmRleGVkREI6
OkN1cnNvclR5cGU6OktleU9ubHkpCi0gICAgICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29y
KHN0YXRlLCBJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwgaW5mbykpOworICAgICAgICByZXR1cm4g
ZG9SZXF1ZXN0T3BlbkN1cnNvcihJREJDdXJzb3I6OmNyZWF0ZShpbmRleCwgaW5mbykpOwogCi0g
ICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNvcldpdGhWYWx1ZTo6
Y3JlYXRlKGluZGV4LCBpbmZvKSk7CisgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3IoSURC
Q3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoaW5kZXgsIGluZm8pKTsKIH0KIAotUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiB7CiAg
ICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNz
VGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NF
UlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3Vyc29yLmdldCgp
LCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIApAQCAtOTI2LDE0ICs5
MjQsMTIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uUwogICAgIGNv
bXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAotUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUg
Z2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0
YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAg
ICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChy
ZXF1ZXN0LmdldCgpKTsKIApAQCAtOTQ5LDEzICs5NDUsMTIgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpK
U0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlw
ZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7CiAgICAgQVNTRVJU
KGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VE
KHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsICp0aGlzKTsKICAgICBh
ZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTAwNSwxNSArMTAwMCwxMyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TCiAgICAgY29tcGxldGVOb25jdXJzb3JS
ZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERh
dGEpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dFJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIWdldFJlY29y
ZERhdGEua2V5UmFuZ2VEYXRhLmlzTnVsbCk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRB
Y2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAotICAg
IEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQogICAgIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVSZWNvcmRUeXBlIHR5cGUgPSBnZXRSZWNvcmREYXRhLnR5cGUgPT0gSURCR2V0
UmVjb3JkRGF0YVR5cGU6OktleUFuZFZhbHVlID8gSW5kZXhlZERCOjpPYmplY3RTdG9yZVJlY29y
ZFR5cGU6OlZhbHVlT25seSA6IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlOjpLZXlP
bmx5OwogCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlT2JqZWN0U3RvcmVH
ZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsIHR5cGUsICp0aGlzKTsK
QEAgLTEwMjksMzEgKzEwMjIsMjkgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0RwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZShKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQkluZGV4
JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKElEQkluZGV4JiBpbmRleCwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRWYWx1ZSIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNz
VGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICByZXR1
cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29y
ZFR5cGU6OlZhbHVlLCByYW5nZSk7CisgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChpbmRl
eCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OlZhbHVlLCByYW5nZSk7CiB9CiAKLVJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShKU0dsb2JhbE9iamVjdCYg
c3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1Jl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShJREJJbmRleCYgaW5k
ZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFsdWUiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVu
dFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkp
OwogCi0gICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWRE
Qjo6SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKKyAgICByZXR1cm4gcmVxdWVzdEluZGV4
UmVjb3JkKGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6S2V5LCByYW5nZSk7CiB9
CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVj
b3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5kZXgmIGluZGV4LCBJ
bmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZh
bHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghcmFuZ2UuaXNOdWxs
KTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKCZzdGF0ZSkpOwotCiAgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlSW5k
ZXhHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsIHR5cGUsICp0aGlzKTsKICAg
ICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTEwLDE1ICsxMTAxLDEzIEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmUKICAgICBjb21wbGV0ZU5vbmN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSURCT2JqZWN0U3RvcmUm
IG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSki
KTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
JnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0
KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMTMyLDE1ICsxMTIxLDEzIEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEMKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoSlNHbG9iYWxPYmplY3Qm
IHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCitS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChJREJJbmRleCYgaW5k
ZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQgKElEQkluZGV4KSIpOwogICAgIEFTU0VSVChp
c0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQogICAg
IGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBpbmRleCwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKQEAg
LTExNzEsMTUgKzExNTgsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNl
cnZlcgogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsK
IH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3Jk
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0RGVsZXRlUmVjb3JkKElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAg
ICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBB
U1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3Rv
cmUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMjA5LDE0
ICsxMTk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9uU2UKICAg
ICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKLVJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCitSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKElEQk9iamVj
dFN0b3JlJiBvYmplY3RTdG9yZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
JnN0YXRlKSk7Ci0KICAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0
KHJlcXVlc3QuZ2V0KCkpOwogCkBAIC0xMjQ5LDcgKzEyMzIsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlCiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJl
cXVlc3QsIHJlc3VsdERhdGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RQdXRPckFkZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBv
YmplY3RTdG9yZSwgUmVmUHRyPElEQktleT4mJiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYg
dmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUp
CitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChJREJPYmpl
Y3RTdG9yZSYgb2JqZWN0U3RvcmUsIFJlZlB0cjxJREJLZXk+JiYga2V5LCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVy
d3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dFB1dE9yQWRkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtMTI1Nyw4ICsxMjQwLDYg
QEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UAogICAgIEFTU0VSVChv
YmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7CiAgICAgQVNTRVJUKGNh
bkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkpKTsKIAotICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLQog
ICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBvYmplY3RTdG9yZSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQo
KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMjg0NzU4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE4ICsx
MTIsMTggQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gY3JlYXRlSW5k
ZXgoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJJbmRleEluZm8mKTsKICAgICB2b2lkIHJlbmFt
ZUluZGV4KElEQkluZGV4JiwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKTsKIAotICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0UHV0T3JBZGQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQk9iamVjdFN0
b3JlJiwgUmVmUHRyPElEQktleT4mJiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
R2V0UmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElE
QkdldFJlY29yZERhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbE9iamVj
dFN0b3JlUmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4
UmVjb3JkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29yZChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIElEQk9iamVjdFN0b3JlJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3Vu
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENvdW50KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0R2V0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4Jiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRL
ZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
Jik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29yKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKLSAgICBSZWY8
SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQklu
ZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
UHV0T3JBZGQoSURCT2JqZWN0U3RvcmUmLCBSZWZQdHI8SURCS2V5PiYmLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CisgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJH
ZXRSZWNvcmREYXRhJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RT
dG9yZVJlY29yZHMoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRl
eGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBS
ZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhJREJJbmRleCYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0RGVsZXRlUmVjb3Jk
KElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3RDbGVhck9iamVjdFN0b3JlKElEQk9iamVjdFN0b3JlJik7CisgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291bnQoSURCSW5kZXgmLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldFZh
bHVlKElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgUmVmPElEQlJlcXVl
c3Q+IHJlcXVlc3RHZXRLZXkoSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSURCT2JqZWN0U3RvcmUmLCBjb25z
dCBJREJDdXJzb3JJbmZvJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29y
KElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQgaXRlcmF0ZUN1cnNv
cihJREJDdXJzb3ImLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYpOwogCiAgICAgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CkBAIC0xODAs
NyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVPbkFib3J0KCk7CiAgICAgdm9pZCBl
bnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
SW5kZXhSZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIElEQkluZGV4JiwgSW5kZXhlZERCOjpJ
bmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoSURCSW5kZXgmLCBJbmRleGVkREI6OkluZGV4UmVjb3Jk
VHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAKICAgICB2b2lkIGNvbW1pdE9uU2VydmVy
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBwZW5kaW5nUmVxdWVz
dENvdW50KTsKICAgICB2b2lkIGFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgaW5kZXhOYW1lKTsKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IGRvUmVxdWVzdE9wZW5DdXJzb3Io
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxJREJDdXJzb3I+JiYpOworICAgIFJlZjxJREJSZXF1
ZXN0PiBkb1JlcXVlc3RPcGVuQ3Vyc29yKFJlZjxJREJDdXJzb3I+JiYpOwogICAgIHZvaWQgb3Bl
bkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJ
REJDdXJzb3JJbmZvJik7CiAgICAgdm9pZCBkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIoSURCUmVxdWVz
dCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAJ
KHJldmlzaW9uIDI4NDc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNyArNDYxLDYg
QEAgcHVibGljOgogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFjdGl2YXRvcihpZGJU
cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1ZXN0
OwotICAgICAgICBhdXRvKiBleGVjID0gY29udGV4dCgpID8gY29udGV4dCgpLT5nbG9iYWxPYmpl
Y3QoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBhdXRvIGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RT
dG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkgewpA
QCAtNDY5LDE3ICs0NjgsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGV4ZWMpIHsKLSAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IGlkYkluZGV4LT5vcGVuQ3Vyc29yKCpleGVjLCBtX2lkYktleVJhbmdlLmdl
dCgpLCBJREJDdXJzb3JEaXJlY3Rpb246Ok5leHQpOwotICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBpZGJSZXF1ZXN0ID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBpZGJJbmRleC0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLmdldCgpLCBJREJD
dXJzb3JEaXJlY3Rpb246Ok5leHQpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICAgICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChleGVjKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvcigqZXhl
YywgbV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpOZXh0KTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAg
ICAgaWRiUmVxdWVzdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3Io
bV9pZGJLZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yRGlyZWN0aW9uOjpOZXh0KTsKKyAgICAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlkYlJlcXVl
c3QgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIWlkYlJlcXVlc3QpIHsKQEAgLTcwMywxNSArNjk4LDExIEBAIHB1YmxpYzoKICAgICAgICAg
fQogCiAgICAgICAgIFRyYW5zYWN0aW9uQWN0aXZhdG9yIGFjdGl2YXRvcihpZGJUcmFuc2FjdGlv
bi5nZXQoKSk7Ci0gICAgICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1ZXN0OwotICAgICAg
ICBpZiAoYXV0byogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkg
OiBudWxscHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9iamVjdFN0b3JlLT5j
bGVhcigqZXhlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSk7
Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAg
ICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBj
bGVhciBvYmplY3Qgc3RvcmUgJyIsIG1fb2JqZWN0U3RvcmVOYW1lLCAiJzogIiwgc3RhdGljX2Nh
c3Q8aW50PihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZGJSZXF1ZXN0ID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGlkYk9iamVj
dFN0b3JlLT5jbGVhcigpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSk7
CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIG1fcmVx
dWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShtYWtlU3RyaW5nKCJDb3VsZCBub3QgY2xlYXIgb2Jq
ZWN0IHN0b3JlICciLCBtX29iamVjdFN0b3JlTmFtZSwgIic6ICIsIHN0YXRpY19jYXN0PGludD4o
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBpZGJUcmFuc2FjdGlvbi0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyOjpjcmVh
dGUobV9yZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQ3NTgpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MTAtMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IEFzc2VydGlvbnMgaW4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3QqKCkgbWV0aG9kcyBmYWlsIG9u
IGNyb3NzLXJlYWxtIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDEyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpaHVpIExpdS4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVh
bG0tbWV0aG9kcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtY3Jvc3MtcmVhbG0tbWV0aG9kcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNy
b3NzLXJlYWxtLW1ldGhvZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNyb3NzLXJlYWxtLW1ldGhvZHMu
aHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgogCiAgICAgICAgIGRvY3VtZW50Lm9wZW4oKSBhbmQgZnJpZW5kcyB1c2UgaW5j
b3JyZWN0IGRvY3VtZW50IGFzIGEgc291cmNlIGZvciByZXNldGVkIGRvY3VtZW50J3MgVVJMCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkgQEAKKworUEFTUyBDcm9zcy1yZWFsbSBJREJJbmRleDo6Z2V0KCkgbWV0aG9k
IGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVh
bG0gSURCSW5kZXg6OmdldEtleSgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtz
IGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQkluZGV4OjpnZXRBbGwoKSBtZXRob2Qg
ZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFs
bSBJREJJbmRleDo6Z2V0QWxsS2V5cygpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdv
cmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQkluZGV4Ojpjb3VudCgpIG1ldGhv
ZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJl
YWxtIElEQkluZGV4OjpvcGVuQ3Vyc29yKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4g
d29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJpbmRleC1jcm9zcy1yZWFsbS1tZXRob2RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgt
Y3Jvc3MtcmVhbG0tbWV0aG9kcy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4LWNyb3NzLXJl
YWxtLW1ldGhvZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+Q3Jvc3MtcmVhbG0gSURCSW5k
ZXggbWV0aG9kcyBmcm9tIGRldGFjaGVkIGlmcmFtZSB3b3JrIGFzIGV4cGVjdGVkPC90aXRsZT4K
KzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9c3VwcG9ydC5qcz48L3NjcmlwdD4KKworPGJvZHk+Cis8c2NyaXB0PgorInVzZSBzdHJpY3Qi
OworY29uc3QgSU5ERVhfTE9XRVIgPSAxMDAwOworY29uc3QgSU5ERVhfVVBQRVIgPSAxMDAxOwor
Y29uc3QgSU5ERVhfUkFOR0UgPSBJREJLZXlSYW5nZS5ib3VuZChJTkRFWF9MT1dFUiwgSU5ERVhf
VVBQRVIpOworCitjb25zdCB0ZXN0Q2FzZXMgPSBbCisgICAgeworICAgICAgICBtZXRob2ROYW1l
OiAiZ2V0IiwKKyAgICAgICAgYXJndW1lbnRzOiBbSU5ERVhfTE9XRVJdLAorICAgICAgICB2YWxp
ZGF0ZVJlc3VsdDogZSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJl
c3VsdC5pbmRleGVkS2V5LCBJTkRFWF9MT1dFUik7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7
CisgICAgICAgIG1ldGhvZE5hbWU6ICJnZXRLZXkiLAorICAgICAgICBhcmd1bWVudHM6IFtJTkRF
WF9VUFBFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBJTkRFWF9VUFBFUik7CisgICAgICAgIH0sCisg
ICAgfSwKKyAgICB7CisgICAgICAgIG1ldGhvZE5hbWU6ICJnZXRBbGwiLAorICAgICAgICBhcmd1
bWVudHM6IFtJTkRFWF9SQU5HRV0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS50YXJnZXQucmVzdWx0Lm1hcCh2ID0+IHYu
aW5kZXhlZEtleSksIFtJTkRFWF9MT1dFUiwgSU5ERVhfVVBQRVJdKTsKKyAgICAgICAgfSwKKyAg
ICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImdldEFsbEtleXMiLAorICAgICAgICBh
cmd1bWVudHM6IFtJTkRFWF9SQU5HRV0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsK
KyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBbSU5ERVhf
TE9XRVIsIElOREVYX1VQUEVSXSk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAg
IG1ldGhvZE5hbWU6ICJjb3VudCIsCisgICAgICAgIGFyZ3VtZW50czogW0lOREVYX1JBTkdFXSwK
KyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6IGUgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhlLnRhcmdldC5yZXN1bHQsIDIpOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAg
ICBtZXRob2ROYW1lOiAib3BlbkN1cnNvciIsCisgICAgICAgIGFyZ3VtZW50czogW10sCisgICAg
ICAgIHZhbGlkYXRlUmVzdWx0OiBlID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGUu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9m
IElEQkN1cnNvcik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1cnNvci52YWx1ZS5pbmRl
eGVkS2V5LCBJTkRFWF9MT1dFUik7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAg
IG1ldGhvZE5hbWU6ICJvcGVuS2V5Q3Vyc29yIiwKKyAgICAgICAgYXJndW1lbnRzOiBbXSwKKyAg
ICAgICAgdmFsaWRhdGVSZXN1bHQ6IGUgPT4geworICAgICAgICAgICAgY29uc3QgY3Vyc29yID0g
ZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNl
b2YgSURCQ3Vyc29yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3Vyc29yLmtleSwgSU5E
RVhfTE9XRVIpOworICAgICAgICB9LAorICAgIH0sCitdOworCitmb3IgKGNvbnN0IHRlc3RDYXNl
IG9mIHRlc3RDYXNlcykgeworICAgIGFzeW5jX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IGlm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWUu
b25sb2FkID0gdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgICAgICAgY29uc3QgbWV0aG9kID0g
aWZyYW1lLmNvbnRlbnRXaW5kb3cuSURCSW5kZXgucHJvdG90eXBlW3Rlc3RDYXNlLm1ldGhvZE5h
bWVdOworICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpOworCisgICAgICAgICAgICBsZXQgZGI7
CisgICAgICAgICAgICBjb25zdCBvcGVuX3JxID0gY3JlYXRlZGIodCk7CisgICAgICAgICAgICBv
cGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IHQuc3RlcF9mdW5jKGUgPT4geworICAgICAgICAgICAg
ICAgIGRiID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CisgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRLZXkiKTsKKyAgICAgICAgICAg
ICAgICBvYmplY3RTdG9yZS5hZGQoeyBpbmRleGVkS2V5OiBJTkRFWF9MT1dFUiB9LCBJTkRFWF9M
T1dFUik7CisgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHsgaW5kZXhlZEtleTogSU5E
RVhfVVBQRVIgfSwgSU5ERVhfVVBQRVIpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IG9wZW5fcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgICAgICAgICAg
IGNvbnN0IGluZGV4ID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIikub2JqZWN0U3RvcmUoInN0b3Jl
IikuaW5kZXgoImluZGV4Iik7CisgICAgICAgICAgICAgICAgY29uc3QgcnEgPSBtZXRob2QuY2Fs
bChpbmRleCwgLi4udGVzdENhc2UuYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBycS5vbnN1
Y2Nlc3MgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4geworICAgICAgICAgICAgICAgICAgICB0ZXN0
Q2FzZS52YWxpZGF0ZVJlc3VsdChlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsK
KyAgICB9LCBgQ3Jvc3MtcmVhbG0gSURCSW5kZXg6OiR7dGVzdENhc2UubWV0aG9kTmFtZX0oKSBt
ZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZGApOworfQorPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2RzLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2RzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgQ3Jvc3Mt
cmVhbG0gSURCT2JqZWN0U3RvcmU6OnB1dCgpIG1ldGhvZCBmcm9tIGRldGFjaGVkIDxpZnJhbWU+
IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9iamVjdFN0b3JlOjphZGQo
KSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBD
cm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6ZGVsZXRlKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQg
PGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3Rv
cmU6OmNsZWFyKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0
ZWQKK1BBU1MgQ3Jvc3MtcmVhbG0gSURCT2JqZWN0U3RvcmU6OmdldCgpIG1ldGhvZCBmcm9tIGRl
dGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxtIElEQk9i
amVjdFN0b3JlOjpnZXRLZXkoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBh
cyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKCkgbWV0
aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKK1BBU1MgQ3Jvc3Mt
cmVhbG0gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8
aWZyYW1lPiB3b3JrcyBhcyBleHBlY3RlZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9y
ZTo6Y291bnQoKSBtZXRob2QgZnJvbSBkZXRhY2hlZCA8aWZyYW1lPiB3b3JrcyBhcyBleHBlY3Rl
ZAorUEFTUyBDcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcigpIG1ldGhvZCBm
cm9tIGRldGFjaGVkIDxpZnJhbWU+IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIENyb3NzLXJlYWxt
IElEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlm
cmFtZT4gd29ya3MgYXMgZXhwZWN0ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtY3Jvc3MtcmVhbG0t
bWV0aG9kcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlLWNyb3NzLXJlYWxtLW1ldGhv
ZHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jcm9zcy1yZWFsbS1tZXRob2Rz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBJREJPYmplY3RTdG9yZSBt
ZXRob2RzIGZyb20gZGV0YWNoZWQgaWZyYW1lIHdvcmsgYXMgZXhwZWN0ZWQ8L3RpdGxlPgorPHNj
cmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz1z
dXBwb3J0LmpzPjwvc2NyaXB0PgorCis8Ym9keT4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Citj
b25zdCBLRVlfRVhJU1RJTkdfTE9XRVIgPSAxMDAwOworY29uc3QgS0VZX0VYSVNUSU5HX1VQUEVS
ID0gMTAwMTsKK2NvbnN0IEtFWV9FWElTVElOR19SQU5HRSA9IElEQktleVJhbmdlLmJvdW5kKEtF
WV9FWElTVElOR19MT1dFUiwgS0VZX0VYSVNUSU5HX1VQUEVSKTsKK2NvbnN0IEtFWV9ORVdMWV9B
RERFRCA9IDEwMDI7CisKK2NvbnN0IFZBTFVFX0VYSVNUSU5HX0xPV0VSID0gIlZBTFVFX0VYSVNU
SU5HX0xPV0VSIjsKK2NvbnN0IFZBTFVFX0VYSVNUSU5HX1VQUEVSID0gIlZBTFVFX0VYSVNUSU5H
X1VQUEVSIjsKK2NvbnN0IFZBTFVFX05FV0xZX0FEREVEID0gIlZBTFVFX05FV0xZX0FEREVEIjsK
KworY29uc3QgdGVzdENhc2VzID0gWworICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogInB1dCIs
CisgICAgICAgIGFyZ3VtZW50czogW0tFWV9ORVdMWV9BRERFRCwgS0VZX0VYSVNUSU5HX0xPV0VS
XSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgS0VZX0VYSVNUSU5HX0xPV0VSKTsKKyAgICAgICAg
ICAgIGNvbnN0IHJxID0gZS50YXJnZXQuc291cmNlLmdldEFsbCgpOworICAgICAgICAgICAgcnEu
b25zdWNjZXNzID0gdC5zdGVwX2Z1bmNfZG9uZShlID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgW0tFWV9ORVdMWV9BRERFRCwgVkFMVUVf
RVhJU1RJTkdfVVBQRVJdKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgIH0sCisg
ICAgeworICAgICAgICBtZXRob2ROYW1lOiAiYWRkIiwKKyAgICAgICAgYXJndW1lbnRzOiBbVkFM
VUVfTkVXTFlfQURERUQsIEtFWV9ORVdMWV9BRERFRF0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0
OiAodCwgZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQs
IEtFWV9ORVdMWV9BRERFRCk7CisgICAgICAgICAgICBjb25zdCBycSA9IGUudGFyZ2V0LnNvdXJj
ZS5nZXRBbGwoKTsKKyAgICAgICAgICAgIHJxLm9uc3VjY2VzcyA9IHQuc3RlcF9mdW5jX2RvbmUo
ZSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhlLnRhcmdldC5yZXN1
bHQsIFtWQUxVRV9FWElTVElOR19MT1dFUiwgVkFMVUVfRVhJU1RJTkdfVVBQRVIsIFZBTFVFX05F
V0xZX0FEREVEXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsK
KyAgICAgICAgbWV0aG9kTmFtZTogImRlbGV0ZSIsCisgICAgICAgIGFyZ3VtZW50czogW0tFWV9F
WElTVElOR19MT1dFUl0sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhlLnRhcmdldC5yZXN1bHQsIHVuZGVmaW5lZCk7CisgICAg
ICAgICAgICBjb25zdCBycSA9IGUudGFyZ2V0LnNvdXJjZS5nZXRBbGxLZXlzKCk7CisgICAgICAg
ICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuY19kb25lKGUgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBbS0VZX0VYSVNUSU5HX1VQ
UEVSXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAg
ICAgbWV0aG9kTmFtZTogImNsZWFyIiwKKyAgICAgICAgYXJndW1lbnRzOiBbXSwKKyAgICAgICAg
dmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGUu
dGFyZ2V0LnJlc3VsdCwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIGNvbnN0IHJxID0gZS50YXJn
ZXQuc291cmNlLmNvdW50KCk7CisgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVu
Y19kb25lKGUgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJnZXQucmVz
dWx0LCAwKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAg
ICAgICBtZXRob2ROYW1lOiAiZ2V0IiwKKyAgICAgICAgYXJndW1lbnRzOiBbS0VZX0VYSVNUSU5H
X1VQUEVSXSwKKyAgICAgICAgdmFsaWRhdGVSZXN1bHQ6ICh0LCBlKSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGUudGFyZ2V0LnJlc3VsdCwgVkFMVUVfRVhJU1RJTkdfVVBQRVIpOwor
ICAgICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAg
IG1ldGhvZE5hbWU6ICJnZXRLZXkiLAorICAgICAgICBhcmd1bWVudHM6IFtLRVlfRVhJU1RJTkdf
TE9XRVJdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBLRVlfRVhJU1RJTkdfTE9XRVIpOworICAg
ICAgICAgICAgdC5kb25lKCk7CisgICAgICAgIH0sCisgICAgfSwKKyAgICB7CisgICAgICAgIG1l
dGhvZE5hbWU6ICJnZXRBbGwiLAorICAgICAgICBhcmd1bWVudHM6IFtLRVlfRVhJU1RJTkdfUkFO
R0VdLAorICAgICAgICB2YWxpZGF0ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoZS50YXJnZXQucmVzdWx0LCBbVkFMVUVfRVhJU1RJTkdfTE9XRVIs
IFZBTFVFX0VYSVNUSU5HX1VQUEVSXSk7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAg
fSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogImdldEFsbEtleXMiLAorICAg
ICAgICBhcmd1bWVudHM6IFtLRVlfRVhJU1RJTkdfUkFOR0VdLAorICAgICAgICB2YWxpZGF0ZVJl
c3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZS50YXJn
ZXQucmVzdWx0LCBbS0VZX0VYSVNUSU5HX0xPV0VSLCBLRVlfRVhJU1RJTkdfVVBQRVJdKTsKKyAg
ICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgICBt
ZXRob2ROYW1lOiAiY291bnQiLAorICAgICAgICBhcmd1bWVudHM6IFtdLAorICAgICAgICB2YWxp
ZGF0ZVJlc3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZS50YXJn
ZXQucmVzdWx0LCAyKTsKKyAgICAgICAgICAgIHQuZG9uZSgpOworICAgICAgICB9LAorICAgIH0s
CisgICAgeworICAgICAgICBtZXRob2ROYW1lOiAib3BlbkN1cnNvciIsCisgICAgICAgIGFyZ3Vt
ZW50czogW10sCisgICAgICAgIHZhbGlkYXRlUmVzdWx0OiAodCwgZSkgPT4geworICAgICAgICAg
ICAgY29uc3QgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoY3Vyc29yLnZhbHVlLCBWQUxVRV9FWElTVElOR19MT1dFUik7CisgICAgICAgICAgICB0LmRv
bmUoKTsKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgbWV0aG9kTmFtZTogIm9w
ZW5LZXlDdXJzb3IiLAorICAgICAgICBhcmd1bWVudHM6IFtdLAorICAgICAgICB2YWxpZGF0ZVJl
c3VsdDogKHQsIGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGUudGFyZ2V0LnJl
c3VsdDsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
cik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1cnNvci5rZXksIEtFWV9FWElTVElOR19M
T1dFUik7CisgICAgICAgICAgICB0LmRvbmUoKTsKKyAgICAgICAgfSwKKyAgICB9LAorXTsKKwor
Zm9yIChjb25zdCB0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsKKyAgICBhc3luY190ZXN0KHQgPT4g
eworICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICAgICAgaWZyYW1lLm9ubG9hZCA9IHQuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgICAg
ICAgIGNvbnN0IG1ldGhvZCA9IGlmcmFtZS5jb250ZW50V2luZG93LklEQk9iamVjdFN0b3JlLnBy
b3RvdHlwZVt0ZXN0Q2FzZS5tZXRob2ROYW1lXTsKKyAgICAgICAgICAgIGlmcmFtZS5yZW1vdmUo
KTsKKworICAgICAgICAgICAgbGV0IGRiOworICAgICAgICAgICAgY29uc3Qgb3Blbl9ycSA9IGNy
ZWF0ZWRiKHQpOworICAgICAgICAgICAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSB0LnN0ZXBf
ZnVuYyhlID0+IHsKKyAgICAgICAgICAgICAgICBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAg
ICAgICAgICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9y
ZSIpOworICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFkZChWQUxVRV9FWElTVElOR19MT1dF
UiwgS0VZX0VYSVNUSU5HX0xPV0VSKTsKKyAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5hZGQo
VkFMVUVfRVhJU1RJTkdfVVBQRVIsIEtFWV9FWElTVElOR19VUFBFUik7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuYygoKSA9PiB7
CisgICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigic3Rv
cmUiLCAicmVhZHdyaXRlIikub2JqZWN0U3RvcmUoInN0b3JlIik7CisgICAgICAgICAgICAgICAg
Y29uc3QgcnEgPSBtZXRob2QuY2FsbChvYmplY3RTdG9yZSwgLi4udGVzdENhc2UuYXJndW1lbnRz
KTsKKyAgICAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuYyhlID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdENhc2UudmFsaWRhdGVSZXN1bHQodCwgZSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CisgICAgfSwgYENyb3NzLXJlYWxtIElEQk9iamVjdFN0
b3JlOjoke3Rlc3RDYXNlLm1ldGhvZE5hbWV9KCkgbWV0aG9kIGZyb20gZGV0YWNoZWQgPGlmcmFt
ZT4gd29ya3MgYXMgZXhwZWN0ZWRgKTsKK30KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>