<?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>189605</bug_id>
          
          <creation_ts>2018-09-13 16:41:13 -0700</creation_ts>
          <short_desc>REGRESSION (r235954): Fix build failure on watchOS</short_desc>
          <delta_ts>2018-09-14 09:39:59 -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>WebKit Misc.</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189415</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1459575</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-13 16:41:13 -0700</bug_when>
    <thetext>Fix build failure on watchOS:

    error: reference to &apos;KeyType&apos; is ambiguous

A header in IMFoundation.framework and `using WebCore::IndexedDB::KeyType` in Source/WebCore/Modules/indexeddb/IDBKey.h are conflicting with unified source files.

Note that r235954 was rolled out in r235995, so this isn&apos;t needed until r235954 is relanded:

    https://trac.webkit.org/changeset/235995/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459579</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-13 16:43:14 -0700</bug_when>
    <thetext>I have a fix.  Sorry I didn&apos;t get it prepped in time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459581</commentid>
    <comment_count>2</comment_count>
      <attachid>349714</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-13 16:45:20 -0700</bug_when>
    <thetext>Created attachment 349714
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459633</commentid>
    <comment_count>3</comment_count>
      <attachid>349725</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-13 19:28:59 -0700</bug_when>
    <thetext>Created attachment 349725
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459680</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2018-09-14 00:33:21 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; Created attachment 349725 [details]
&gt; Patch v2

Thanks for doing this! Do you think I should merge it into r235954, or you commit this before my resubmitting r235954?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459722</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-09-14 05:13:01 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #4)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; &gt; Created attachment 349725 [details]
&gt; &gt; Patch v2
&gt; 
&gt; Thanks for doing this! Do you think I should merge it into r235954, or you
&gt; commit this before my resubmitting r235954?

I would commit it separately.  Makes it easier to roll-in/roll-out r235954 just in case there&apos;s another build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459740</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2018-09-14 08:22:33 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; (In reply to Sihui Liu from comment #4)
&gt; &gt; (In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; &gt; &gt; Created attachment 349725 [details]
&gt; &gt; &gt; Patch v2
&gt; &gt; 
&gt; &gt; Thanks for doing this! Do you think I should merge it into r235954, or you
&gt; &gt; commit this before my resubmitting r235954?
&gt; 
&gt; I would commit it separately.  Makes it easier to roll-in/roll-out r235954
&gt; just in case there&apos;s another build failure.

Great! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459749</commentid>
    <comment_count>7</comment_count>
      <attachid>349725</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-09-14 09:11:50 -0700</bug_when>
    <thetext>Comment on attachment 349725
Patch v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459758</commentid>
    <comment_count>8</comment_count>
      <attachid>349725</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-14 09:38:26 -0700</bug_when>
    <thetext>Comment on attachment 349725
Patch v2

Clearing flags on attachment: 349725

Committed r236007: &lt;https://trac.webkit.org/changeset/236007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459759</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-14 09:38:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459760</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-14 09:39:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/44459094&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349714</attachid>
            <date>2018-09-13 16:45:20 -0700</date>
            <delta_ts>2018-09-13 19:28:58 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-189605-20180913164519.patch</filename>
            <type>text/plain</type>
            <size>31716</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgzMjBjNGJjYmQxODc0
N2QxNDVlYzE3MjQyMTYzYzI3YjExYTJiMy4uMzVmYjYxNzY4MGU1Zjk5M2YzMTk3NmNmNzAwMzYw
YmU4YzBhNTQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE4LTA5LTEzICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIz
NTk1NCk6IEZpeCBidWlsZCBmYWlsdXJlIG9uIHdhdGNoT1MKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE4OTYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgYHVzaW5nIFdlYkNvcmU6OkluZGV4ZWREQjo6S2V5VHlwZTtgIGZy
b20KKyAgICAgICAgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmggYW5k
IGZpeCBhbGwgdGhlCisgICAgICAgIHJlc3VsdGluZyBidWlsZCBmYWlsdXJlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJL
ZXk6OklEQktleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmlzVmFsaWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojpjb21wYXJlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRl
TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXk6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
OjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OnN0cmluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmRhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5OjpudW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpiaW5h
cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojpjb21wYXJlVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5OjpJREJLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjptYXliZUNyZWF0ZUlEQktleSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpj
b21wYXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6c2V0QXJyYXlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpzZXRCaW5hcnlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXlEYXRhOjpzZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlEYXRhOjpzZXREYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0
YTo6c2V0TnVtYmVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6aXNWYWxp
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpvcGVyYXRvcj09IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXlEYXRhOjpJREJLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eURhdGE6Om1pbmltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWF4aW11bSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleURhdGE6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
RGF0YTo6c3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bnVtYmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmJpbmFyeSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlEYXRhOjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlE
YXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlMpOgorCiAyMDE4LTA5LTEzICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXSBkZWNy
eXB0LWtleS1uZWVkZWQgbWVzc2FnZSByZW5hbWVkIHRvIGRybS1jZG0taW5zdGFuY2UtbmVlZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAppbmRleCBjYmQ1
MzFjYmIyYWZmMmZhOThmOTE2NzkwMDZjOWExNzhiYjUyYzQ1Li4yYTk4NDk5YzJjZmE4YWYyYzU5
ZDYyMjVhNjBiZDU4Y2NiZTJhM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUmVmPElEQktleT4gSURCS2V5OjpjcmVh
dGVCaW5hcnkoSlNDOjpKU0FycmF5QnVmZmVyVmlldyYgYXJyYXlCdWZmZXJWaWV3KQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElEQktleShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weURhdGEo
YnVmZmVyVmlldy0+ZGF0YSgpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKLUlE
QktleTo6SURCS2V5KEtleVR5cGUgdHlwZSwgZG91YmxlIG51bWJlcikKK0lEQktleTo6SURCS2V5
KEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlLCBkb3VibGUgbnVtYmVyKQogICAgIDogbV90eXBlKHR5
cGUpCiAgICAgLCBtX3ZhbHVlKG51bWJlcikKICAgICAsIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFk
U2l6ZSArIHNpemVvZihkb3VibGUpKQpAQCAtNjMsMjEgKzYzLDIxIEBAIElEQktleTo6SURCS2V5
KEtleVR5cGUgdHlwZSwgZG91YmxlIG51bWJlcikKIH0KIAogSURCS2V5OjpJREJLZXkoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKLSAgICA6IG1fdHlwZShLZXlUeXBlOjpTdHJpbmcpCisgICAgOiBtX3R5
cGUoSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmcpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAg
ICwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgdmFsdWUubGVuZ3RoKCkgKiBzaXplb2Yo
VUNoYXIpKQogewogfQogCiBJREJLZXk6OklEQktleShjb25zdCBJREJLZXlWZWN0b3ImIGtleUFy
cmF5LCBzaXplX3QgYXJyYXlTaXplKQotICAgIDogbV90eXBlKEtleVR5cGU6OkFycmF5KQorICAg
IDogbV90eXBlKEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpCiAgICAgLCBtX3ZhbHVlKGtleUFy
cmF5KQogICAgICwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgYXJyYXlTaXplKQogewog
fQogCiBJREJLZXk6OklEQktleShjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgYnVmZmVyKQot
ICAgIDogbV90eXBlKEtleVR5cGU6OkJpbmFyeSkKKyAgICA6IG1fdHlwZShJbmRleGVkREI6Oktl
eVR5cGU6OkJpbmFyeSkKICAgICAsIG1fdmFsdWUoYnVmZmVyKQogICAgICwgbV9zaXplRXN0aW1h
dGUoT3ZlcmhlYWRTaXplICsgYnVmZmVyLnNpemUoKSkKIHsKQEAgLTg3LDEwICs4NywxMCBAQCBJ
REJLZXk6On5JREJLZXkoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgSURCS2V5Ojppc1ZhbGlkKCkgY29u
c3QKIHsKLSAgICBpZiAobV90eXBlID09IEtleVR5cGU6OkludmFsaWQpCisgICAgaWYgKG1fdHlw
ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChtX3R5cGUgPT0gS2V5VHlwZTo6QXJyYXkpIHsKKyAgICBpZiAobV90eXBlID09
IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpIHsKICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBX
VEY6OmdldDxJREJLZXlWZWN0b3I+KG1fdmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoIWtleS0+
aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNiw3ICsxMDYs
NyBAQCBpbnQgSURCS2V5Ojpjb21wYXJlKGNvbnN0IElEQktleSYgb3RoZXIpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBtX3R5cGUgPiBvdGhlci5tX3R5cGUgPyAtMSA6IDE7CiAKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6IHsKKyAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxJREJL
ZXlWZWN0b3I+KG1fdmFsdWUpOwogICAgICAgICBhdXRvJiBvdGhlckFycmF5ID0gV1RGOjpnZXQ8
SURCS2V5VmVjdG9yPihvdGhlci5tX3ZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcnJheS5zaXplKCkgJiYgaSA8IG90aGVyQXJyYXkuc2l6ZSgpOyArK2kpIHsKQEAgLTEx
OSwxOSArMTE5LDE5IEBAIGludCBJREJLZXk6OmNvbXBhcmUoY29uc3QgSURCS2V5JiBvdGhlcikg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0g
ICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJp
bmFyeToKICAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlEYXRhKFdURjo6Z2V0PFRocmVh
ZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+
KG90aGVyLm1fdmFsdWUpKTsKLSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICByZXR1cm4gLWNvZGVQb2ludENvbXBh
cmUoV1RGOjpnZXQ8U3RyaW5nPihvdGhlci5tX3ZhbHVlKSwgV1RGOjpnZXQ8U3RyaW5nPihtX3Zh
bHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgotICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVy
OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok51bWJlcjogewogICAgICAgICBhdXRvIG51bWJlciA9IFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSk7CiAgICAgICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBXVEY6OmdldDxkb3Vi
bGU+KG90aGVyLm1fdmFsdWUpOwogICAgICAgICByZXR1cm4gKG51bWJlciA8IG90aGVyTnVtYmVy
KSA/IC0xIDogKChudW1iZXIgPiBvdGhlck51bWJlcikgPyAxIDogMCk7CiAgICAgfQotICAgIGNh
c2UgS2V5VHlwZTo6SW52YWxpZDoKLSAgICBjYXNlIEtleVR5cGU6Ok1pbjoKLSAgICBjYXNlIEtl
eVR5cGU6Ok1heDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKKyAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpNYXg6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCmluZGV4IGJj
NWVkNTAzMmFiYWFmNDZhYTE3MWUwMDI2YjM5NjAyN2VlM2NlM2YuLjhiM2NlMjNjMmY1MTBmYTgz
OGE2YWE3MGFiZjhkNzMzY2IzZGMwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleS5oCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBXZWJDb3JlOjpJbmRleGVk
REI6OktleVR5cGU7Ci0KIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNBcnJheUJ1ZmZlcjsKIGNs
YXNzIEpTQXJyYXlCdWZmZXJWaWV3OwpAQCAtNTMsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVmPElEQktleT4gY3JlYXRlTnVtYmVyKGRvdWJsZSBudW1iZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJLZXkoS2V5VHlwZTo6TnVtYmVyLCBudW1iZXIp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCS2V5KEluZGV4ZWREQjo6S2V5VHlw
ZTo6TnVtYmVyLCBudW1iZXIpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPElEQktleT4gY3Jl
YXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtNjMsNyArNjEsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUmVmPElEQktleT4gY3JlYXRlRGF0ZShkb3VibGUgZGF0ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQktleShLZXlUeXBlOjpEYXRlLCBkYXRl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQktleShJbmRleGVkREI6OktleVR5
cGU6OkRhdGUsIGRhdGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPElEQktleT4gY3JlYXRl
TXVsdGlFbnRyeUFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mIGFycmF5KQpAQCAt
MTA3LDM2ICsxMDUsMzYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgfklEQktleSgp
OwogCi0gICAgS2V5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgSW5k
ZXhlZERCOjpLZXlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5Pj4mIGFycmF5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gS2V5VHlwZTo6QXJyYXkpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6
S2V5VHlwZTo6QXJyYXkpOwogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPFJlZlB0cjxJ
REJLZXk+Pj4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpTdHJpbmcpOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nKTsKICAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgZG91
YmxlIGRhdGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBl
OjpEYXRlKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkRh
dGUpOwogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICB9CiAK
ICAgICBkb3VibGUgbnVtYmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gS2V5VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6
OktleVR5cGU6Ok51bWJlcik7CiAgICAgICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+KG1fdmFs
dWUpOwogICAgIH0KIAogICAgIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBiaW5hcnkoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpCaW5hcnkpOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5KTsKICAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKICAg
ICB9CiAKQEAgLTE0Niw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3Qgc2l6ZUVzdGlt
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zaXplRXN0aW1hdGU7IH0KIAotICAgIHN0YXRpYyBpbnQg
Y29tcGFyZVR5cGVzKEtleVR5cGUgYSwgS2V5VHlwZSBiKQorICAgIHN0YXRpYyBpbnQgY29tcGFy
ZVR5cGVzKEluZGV4ZWREQjo6S2V5VHlwZSBhLCBJbmRleGVkREI6OktleVR5cGUgYikKICAgICB7
CiAgICAgICAgIHJldHVybiBiIC0gYTsKICAgICB9CkBAIC0xNjAsMTcgKzE1OCwxNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgSURCS2V5KCkKLSAgICAgICAgOiBtX3R5cGUoS2V5VHlwZTo6
SW52YWxpZCkKKyAgICAgICAgOiBtX3R5cGUoSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkKQog
ICAgICAgICAsIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSkKICAgICB7CiAgICAgfQogCi0g
ICAgSURCS2V5KEtleVR5cGUsIGRvdWJsZSBudW1iZXIpOworICAgIElEQktleShJbmRleGVkREI6
OktleVR5cGUsIGRvdWJsZSBudW1iZXIpOwogICAgIGV4cGxpY2l0IElEQktleShjb25zdCBTdHJp
bmcmIHZhbHVlKTsKICAgICBJREJLZXkoY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiYga2V5
QXJyYXksIHNpemVfdCBhcnJheVNpemUpOwogICAgIGV4cGxpY2l0IElEQktleShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOwogCi0gICAgY29uc3QgS2V5VHlwZSBtX3R5cGU7CisgICAgY29u
c3QgSW5kZXhlZERCOjpLZXlUeXBlIG1fdHlwZTsKICAgICBWYXJpYW50PFZlY3RvcjxSZWZQdHI8
SURCS2V5Pj4sIFN0cmluZywgZG91YmxlLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4gbV92YWx1ZTsK
IAogICAgIGNvbnN0IHNpemVfdCBtX3NpemVFc3RpbWF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKaW5kZXggMmU4Y2VkYzdkOWVjMWZhYWZh
OGEzZGM0MzNlYThiNjZhNjljOTg3Yy4uNDBmZDNiMWQ4NDIwZThlYWNhZmQxZDQzOTZiOTBkNmVi
NDBkMGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSURCS2V5
RGF0YTo6SURCS2V5RGF0YShjb25zdCBJREJLZXkqIGtleSkKLSAgICA6IG1fdHlwZShLZXlUeXBl
OjpJbnZhbGlkKQorICAgIDogbV90eXBlKEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZCkKIHsK
ICAgICBpZiAoIWtleSkgewogICAgICAgICBtX2lzTnVsbCA9IHRydWU7CkBAIC00NCwyOSArNDQs
MjkgQEAgSURCS2V5RGF0YTo6SURCS2V5RGF0YShjb25zdCBJREJLZXkqIGtleSkKICAgICBtX3R5
cGUgPSBrZXktPnR5cGUoKTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBLZXlU
eXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OkFycmF5OiB7CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIG1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0
YT4oKTsKICAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+
KG1fdmFsdWUpOwogICAgICAgICBmb3IgKGF1dG8mIGtleTIgOiBrZXktPmFycmF5KCkpCiAgICAg
ICAgICAgICBhcnJheS5hcHBlbmQoSURCS2V5RGF0YShrZXkyLmdldCgpKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIEtleVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICBtX3ZhbHVlID0ga2V5LT5iaW5hcnkoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OlN0cmluZzoKICAgICAgICAgbV92YWx1ZSA9IGtleS0+c3RyaW5nKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKKyAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6RGF0ZToKICAgICAgICAgbV92YWx1ZSA9IGtleS0+ZGF0ZSgpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIEluZGV4ZWREQjo6
S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBtX3ZhbHVlID0ga2V5LT5udW1iZXIoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBLZXlUeXBlOjpNaW46
CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1heDoKKyAgICBjYXNlIEluZGV4ZWREQjo6
S2V5VHlwZTo6TWluOgogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC03Nyw5ICs3Nyw5IEBA
IFJlZlB0cjxJREJLZXk+IElEQktleURhdGE6Om1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2Ug
S2V5VHlwZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoK
ICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlSW52YWxpZCgpOwotICAgIGNhc2UgS2V5VHlw
ZTo6QXJyYXk6IHsKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBhcnJheTsKICAgICAgICAgZm9yIChhdXRvJiBrZXlE
YXRhIDogV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKSkgewogICAgICAgICAg
ICAgYXJyYXkuYXBwZW5kKGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKSk7CkBAIC04NywxNiAr
ODcsMTYgQEAgUmVmUHRyPElEQktleT4gSURCS2V5RGF0YTo6bWF5YmVDcmVhdGVJREJLZXkoKSBj
b25zdAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KGFycmF5
KTsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6OkJpbmFyeToKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlQmluYXJ5KFdU
Rjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBl
OjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKICAgICAgICAg
cmV0dXJuIElEQktleTo6Y3JlYXRlU3RyaW5nKFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSkpOwot
ICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0
ZToKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZShXVEY6OmdldDxkb3VibGU+KG1f
dmFsdWUpKTsKLSAgICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIEluZGV4ZWREQjo6
S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoV1RG
OjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpNaW46CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1heDoKKyAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTIxLDI3ICsxMjEsMjcgQEAg
dm9pZCBJREJLZXlEYXRhOjppc29sYXRlZENvcHkoY29uc3QgSURCS2V5RGF0YSYgc291cmNlLCBJ
REJLZXlEYXRhJiBkZXN0aW5hdGlvbikKICAgICBkZXN0aW5hdGlvbi5tX2lzTnVsbCA9IHNvdXJj
ZS5tX2lzTnVsbDsKIAogICAgIHN3aXRjaCAoc291cmNlLm1fdHlwZSkgewotICAgIGNhc2UgS2V5
VHlwZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKICAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6IHsKKyAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IFZl
Y3RvcjxJREJLZXlEYXRhPigpOwogICAgICAgICBhdXRvJiBkZXN0aW5hdGlvbkFycmF5ID0gV1RG
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihkZXN0aW5hdGlvbi5tX3ZhbHVlKTsKICAgICAgICAg
Zm9yIChhdXRvJiBrZXkgOiBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KHNvdXJjZS5tX3Zh
bHVlKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJyYXkuYXBwZW5kKGtleS5pc29sYXRlZENv
cHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6
CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeToKICAgICAgICAgZGVzdGluYXRp
b24ubV92YWx1ZSA9IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihzb3VyY2UubV92YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNl
IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBkZXN0aW5hdGlvbi5tX3ZhbHVl
ID0gV1RGOjpnZXQ8U3RyaW5nPihzb3VyY2UubV92YWx1ZSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEtleVR5cGU6OkRhdGU6Ci0gICAgY2FzZSBLZXlUeXBlOjpO
dW1iZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRl
eGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IFdU
Rjo6Z2V0PGRvdWJsZT4oc291cmNlLm1fdmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBLZXlUeXBlOjpNaW46CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok1heDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTcsMzEgKzE1NywzMSBAQCB2b2lkIElEQktleURh
dGE6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKCJ0eXBlIiwgbV90eXBlKTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlk
OgogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBLZXlUeXBlOjpBcnJheTogeworICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheTogewogICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6
Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSk7CiAgICAgICAgIGVuY29kZXIuZW5jb2Rl
T2JqZWN0cygiYXJyYXkiLCBhcnJheS5iZWdpbigpLCBhcnJheS5lbmQoKSwgW10oS2V5ZWRFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsKICAgICAgICAgICAgIGtleS5l
bmNvZGUoZW5jb2Rlcik7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGNhc2UgS2V5VHlwZTo6QmluYXJ5OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJp
bmFyeTogewogICAgICAgICBhdXRvKiBkYXRhID0gV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZm
ZXI+KG1fdmFsdWUpLmRhdGEoKTsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYXNCaW5h
cnkiLCAhIWRhdGEpOwogICAgICAgICBpZiAoZGF0YSkKICAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlQnl0ZXMoImJpbmFyeSIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZygic3Ry
aW5nIiwgV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEtleVR5cGU6OkRhdGU6Ci0gICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51
bWJlcjoKICAgICAgICAgZW5jb2Rlci5lbmNvZGVEb3VibGUoIm51bWJlciIsIFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6
Ci0gICAgY2FzZSBLZXlUeXBlOjpNaW46CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1h
eDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xOTcsMzggKzE5NywzOCBAQCBib29sIElEQktleURhdGE6OmRlY29kZShLZXll
ZERlY29kZXImIGRlY29kZXIsIElEQktleURhdGEmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBhdXRvIGVudW1GdW5jdGlvbiA9IFtdKGludDY0X3QgdmFsdWUpIHsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlID09IEtleVR5cGU6Ok1heAotICAgICAgICAgICAgfHwgdmFsdWUgPT0g
S2V5VHlwZTo6SW52YWxpZAotICAgICAgICAgICAgfHwgdmFsdWUgPT0gS2V5VHlwZTo6QXJyYXkK
LSAgICAgICAgICAgIHx8IHZhbHVlID09IEtleVR5cGU6OkJpbmFyeQotICAgICAgICAgICAgfHwg
dmFsdWUgPT0gS2V5VHlwZTo6U3RyaW5nCi0gICAgICAgICAgICB8fCB2YWx1ZSA9PSBLZXlUeXBl
OjpEYXRlCi0gICAgICAgICAgICB8fCB2YWx1ZSA9PSBLZXlUeXBlOjpOdW1iZXIKLSAgICAgICAg
ICAgIHx8IHZhbHVlID09IEtleVR5cGU6Ok1pbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IElu
ZGV4ZWREQjo6S2V5VHlwZTo6TWF4CisgICAgICAgICAgICB8fCB2YWx1ZSA9PSBJbmRleGVkREI6
OktleVR5cGU6OkludmFsaWQKKyAgICAgICAgICAgIHx8IHZhbHVlID09IEluZGV4ZWREQjo6S2V5
VHlwZTo6QXJyYXkKKyAgICAgICAgICAgIHx8IHZhbHVlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6
QmluYXJ5CisgICAgICAgICAgICB8fCB2YWx1ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OlN0cmlu
ZworICAgICAgICAgICAgfHwgdmFsdWUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlCisgICAg
ICAgICAgICB8fCB2YWx1ZSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcgorICAgICAgICAg
ICAgfHwgdmFsdWUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW47CiAgICAgfTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bSgidHlwZSIsIHJlc3VsdC5tX3R5cGUsIGVudW1GdW5jdGlvbikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZXN1bHQubV90eXBlID09IEtleVR5
cGU6OkludmFsaWQpCisgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBl
OjpJbnZhbGlkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyZXN1bHQubV90eXBl
ID09IEtleVR5cGU6Ok1heCkKKyAgICBpZiAocmVzdWx0Lm1fdHlwZSA9PSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmVzdWx0Lm1fdHlw
ZSA9PSBLZXlUeXBlOjpNaW4pCisgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJlc3VsdC5tX3R5
cGUgPT0gS2V5VHlwZTo6U3RyaW5nKSB7CisgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpTdHJpbmcpIHsKICAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBTdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlU3RyaW5nKCJzdHJpbmciLCBXVEY6Omdl
dDxTdHJpbmc+KHJlc3VsdC5tX3ZhbHVlKSk7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5tX3R5
cGUgPT0gS2V5VHlwZTo6TnVtYmVyIHx8IHJlc3VsdC5tX3R5cGUgPT0gS2V5VHlwZTo6RGF0ZSkg
eworICAgIGlmIChyZXN1bHQubV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyIHx8
IHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlKSB7CiAgICAgICAgIHJl
c3VsdC5tX3ZhbHVlID0gMC4wOwogICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVEb3VibGUo
Im51bWJlciIsIFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0Lm1fdmFsdWUpKTsKICAgICB9CiAKLSAg
ICBpZiAocmVzdWx0Lm1fdHlwZSA9PSBLZXlUeXBlOjpCaW5hcnkpIHsKKyAgICBpZiAocmVzdWx0
Lm1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeSkgewogICAgICAgICByZXN1bHQu
bV92YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CiAKICAgICAgICAgYm9vbCBoYXNCaW5h
cnlEYXRhOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIGJvb2wgSURCS2V5RGF0YTo6ZGVjb2RlKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgSURCS2V5RGF0YSYgcmVzdWx0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0Lm1fdHlwZSA9PSBLZXlUeXBlOjpBcnJheSk7
CisgICAgQVNTRVJUKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheSk7
CiAKICAgICBhdXRvIGFycmF5RnVuY3Rpb24gPSBbXShLZXllZERlY29kZXImIGRlY29kZXIsIElE
QktleURhdGEmIHJlc3VsdCkgewogICAgICAgICByZXR1cm4gZGVjb2RlKGRlY29kZXIsIHJlc3Vs
dCk7CkBAIC0yNTgsMTIgKzI1OCwxMiBAQCBib29sIElEQktleURhdGE6OmRlY29kZShLZXllZERl
Y29kZXImIGRlY29kZXIsIElEQktleURhdGEmIHJlc3VsdCkKIAogaW50IElEQktleURhdGE6OmNv
bXBhcmUoY29uc3QgSURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fdHlwZSA9
PSBLZXlUeXBlOjpJbnZhbGlkKSB7Ci0gICAgICAgIGlmIChvdGhlci5tX3R5cGUgIT0gS2V5VHlw
ZTo6SW52YWxpZCkKKyAgICBpZiAobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxp
ZCkgeworICAgICAgICBpZiAob3RoZXIubV90eXBlICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6SW52
YWxpZCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKG90aGVyLm1fdHlwZSA9
PSBLZXlUeXBlOjpJbnZhbGlkKQorICAgICAgICBpZiAob3RoZXIubV90eXBlID09IEluZGV4ZWRE
Qjo6S2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSBp
ZiAob3RoZXIubV90eXBlID09IEtleVR5cGU6OkludmFsaWQpCisgICAgfSBlbHNlIGlmIChvdGhl
ci5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkKQogICAgICAgICByZXR1cm4g
MTsKIAogICAgIC8vIFRoZSBJREJLZXk6Om1fdHlwZSBlbnVtIGlzIGluIHJldmVyc2Ugc29ydCBv
cmRlci4KQEAgLTI3MiwxMSArMjcyLDExIEBAIGludCBJREJLZXlEYXRhOjpjb21wYXJlKGNvbnN0
IElEQktleURhdGEmIG90aGVyKSBjb25zdAogCiAgICAgLy8gVGhlIHR5cGVzIGFyZSB0aGUgc2Ft
ZSwgc28gaGFuZGxlIGFjdHVhbCB2YWx1ZSBjb21wYXJpc29uLgogICAgIHN3aXRjaCAobV90eXBl
KSB7Ci0gICAgY2FzZSBLZXlUeXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpJbnZhbGlkOgogICAgICAgICAvLyBJbnZhbGlkIHR5cGUgc2hvdWxkIGhhdmUgYmVlbiBm
dWxseSBoYW5kbGVkIGFib3ZlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gMDsKLSAgICBjYXNlIEtleVR5cGU6OkFycmF5OiB7CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8VmVj
dG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICAgICAgYXV0byYgb3RoZXJBcnJheSA9IFdU
Rjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4ob3RoZXIubV92YWx1ZSk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpICYmIGkgPCBvdGhlckFycmF5LnNpemUoKTsg
KytpKSB7CkBAIC0yODksMTIgKzI4OSwxMiBAQCBpbnQgSURCS2V5RGF0YTo6Y29tcGFyZShjb25z
dCBJREJLZXlEYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkJpbmFyeToKICAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlL
ZXlEYXRhKFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgV1RGOjpnZXQ8
VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKLSAgICBjYXNlIEtleVR5cGU6
OlN0cmluZzoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZShXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpLCBXVEY6Omdl
dDxTdHJpbmc+KG90aGVyLm1fdmFsdWUpKTsKLSAgICBjYXNlIEtleVR5cGU6OkRhdGU6Ci0gICAg
Y2FzZSBLZXlUeXBlOjpOdW1iZXI6IHsKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0
ZToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOiB7CiAgICAgICAgIGF1dG8g
bnVtYmVyID0gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICAgICAgYXV0byBvdGhlck51
bWJlciA9IFdURjo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7CiAKQEAgLTMwMiw4ICszMDIs
OCBAQCBpbnQgSURCS2V5RGF0YTo6Y29tcGFyZShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikgY29u
c3QKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbnVtYmVyID4gb3RoZXJO
dW1iZXIgPyAxIDogLTE7CiAgICAgfQotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAgIGNhc2Ug
S2V5VHlwZTo6TWluOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6CisgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBA
IC0zMjAsOSArMzIwLDkgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25z
dAogICAgIFN0cmluZyByZXN1bHQ7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2Ug
S2V5VHlwZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoK
ICAgICAgICAgcmV0dXJuICI8aW52YWxpZD4iOwotICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6IHsK
KyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjxhcnJheT4gLSB7
ICIpOwogICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4o
bV92YWx1ZSk7CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdT
dHJpbmcoKSBjb25zdAogICAgICAgICByZXN1bHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEtleVR5cGU6OkJpbmFyeTogeworICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6IHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiPGJpbmFyeT4gLSAiKTsKIApAQCAtMzU2LDE2
ICszNTYsMTYgQEAgU3RyaW5nIElEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAg
ICAgICByZXN1bHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
U3RyaW5nOgogICAgICAgICByZXN1bHQgPSAiPHN0cmluZz4gLSAiICsgV1RGOjpnZXQ8U3RyaW5n
PihtX3ZhbHVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgorICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoIjxkYXRlPiAtICVmIiwgV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSk7Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoK
ICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCI8bnVtYmVyPiAtICVmIiwgV1RGOjpnZXQ8
ZG91YmxlPihtX3ZhbHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBJbmRl
eGVkREI6OktleVR5cGU6Ok1heDoKICAgICAgICAgcmV0dXJuICI8bWF4aW11bT4iOwotICAgIGNh
c2UgS2V5VHlwZTo6TWluOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CiAgICAg
ICAgIHJldHVybiAiPG1pbmltdW0+IjsKICAgICB9CiAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lk
IElEQktleURhdGE6OnNldEFycmF5VmFsdWUoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiB2YWx1
ZSkKIHsKICAgICAqdGhpcyA9IElEQktleURhdGEoKTsKICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0g
ICAgbV90eXBlID0gS2V5VHlwZTo6QXJyYXk7CisgICAgbV90eXBlID0gSW5kZXhlZERCOjpLZXlU
eXBlOjpBcnJheTsKICAgICBtX2lzTnVsbCA9IGZhbHNlOwogfQogCkBAIC0zOTAsNyArMzkwLDcg
QEAgdm9pZCBJREJLZXlEYXRhOjpzZXRCaW5hcnlWYWx1ZShjb25zdCBUaHJlYWRTYWZlRGF0YUJ1
ZmZlciYgdmFsdWUpCiB7CiAgICAgKnRoaXMgPSBJREJLZXlEYXRhKCk7CiAgICAgbV92YWx1ZSA9
IHZhbHVlOwotICAgIG1fdHlwZSA9IEtleVR5cGU6OkJpbmFyeTsKKyAgICBtX3R5cGUgPSBJbmRl
eGVkREI6OktleVR5cGU6OkJpbmFyeTsKICAgICBtX2lzTnVsbCA9IGZhbHNlOwogfQogCkBAIC0z
OTgsNyArMzk4LDcgQEAgdm9pZCBJREJLZXlEYXRhOjpzZXRTdHJpbmdWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogewogICAgICp0aGlzID0gSURCS2V5RGF0YSgpOwogICAgIG1fdmFsdWUgPSB2
YWx1ZTsKLSAgICBtX3R5cGUgPSBLZXlUeXBlOjpTdHJpbmc7CisgICAgbV90eXBlID0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpTdHJpbmc7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKIH0KIApAQCAtNDA2
LDcgKzQwNiw3IEBAIHZvaWQgSURCS2V5RGF0YTo6c2V0RGF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSkK
IHsKICAgICAqdGhpcyA9IElEQktleURhdGEoKTsKICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAg
bV90eXBlID0gS2V5VHlwZTo6RGF0ZTsKKyAgICBtX3R5cGUgPSBJbmRleGVkREI6OktleVR5cGU6
OkRhdGU7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKIH0KIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZv
aWQgSURCS2V5RGF0YTo6c2V0TnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlKQogewogICAgICp0aGlz
ID0gSURCS2V5RGF0YSgpOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICBtX3R5cGUgPSBLZXlU
eXBlOjpOdW1iZXI7CisgICAgbV90eXBlID0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI7CiAg
ICAgbV9pc051bGwgPSBmYWxzZTsKIH0KIApAQCAtNDI4LDEwICs0MjgsMTAgQEAgSURCS2V5RGF0
YSBJREJLZXlEYXRhOjpkZWxldGVkVmFsdWUoKQogCiBib29sIElEQktleURhdGE6OmlzVmFsaWQo
KSBjb25zdAogewotICAgIGlmIChtX3R5cGUgPT0gS2V5VHlwZTo6SW52YWxpZCkKKyAgICBpZiAo
bV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIGlmIChtX3R5cGUgPT0gS2V5VHlwZTo6QXJyYXkpIHsKKyAgICBpZiAo
bV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBrZXkgOiBhcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoIWtleS5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDUxLDE4ICs0NTEsMTggQEAgYm9vbCBJREJL
ZXlEYXRhOjpvcGVyYXRvcj09KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAogICAgIGlm
IChtX3R5cGUgIT0gb3RoZXIubV90eXBlIHx8IG1faXNOdWxsICE9IG90aGVyLm1faXNOdWxsIHx8
IG1faXNEZWxldGVkVmFsdWUgIT0gb3RoZXIubV9pc0RlbGV0ZWRWYWx1ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBLZXlUeXBlOjpJbnZh
bGlkOgotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpL
ZXlUeXBlOjpNYXg6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6Ci0gICAgY2FzZSBLZXlUeXBl
OjpEYXRlOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+
KG1fdmFsdWUpID09IFdURjo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7Ci0gICAgY2FzZSBL
ZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKICAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSkgPT0gV1RGOjpnZXQ8U3RyaW5n
PihvdGhlci5tX3ZhbHVlKTsKLSAgICBjYXNlIEtleVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8VGhyZWFk
U2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpID09IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVy
PihvdGhlci5tX3ZhbHVlKTsKLSAgICBjYXNlIEtleVR5cGU6OkFycmF5OgorICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpBcnJheToKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFZlY3RvcjxJ
REJLZXlEYXRhPj4obV92YWx1ZSkgPT0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhl
ci5tX3ZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCBhYmQ5
ZDA2ZmU5MGU4MGQyYjU3ZDljODZjOWQyOWQ0NmEwMTk5Mzg0Li40ODI3ODBmZDkyOWU0MGY0ZTU3
NDRhMTg5OWQ4NzdiMGJhYmYwYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5RGF0YS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEtleWVkRW5jb2RlcjsK
IGNsYXNzIElEQktleURhdGEgewogcHVibGljOgogICAgIElEQktleURhdGEoKQotICAgICAgICA6
IG1fdHlwZShLZXlUeXBlOjpJbnZhbGlkKQorICAgICAgICA6IG1fdHlwZShJbmRleGVkREI6Oktl
eVR5cGU6OkludmFsaWQpCiAgICAgICAgICwgbV9pc051bGwodHJ1ZSkKICAgICB7CiAgICAgfQpA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQktleURhdGEgbWluaW11bSgp
CiAgICAgewogICAgICAgICBJREJLZXlEYXRhIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdHlw
ZSA9IEtleVR5cGU6Ok1pbjsKKyAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IEluZGV4ZWREQjo6S2V5
VHlwZTo6TWluOwogICAgICAgICByZXN1bHQubV9pc051bGwgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SURCS2V5RGF0YSBtYXhpbXVtKCkKICAgICB7CiAgICAgICAgIElEQktleURhdGEgcmVzdWx0Owot
ICAgICAgICByZXN1bHQubV90eXBlID0gS2V5VHlwZTo6TWF4OworICAgICAgICByZXN1bHQubV90
eXBlID0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg7CiAgICAgICAgIHJlc3VsdC5tX2lzTnVsbCA9
IGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk0LDcgKzk0LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotICAgIEtleVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorICAgIEluZGV4ZWREQjo6S2V5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAKICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJREJLZXlEYXRhJikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgSURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0CkBA
IC0xMjUsMTggKzEyNSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQobV9p
c051bGwgPyAxIDogMCk7CiAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQobV9pc0RlbGV0ZWRWYWx1
ZSA/IDEgOiAwKTsKICAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBLZXlU
eXBlOjpJbnZhbGlkOgotICAgICAgICBjYXNlIEtleVR5cGU6Ok1heDoKLSAgICAgICAgY2FzZSBL
ZXlUeXBlOjpNaW46CisgICAgICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgor
ICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgorICAgICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgS2V5
VHlwZTo6TnVtYmVyOgotICAgICAgICBjYXNlIEtleVR5cGU6OkRhdGU6CisgICAgICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CisgICAgICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpEYXRlOgogICAgICAgICAgICAgaGFzaENvZGVzLmFwcGVuZChTdHJpbmdIYXNoZXI6Omhh
c2hNZW1vcnk8c2l6ZW9mKGRvdWJsZSk+KCZXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgICAgICBoYXNoQ29kZXMu
YXBwZW5kKFN0cmluZ0hhc2g6Omhhc2goV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSkpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgS2V5VHlwZTo6QmluYXJ5OiB7CisgICAgICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6IHsKICAgICAgICAgICAgIGF1dG8qIGRh
dGEgPSBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0YSgpOwogICAg
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQoMCk7
CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGhhc2hDb2Rlcy5h
cHBlbmQoU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIEtleVR5cGU6
OkFycmF5OgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIGtleSA6IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1
ZSkpCiAgICAgICAgICAgICAgICAgaGFzaENvZGVzLmFwcGVuZChrZXkuaGFzaCgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTU4LDM4ICsxNTgsMzggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IHN0cmluZygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6
OlN0cmluZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpT
dHJpbmcpOwogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKTsKICAgICB9
CiAKICAgICBkb3VibGUgZGF0ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEtleVR5cGU6OkRhdGUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6
S2V5VHlwZTo6RGF0ZSk7CiAgICAgICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUp
OwogICAgIH0KIAogICAgIGRvdWJsZSBudW1iZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpOdW1iZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09
IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKTsKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IGJpbmFyeSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6
OkJpbmFyeSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpC
aW5hcnkpOwogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1f
dmFsdWUpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYgYXJyYXkoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpBcnJheSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheSk7CiAgICAg
ICAgIHJldHVybiBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOwogICAgIH0K
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBpc29sYXRlZENvcHkoY29uc3QgSURCS2V5RGF0
YSYgc291cmNlLCBJREJLZXlEYXRhJiBkZXN0aW5hdGlvbik7CiAKLSAgICBLZXlUeXBlIG1fdHlw
ZTsKKyAgICBJbmRleGVkREI6OktleVR5cGUgbV90eXBlOwogICAgIFZhcmlhbnQ8VmVjdG9yPElE
QktleURhdGE+LCBTdHJpbmcsIGRvdWJsZSwgVGhyZWFkU2FmZURhdGFCdWZmZXI+IG1fdmFsdWU7
CiAKICAgICBib29sIG1faXNOdWxsIHsgZmFsc2UgfTsKQEAgLTIzOCwyMSArMjM4LDIxIEBAIHZv
aWQgSURCS2V5RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2Ug
S2V5VHlwZTo6SW52YWxpZDoKLSAgICBjYXNlIEtleVR5cGU6Ok1heDoKLSAgICBjYXNlIEtleVR5
cGU6Ok1pbjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKKyAgICBjYXNl
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpN
aW46CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkFycmF5OgogICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFZl
Y3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5
VHlwZTo6QmluYXJ5OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6CiAgICAg
ICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFN0cmlu
Zz4obV92YWx1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKLSAg
ICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0
ZToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBlbmNvZGVy
IDw8IFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTI3MiwyNyArMjcyLDI3IEBAIHN0ZDo6b3B0aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzd2l0Y2ggKGtleURhdGEubV90eXBlKSB7Ci0gICAgY2FzZSBLZXlUeXBlOjpJbnZhbGlk
OgotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAgIGNh
c2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpNYXg6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBLZXlUeXBlOjpBcnJheToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6QXJyYXk6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IFZlY3RvcjxJREJLZXlEYXRhPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRh
Pj4oa2V5RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PFRo
cmVhZFNhZmVEYXRhQnVmZmVyPihrZXlEYXRhLm1fdmFsdWUpKSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5n
OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIGtleURhdGEu
bV92YWx1ZSA9IFN0cmluZygpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0
PFN0cmluZz4oa2V5RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OkRhdGU6Ci0gICAgY2FzZSBL
ZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAg
Y2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAga2V5RGF0YS5tX3ZhbHVl
ID0gMC4wOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PGRvdWJsZT4oa2V5
RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRl
eCA3ZGRhMWZhNjYyZTRkODU0NTU2NDYwYzE5ZTYxNWEzYjAyYjlhMmM0Li4yYTk4MGZhMDkyMTkz
ODZhNTc3YmE3N2NiMTg3ZTM0MmFmODUyN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SURCS2V5KiBrZXkpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgc3dpdGNoIChrZXktPnR5cGUoKSkgewotICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6IHsK
KyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgaW5B
cnJheSA9IGtleS0+YXJyYXkoKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGluQXJyYXkuc2l6
ZSgpOwogICAgICAgICBhdXRvIG91dEFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheSgmc3RhdGUs
IDAsICZnbG9iYWxPYmplY3QsIHNpemUpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEpTVmFsdWUgdG9K
UyhFeGVjU3RhdGUmIHN0YXRlLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBJREJLZXkq
IGtleSkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gb3V0QXJyYXk7CiAgICAgfQotICAgIGNh
c2UgS2V5VHlwZTo6QmluYXJ5OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFy
eTogewogICAgICAgICBhdXRvKiBkYXRhID0ga2V5LT5iaW5hcnkoKS5kYXRhKCk7CiAgICAgICAg
IGlmICghZGF0YSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjEs
MTcgKzEyMSwxNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSURCS2V5KiBrZXkpCiAKICAgICAgICAgcmV0dXJuIEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYXJyYXlCdWZmZXIp
KTsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6OlN0cmluZzoKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0
ZSwga2V5LT5zdHJpbmcoKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgorICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgYmUgdG9KUzxJRExEYXRlPiguLi4pIGFzIHBlcjoKICAgICAgICAgLy8gaHR0cDovL3cz
Yy5naXRodWIuaW8vSW5kZXhlZERCLyNyZXF1ZXN0LWNvbnZlcnQtYS1rZXktdG8tYS12YWx1ZQog
ICAgICAgICByZXR1cm4gdG9KUzxJRExOdWxsYWJsZTxJRExEYXRlPj4oc3RhdGUsIGtleS0+ZGF0
ZSgpKTsKLSAgICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4ganNOdW1iZXIoa2V5LT5udW1iZXIoKSk7Ci0g
ICAgY2FzZSBLZXlUeXBlOjpNaW46Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBL
ZXlUeXBlOjpJbnZhbGlkOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CisgICAg
Y2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1heDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6SW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349725</attachid>
            <date>2018-09-13 19:28:59 -0700</date>
            <delta_ts>2018-09-14 09:38:26 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-189605-20180913192859.patch</filename>
            <type>text/plain</type>
            <size>32723</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgzMjBjNGJjYmQxODc0
N2QxNDVlYzE3MjQyMTYzYzI3YjExYTJiMy4uZGIxOGY0NmQ4ODNmMzFhNjZjYWMxOWI4ZGJlMDc2
NWNmMzYwOWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA5LTEzICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIz
NTk1NCk6IEZpeCBidWlsZCBmYWlsdXJlIG9uIHdhdGNoT1MKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE4OTYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgYHVzaW5nIFdlYkNvcmU6OkluZGV4ZWREQjo6S2V5VHlwZTtgIGZy
b20KKyAgICAgICAgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmggYW5k
IGZpeCBhbGwgdGhlCisgICAgICAgIHJlc3VsdGluZyBidWlsZCBmYWlsdXJlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJL
ZXk6OklEQktleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmlzVmFsaWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojpjb21wYXJlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRl
TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXk6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
OjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OnN0cmluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmRhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5OjpudW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpiaW5h
cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojpjb21wYXJlVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5OjpJREJLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjptYXliZUNyZWF0ZUlEQktleSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRlZENvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpj
b21wYXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6c2V0QXJyYXlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpzZXRCaW5hcnlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJLZXlEYXRhOjpzZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlEYXRhOjpzZXREYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0
YTo6c2V0TnVtYmVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6aXNWYWxp
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpvcGVyYXRvcj09IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXlEYXRhOjpJREJLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eURhdGE6Om1pbmltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWF4aW11bSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleURhdGE6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
RGF0YTo6c3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bnVtYmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmJpbmFyeSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlEYXRhOjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlE
YXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KwogMjAxOC0wOS0xMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV0gZGVjcnlwdC1rZXktbmVlZGVkIG1lc3Nh
Z2UgcmVuYW1lZCB0byBkcm0tY2RtLWluc3RhbmNlLW5lZWRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKaW5kZXggY2JkNTMxY2JiMmFmZjJmYTk4ZjkxNjc5
MDA2YzlhMTc4YmI1MmM0NS4uMmE5ODQ5OWMyY2ZhOGFmMmM1OWQ2MjI1YTYwYmQ1OGNjYmUyYTNm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFJlZjxJREJLZXk+IElEQktleTo6Y3JlYXRlQmluYXJ5KEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXcmIGFycmF5QnVmZmVyVmlldykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
REJLZXkoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlEYXRhKGJ1ZmZlclZpZXctPmRhdGEoKSwg
YnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSkpOwogfQogCi1JREJLZXk6OklEQktleShLZXlUeXBl
IHR5cGUsIGRvdWJsZSBudW1iZXIpCitJREJLZXk6OklEQktleShJbmRleGVkREI6OktleVR5cGUg
dHlwZSwgZG91YmxlIG51bWJlcikKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV92YWx1ZShu
dW1iZXIpCiAgICAgLCBtX3NpemVFc3RpbWF0ZShPdmVyaGVhZFNpemUgKyBzaXplb2YoZG91Ymxl
KSkKQEAgLTYzLDIxICs2MywyMSBAQCBJREJLZXk6OklEQktleShLZXlUeXBlIHR5cGUsIGRvdWJs
ZSBudW1iZXIpCiB9CiAKIElEQktleTo6SURCS2V5KGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAg
OiBtX3R5cGUoS2V5VHlwZTo6U3RyaW5nKQorICAgIDogbV90eXBlKEluZGV4ZWREQjo6S2V5VHlw
ZTo6U3RyaW5nKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fc2l6ZUVzdGltYXRlKE92
ZXJoZWFkU2l6ZSArIHZhbHVlLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSkKIHsKIH0KIAogSURC
S2V5OjpJREJLZXkoY29uc3QgSURCS2V5VmVjdG9yJiBrZXlBcnJheSwgc2l6ZV90IGFycmF5U2l6
ZSkKLSAgICA6IG1fdHlwZShLZXlUeXBlOjpBcnJheSkKKyAgICA6IG1fdHlwZShJbmRleGVkREI6
OktleVR5cGU6OkFycmF5KQogICAgICwgbV92YWx1ZShrZXlBcnJheSkKICAgICAsIG1fc2l6ZUVz
dGltYXRlKE92ZXJoZWFkU2l6ZSArIGFycmF5U2l6ZSkKIHsKIH0KIAogSURCS2V5OjpJREJLZXko
Y29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIGJ1ZmZlcikKLSAgICA6IG1fdHlwZShLZXlUeXBl
OjpCaW5hcnkpCisgICAgOiBtX3R5cGUoSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnkpCiAgICAg
LCBtX3ZhbHVlKGJ1ZmZlcikKICAgICAsIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSArIGJ1
ZmZlci5zaXplKCkpCiB7CkBAIC04NywxMCArODcsMTAgQEAgSURCS2V5Ojp+SURCS2V5KCkgPSBk
ZWZhdWx0OwogCiBib29sIElEQktleTo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fdHlw
ZSA9PSBLZXlUeXBlOjpJbnZhbGlkKQorICAgIGlmIChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlU
eXBlOjpJbnZhbGlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV90eXBlID09
IEtleVR5cGU6OkFycmF5KSB7CisgICAgaWYgKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6
OkFycmF5KSB7CiAgICAgICAgIGZvciAoYXV0byYga2V5IDogV1RGOjpnZXQ8SURCS2V5VmVjdG9y
PihtX3ZhbHVlKSkgewogICAgICAgICAgICAgaWYgKCFrZXktPmlzVmFsaWQoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDYsNyArMTA2LDcgQEAgaW50IElEQktleTo6Y29t
cGFyZShjb25zdCBJREJLZXkmIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4gbV90eXBlID4g
b3RoZXIubV90eXBlID8gLTEgOiAxOwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNl
IEtleVR5cGU6OkFycmF5OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7
CiAgICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8SURCS2V5VmVjdG9yPihtX3ZhbHVlKTsK
ICAgICAgICAgYXV0byYgb3RoZXJBcnJheSA9IFdURjo6Z2V0PElEQktleVZlY3Rvcj4ob3RoZXIu
bV92YWx1ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpICYm
IGkgPCBvdGhlckFycmF5LnNpemUoKTsgKytpKSB7CkBAIC0xMTksMTkgKzExOSwxOSBAQCBpbnQg
SURCS2V5Ojpjb21wYXJlKGNvbnN0IElEQktleSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICBy
ZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGNhc2UgS2V5VHlwZTo6Qmlu
YXJ5OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6CiAgICAgICAgIHJldHVy
biBjb21wYXJlQmluYXJ5S2V5RGF0YShXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92
YWx1ZSksIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihvdGhlci5tX3ZhbHVlKSk7Ci0g
ICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0
cmluZzoKICAgICAgICAgcmV0dXJuIC1jb2RlUG9pbnRDb21wYXJlKFdURjo6Z2V0PFN0cmluZz4o
b3RoZXIubV92YWx1ZSksIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSkpOwotICAgIGNhc2UgS2V5
VHlwZTo6RGF0ZToKLSAgICBjYXNlIEtleVR5cGU6Ok51bWJlcjogeworICAgIGNhc2UgSW5kZXhl
ZERCOjpLZXlUeXBlOjpEYXRlOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6
IHsKICAgICAgICAgYXV0byBudW1iZXIgPSBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpOwogICAg
ICAgICBhdXRvIG90aGVyTnVtYmVyID0gV1RGOjpnZXQ8ZG91YmxlPihvdGhlci5tX3ZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIChudW1iZXIgPCBvdGhlck51bWJlcikgPyAtMSA6ICgobnVtYmVyID4g
b3RoZXJOdW1iZXIpID8gMSA6IDApOwogICAgIH0KLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6
Ci0gICAgY2FzZSBLZXlUeXBlOjpNaW46Ci0gICAgY2FzZSBLZXlUeXBlOjpNYXg6CisgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQ6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAppbmRleCBiYzVlZDUwMzJhYmFhZjQ2YWExNzFl
MDAyNmIzOTYwMjdlZTNjZTNmLi44YjNjZTIzYzJmNTEwZmE4MzhhNmFhNzBhYmY4ZDczM2NiM2Rj
MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaApAQCAtMzUs
OCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotdXNpbmcgV2ViQ29yZTo6SW5kZXhlZERCOjpLZXlUeXBlOwotCiBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpTQXJyYXlCdWZmZXI7CiBjbGFzcyBKU0FycmF5QnVmZmVyVmll
dzsKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxJREJLZXk+IGNy
ZWF0ZU51bWJlcihkb3VibGUgbnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSURCS2V5KEtleVR5cGU6Ok51bWJlciwgbnVtYmVyKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElEQktleShJbmRleGVkREI6OktleVR5cGU6Ok51bWJlciwgbnVtYmVyKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKQEAgLTYzLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxJ
REJLZXk+IGNyZWF0ZURhdGUoZG91YmxlIGRhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJLZXkoS2V5VHlwZTo6RGF0ZSwgZGF0ZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJREJLZXkoSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlLCBkYXRlKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZU11bHRpRW50cnlBcnJheShjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4+JiBhcnJheSkKQEAgLTEwNywzNiArMTA1LDM2IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5JREJLZXkoKTsKIAotICAgIEtleVR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIEluZGV4ZWREQjo6S2V5VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Zh
bGlkKCkgY29uc3Q7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4+JiBhcnJheSgp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6OkFycmF5KTsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5KTsKICAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4+KG1fdmFsdWUpOwog
ICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6U3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZyk7CiAgICAgICAgIHJldHVybiBXVEY6Omdl
dDxTdHJpbmc+KG1fdmFsdWUpOwogICAgIH0KIAogICAgIGRvdWJsZSBkYXRlKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6RGF0ZSk7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlKTsKICAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgZG91YmxlIG51bWJlcigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6Ok51bWJlcik7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpOwog
ICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBj
b25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgYmluYXJ5KCkgY29uc3QKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6QmluYXJ5KTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeSk7CiAgICAgICAgIHJldHVybiBXVEY6Omdl
dDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNDYsNyArMTQ0
LDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IHNpemVFc3RpbWF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZUVzdGltYXRlOyB9CiAKLSAgICBzdGF0aWMgaW50IGNvbXBhcmVUeXBlcyhLZXlUeXBl
IGEsIEtleVR5cGUgYikKKyAgICBzdGF0aWMgaW50IGNvbXBhcmVUeXBlcyhJbmRleGVkREI6Oktl
eVR5cGUgYSwgSW5kZXhlZERCOjpLZXlUeXBlIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYiAt
IGE7CiAgICAgfQpAQCAtMTYwLDE3ICsxNTgsMTcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IElEQktleSgpCi0gICAgICAgIDogbV90eXBlKEtleVR5cGU6OkludmFsaWQpCisgICAgICAgIDog
bV90eXBlKEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgLCBtX3NpemVFc3Rp
bWF0ZShPdmVyaGVhZFNpemUpCiAgICAgewogICAgIH0KIAotICAgIElEQktleShLZXlUeXBlLCBk
b3VibGUgbnVtYmVyKTsKKyAgICBJREJLZXkoSW5kZXhlZERCOjpLZXlUeXBlLCBkb3VibGUgbnVt
YmVyKTsKICAgICBleHBsaWNpdCBJREJLZXkoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgSURC
S2V5KGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mIGtleUFycmF5LCBzaXplX3QgYXJyYXlT
aXplKTsKICAgICBleHBsaWNpdCBJREJLZXkoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImKTsK
IAotICAgIGNvbnN0IEtleVR5cGUgbV90eXBlOworICAgIGNvbnN0IEluZGV4ZWREQjo6S2V5VHlw
ZSBtX3R5cGU7CiAgICAgVmFyaWFudDxWZWN0b3I8UmVmUHRyPElEQktleT4+LCBTdHJpbmcsIGRv
dWJsZSwgVGhyZWFkU2FmZURhdGFCdWZmZXI+IG1fdmFsdWU7CiAKICAgICBjb25zdCBzaXplX3Qg
bV9zaXplRXN0aW1hdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleURhdGEuY3BwCmluZGV4IDJlOGNlZGM3ZDllYzFmYWFmYThhM2RjNDMzZWE4YjY2YTY5Yzk4
N2MuLjQwZmQzYjFkODQyMGU4ZWFjYWZkMWQ0Mzk2YjkwZDZlYjQwZDBhMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQktleURhdGE6OklEQktleURhdGEoY29u
c3QgSURCS2V5KiBrZXkpCi0gICAgOiBtX3R5cGUoS2V5VHlwZTo6SW52YWxpZCkKKyAgICA6IG1f
dHlwZShJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQpCiB7CiAgICAgaWYgKCFrZXkpIHsKICAg
ICAgICAgbV9pc051bGwgPSB0cnVlOwpAQCAtNDQsMjkgKzQ0LDI5IEBAIElEQktleURhdGE6OklE
QktleURhdGEoY29uc3QgSURCS2V5KiBrZXkpCiAgICAgbV90eXBlID0ga2V5LT50eXBlKCk7CiAK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKKyAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpBcnJheTogeworICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheTog
ewogICAgICAgICBtX3ZhbHVlID0gVmVjdG9yPElEQktleURhdGE+KCk7CiAgICAgICAgIGF1dG8m
IGFycmF5ID0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICAgICAg
Zm9yIChhdXRvJiBrZXkyIDoga2V5LT5hcnJheSgpKQogICAgICAgICAgICAgYXJyYXkuYXBwZW5k
KElEQktleURhdGEoa2V5Mi5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeToK
ICAgICAgICAgbV92YWx1ZSA9IGtleS0+YmluYXJ5KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgS2V5VHlwZTo6U3RyaW5nOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6
CiAgICAgICAgIG1fdmFsdWUgPSBrZXktPnN0cmluZygpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEtleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAg
ICAgICAgIG1fdmFsdWUgPSBrZXktPmRhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBL
ZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAg
ICAgICAgbV92YWx1ZSA9IGtleS0+bnVtYmVyKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
S2V5VHlwZTo6TWF4OgotICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpAQCAtNzcsOSArNzcsOSBAQCBSZWZQdHI8SURCS2V5PiBJREJL
ZXlEYXRhOjptYXliZUNyZWF0ZUlEQktleSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6Cisg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIHJldHVybiBJREJL
ZXk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICBjYXNlIEtleVR5cGU6OkFycmF5OiB7CisgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SURC
S2V5Pj4gYXJyYXk7CiAgICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IFdURjo6Z2V0PFZlY3Rv
cjxJREJLZXlEYXRhPj4obV92YWx1ZSkpIHsKICAgICAgICAgICAgIGFycmF5LmFwcGVuZChrZXlE
YXRhLm1heWJlQ3JlYXRlSURCS2V5KCkpOwpAQCAtODcsMTYgKzg3LDE2IEBAIFJlZlB0cjxJREJL
ZXk+IElEQktleURhdGE6Om1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3QKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShhcnJheSk7CiAgICAgfQotICAgIGNhc2Ug
S2V5VHlwZTo6QmluYXJ5OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6CiAg
ICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUJpbmFyeShXVEY6OmdldDxUaHJlYWRTYWZlRGF0
YUJ1ZmZlcj4obV92YWx1ZSkpOwotICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgorICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0
ZVN0cmluZyhXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpKTsKLSAgICBjYXNlIEtleVR5cGU6OkRh
dGU6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZURhdGUoV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSk7Ci0gICAgY2FzZSBL
ZXlUeXBlOjpOdW1iZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAg
ICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKFdURjo6Z2V0PGRvdWJsZT4obV92YWx1
ZSkpOwotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTEyMSwyNyArMTIxLDI3IEBAIHZvaWQgSURCS2V5RGF0YTo6aXNv
bGF0ZWRDb3B5KGNvbnN0IElEQktleURhdGEmIHNvdXJjZSwgSURCS2V5RGF0YSYgZGVzdGluYXRp
b24pCiAgICAgZGVzdGluYXRpb24ubV9pc051bGwgPSBzb3VyY2UubV9pc051bGw7CiAKICAgICBz
d2l0Y2ggKHNvdXJjZS5tX3R5cGUpIHsKLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6CisgICAg
Y2FzZSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEtleVR5cGU6OkFycmF5OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5
OiB7CiAgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsK
ICAgICAgICAgYXV0byYgZGVzdGluYXRpb25BcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlE
YXRhPj4oZGVzdGluYXRpb24ubV92YWx1ZSk7CiAgICAgICAgIGZvciAoYXV0byYga2V5IDogV1RG
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+Pihzb3VyY2UubV92YWx1ZSkpCiAgICAgICAgICAgICBk
ZXN0aW5hdGlvbkFycmF5LmFwcGVuZChrZXkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2UgS2V5VHlwZTo6QmluYXJ5OgorICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpCaW5hcnk6CiAgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBXVEY6Omdl
dDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4oc291cmNlLm1fdmFsdWUpOwogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6
OlN0cmluZzoKICAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IFdURjo6Z2V0PFN0cmluZz4o
c291cmNlLm1fdmFsdWUpLmlzb2xhdGVkQ29weSgpOwogICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpEYXRlOgotICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpEYXRlOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1i
ZXI6CiAgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KHNvdXJj
ZS5tX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAg
IGNhc2UgS2V5VHlwZTo6TWluOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6Cisg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTU3LDMxICsxNTcsMzEgQEAgdm9pZCBJREJLZXlEYXRhOjplbmNvZGUoS2V5ZWRFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bSgidHlwZSIsIG1fdHlw
ZSk7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoK
KyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKICAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgS2V5VHlwZTo6QXJyYXk6IHsKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0
YT4+KG1fdmFsdWUpOwogICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMoImFycmF5IiwgYXJy
YXkuYmVnaW4oKSwgYXJyYXkuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
SURCS2V5RGF0YSYga2V5KSB7CiAgICAgICAgICAgICBrZXkuZW5jb2RlKGVuY29kZXIpOwogICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEtleVR5cGU6OkJpbmFy
eTogeworICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6IHsKICAgICAgICAgYXV0
byogZGF0YSA9IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7
CiAgICAgICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFzQmluYXJ5IiwgISFkYXRhKTsKICAgICAg
ICAgaWYgKGRhdGEpCiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUJ5dGVzKCJiaW5hcnkiLCBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmlu
ZzoKICAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoInN0cmluZyIsIFdURjo6Z2V0PFN0cmlu
Zz4obV92YWx1ZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgot
ICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpE
YXRlOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGVuY29k
ZXIuZW5jb2RlRG91YmxlKCJudW1iZXIiLCBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgS2V5VHlwZTo6TWF4OgotICAgIGNhc2UgS2V5VHlwZTo6
TWluOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok1pbjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDM4ICsx
OTcsMzggQEAgYm9vbCBJREJLZXlEYXRhOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJ
REJLZXlEYXRhJiByZXN1bHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBlbnVt
RnVuY3Rpb24gPSBbXShpbnQ2NF90IHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9PSBL
ZXlUeXBlOjpNYXgKLSAgICAgICAgICAgIHx8IHZhbHVlID09IEtleVR5cGU6OkludmFsaWQKLSAg
ICAgICAgICAgIHx8IHZhbHVlID09IEtleVR5cGU6OkFycmF5Ci0gICAgICAgICAgICB8fCB2YWx1
ZSA9PSBLZXlUeXBlOjpCaW5hcnkKLSAgICAgICAgICAgIHx8IHZhbHVlID09IEtleVR5cGU6OlN0
cmluZwotICAgICAgICAgICAgfHwgdmFsdWUgPT0gS2V5VHlwZTo6RGF0ZQotICAgICAgICAgICAg
fHwgdmFsdWUgPT0gS2V5VHlwZTo6TnVtYmVyCi0gICAgICAgICAgICB8fCB2YWx1ZSA9PSBLZXlU
eXBlOjpNaW47CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok1h
eAorICAgICAgICAgICAgfHwgdmFsdWUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkCisg
ICAgICAgICAgICB8fCB2YWx1ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5CisgICAgICAg
ICAgICB8fCB2YWx1ZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeQorICAgICAgICAgICAg
fHwgdmFsdWUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmcKKyAgICAgICAgICAgIHx8IHZh
bHVlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZQorICAgICAgICAgICAgfHwgdmFsdWUgPT0g
SW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIKKyAgICAgICAgICAgIHx8IHZhbHVlID09IEluZGV4
ZWREQjo6S2V5VHlwZTo6TWluOwogICAgIH07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
InR5cGUiLCByZXN1bHQubV90eXBlLCBlbnVtRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAocmVzdWx0Lm1fdHlwZSA9PSBLZXlUeXBlOjpJbnZhbGlkKQorICAgIGlm
IChyZXN1bHQubV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmVzdWx0Lm1fdHlwZSA9PSBLZXlUeXBlOjpNYXgpCisg
ICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXgpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gS2V5VHlwZTo6TWluKQor
ICAgIGlmIChyZXN1bHQubV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyZXN1bHQubV90eXBlID09IEtleVR5cGU6OlN0cmlu
ZykgeworICAgIGlmIChyZXN1bHQubV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5n
KSB7CiAgICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBk
ZWNvZGVyLmRlY29kZVN0cmluZygic3RyaW5nIiwgV1RGOjpnZXQ8U3RyaW5nPihyZXN1bHQubV92
YWx1ZSkpOwogICAgIH0KIAotICAgIGlmIChyZXN1bHQubV90eXBlID09IEtleVR5cGU6Ok51bWJl
ciB8fCByZXN1bHQubV90eXBlID09IEtleVR5cGU6OkRhdGUpIHsKKyAgICBpZiAocmVzdWx0Lm1f
dHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlciB8fCByZXN1bHQubV90eXBlID09IElu
ZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZSkgewogICAgICAgICByZXN1bHQubV92YWx1ZSA9IDAuMDsK
ICAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlRG91YmxlKCJudW1iZXIiLCBXVEY6OmdldDxk
b3VibGU+KHJlc3VsdC5tX3ZhbHVlKSk7CiAgICAgfQogCi0gICAgaWYgKHJlc3VsdC5tX3R5cGUg
PT0gS2V5VHlwZTo6QmluYXJ5KSB7CisgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpCaW5hcnkpIHsKICAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBUaHJlYWRTYWZl
RGF0YUJ1ZmZlcigpOwogCiAgICAgICAgIGJvb2wgaGFzQmluYXJ5RGF0YTsKQEAgLTI0Niw3ICsy
NDYsNyBAQCBib29sIElEQktleURhdGE6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIElE
QktleURhdGEmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQVNT
RVJUKHJlc3VsdC5tX3R5cGUgPT0gS2V5VHlwZTo6QXJyYXkpOworICAgIEFTU0VSVChyZXN1bHQu
bV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpOwogCiAgICAgYXV0byBhcnJheUZ1
bmN0aW9uID0gW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlEYXRhJiByZXN1bHQpIHsK
ICAgICAgICAgcmV0dXJuIGRlY29kZShkZWNvZGVyLCByZXN1bHQpOwpAQCAtMjU4LDEyICsyNTgs
MTIgQEAgYm9vbCBJREJLZXlEYXRhOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJREJL
ZXlEYXRhJiByZXN1bHQpCiAKIGludCBJREJLZXlEYXRhOjpjb21wYXJlKGNvbnN0IElEQktleURh
dGEmIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX3R5cGUgPT0gS2V5VHlwZTo6SW52YWxpZCkg
ewotICAgICAgICBpZiAob3RoZXIubV90eXBlICE9IEtleVR5cGU6OkludmFsaWQpCisgICAgaWYg
KG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQpIHsKKyAgICAgICAgaWYgKG90
aGVyLm1fdHlwZSAhPSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQpCiAgICAgICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgICAgIGlmIChvdGhlci5tX3R5cGUgPT0gS2V5VHlwZTo6SW52YWxpZCkK
KyAgICAgICAgaWYgKG90aGVyLm1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQp
CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgaWYgKG90aGVyLm1fdHlwZSA9PSBL
ZXlUeXBlOjpJbnZhbGlkKQorICAgIH0gZWxzZSBpZiAob3RoZXIubV90eXBlID09IEluZGV4ZWRE
Qjo6S2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvLyBUaGUgSURC
S2V5OjptX3R5cGUgZW51bSBpcyBpbiByZXZlcnNlIHNvcnQgb3JkZXIuCkBAIC0yNzIsMTEgKzI3
MiwxMSBAQCBpbnQgSURCS2V5RGF0YTo6Y29tcGFyZShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikg
Y29uc3QKIAogICAgIC8vIFRoZSB0eXBlcyBhcmUgdGhlIHNhbWUsIHNvIGhhbmRsZSBhY3R1YWwg
dmFsdWUgY29tcGFyaXNvbi4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlw
ZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKICAgICAg
ICAgLy8gSW52YWxpZCB0eXBlIHNob3VsZCBoYXZlIGJlZW4gZnVsbHkgaGFuZGxlZCBhYm92ZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY2Fz
ZSBLZXlUeXBlOjpBcnJheTogeworICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheTog
ewogICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92
YWx1ZSk7CiAgICAgICAgIGF1dG8mIG90aGVyQXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5
RGF0YT4+KG90aGVyLm1fdmFsdWUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5LnNpemUoKSAmJiBpIDwgb3RoZXJBcnJheS5zaXplKCk7ICsraSkgewpAQCAtMjg5LDEyICsy
ODksMTIgQEAgaW50IElEQktleURhdGE6OmNvbXBhcmUoY29uc3QgSURCS2V5RGF0YSYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIGNhc2UgS2V5VHlwZTo6QmluYXJ5OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpC
aW5hcnk6CiAgICAgICAgIHJldHVybiBjb21wYXJlQmluYXJ5S2V5RGF0YShXVEY6OmdldDxUaHJl
YWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSksIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVy
PihvdGhlci5tX3ZhbHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUoV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSwgV1RGOjpnZXQ8U3RyaW5nPihvdGhlci5tX3Zh
bHVlKSk7Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgotICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVy
OiB7CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok51bWJlcjogewogICAgICAgICBhdXRvIG51bWJlciA9IFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSk7CiAgICAgICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBXVEY6OmdldDxkb3Vi
bGU+KG90aGVyLm1fdmFsdWUpOwogCkBAIC0zMDIsOCArMzAyLDggQEAgaW50IElEQktleURhdGE6
OmNvbXBhcmUoY29uc3QgSURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgcmV0dXJuIG51bWJlciA+IG90aGVyTnVtYmVyID8gMSA6IC0xOwogICAg
IH0KLSAgICBjYXNlIEtleVR5cGU6Ok1heDoKLSAgICBjYXNlIEtleVR5cGU6Ok1pbjoKKyAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpNaW46CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMzIwLDkgKzMyMCw5IEBAIFN0
cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICBTdHJpbmcgcmVzdWx0
OwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6Cisg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIHJldHVybiAiPGlu
dmFsaWQ+IjsKLSAgICBjYXNlIEtleVR5cGU6OkFycmF5OiB7CisgICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8YXJyYXk+IC0geyAiKTsKICAgICAgICAgYXV0byYg
YXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOwpAQCAtMzM1LDcg
KzMzNSw3IEBAIFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAg
ICAgcmVzdWx0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6IHsKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
QmluYXJ5OiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjxiaW5hcnk+IC0gIik7CiAKQEAgLTM1NiwxNiArMzU2LDE2IEBAIFN0cmluZyBJ
REJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmVzdWx0ID0gYnVpbGRl
ci50b1N0cmluZygpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpT
dHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKICAgICAgICAgcmVz
dWx0ID0gIjxzdHJpbmc+IC0gIiArIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6RGF0ZToKICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCI8ZGF0ZT4gLSAlZiIs
IFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSkpOwotICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgor
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiPG51bWJlcj4gLSAlZiIsIFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSkpOwot
ICAgIGNhc2UgS2V5VHlwZTo6TWF4OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6
CiAgICAgICAgIHJldHVybiAiPG1heGltdW0+IjsKLSAgICBjYXNlIEtleVR5cGU6Ok1pbjoKKyAg
ICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICByZXR1cm4gIjxtaW5pbXVt
PiI7CiAgICAgfQogCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBJREJLZXlEYXRhOjpzZXRBcnJh
eVZhbHVlKGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYgdmFsdWUpCiB7CiAgICAgKnRoaXMgPSBJ
REJLZXlEYXRhKCk7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIG1fdHlwZSA9IEtleVR5cGU6
OkFycmF5OworICAgIG1fdHlwZSA9IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk7CiAgICAgbV9p
c051bGwgPSBmYWxzZTsKIH0KIApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgSURCS2V5RGF0YTo6
c2V0QmluYXJ5VmFsdWUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKQogewogICAg
ICp0aGlzID0gSURCS2V5RGF0YSgpOwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKLSAgICBtX3R5cGUg
PSBLZXlUeXBlOjpCaW5hcnk7CisgICAgbV90eXBlID0gSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5h
cnk7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKIH0KIApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQg
SURCS2V5RGF0YTo6c2V0U3RyaW5nVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAq
dGhpcyA9IElEQktleURhdGEoKTsKICAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgbV90eXBlID0g
S2V5VHlwZTo6U3RyaW5nOworICAgIG1fdHlwZSA9IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5n
OwogICAgIG1faXNOdWxsID0gZmFsc2U7CiB9CiAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIElE
QktleURhdGE6OnNldERhdGVWYWx1ZShkb3VibGUgdmFsdWUpCiB7CiAgICAgKnRoaXMgPSBJREJL
ZXlEYXRhKCk7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIG1fdHlwZSA9IEtleVR5cGU6OkRh
dGU7CisgICAgbV90eXBlID0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOwogICAgIG1faXNOdWxs
ID0gZmFsc2U7CiB9CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIElEQktleURhdGE6OnNldE51
bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSkKIHsKICAgICAqdGhpcyA9IElEQktleURhdGEoKTsKICAg
ICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgbV90eXBlID0gS2V5VHlwZTo6TnVtYmVyOworICAgIG1f
dHlwZSA9IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOwogICAgIG1faXNOdWxsID0gZmFsc2U7
CiB9CiAKQEAgLTQyOCwxMCArNDI4LDEwIEBAIElEQktleURhdGEgSURCS2V5RGF0YTo6ZGVsZXRl
ZFZhbHVlKCkKIAogYm9vbCBJREJLZXlEYXRhOjppc1ZhbGlkKCkgY29uc3QKIHsKLSAgICBpZiAo
bV90eXBlID09IEtleVR5cGU6OkludmFsaWQpCisgICAgaWYgKG1fdHlwZSA9PSBJbmRleGVkREI6
OktleVR5cGU6OkludmFsaWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
bV90eXBlID09IEtleVR5cGU6OkFycmF5KSB7CisgICAgaWYgKG1fdHlwZSA9PSBJbmRleGVkREI6
OktleVR5cGU6OkFycmF5KSB7CiAgICAgICAgIGZvciAoYXV0byYga2V5IDogYXJyYXkoKSkgewog
ICAgICAgICAgICAgaWYgKCFrZXkuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQ1MSwxOCArNDUxLDE4IEBAIGJvb2wgSURCS2V5RGF0YTo6b3BlcmF0b3I9PShj
b25zdCBJREJLZXlEYXRhJiBvdGhlcikgY29uc3QKICAgICBpZiAobV90eXBlICE9IG90aGVyLm1f
dHlwZSB8fCBtX2lzTnVsbCAhPSBvdGhlci5tX2lzTnVsbCB8fCBtX2lzRGVsZXRlZFZhbHVlICE9
IG90aGVyLm1faXNEZWxldGVkVmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzd2l0
Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKLSAgICBjYXNlIEtleVR5
cGU6Ok1heDoKLSAgICBjYXNlIEtleVR5cGU6Ok1pbjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgorICAgIGNh
c2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNh
c2UgS2V5VHlwZTo6TnVtYmVyOgotICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKKyAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpE
YXRlOgogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSA9PSBXVEY6Omdl
dDxkb3VibGU+KG90aGVyLm1fdmFsdWUpOwotICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgorICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBXVEY6Omdl
dDxTdHJpbmc+KG1fdmFsdWUpID09IFdURjo6Z2V0PFN0cmluZz4ob3RoZXIubV92YWx1ZSk7Ci0g
ICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJp
bmFyeToKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3Zh
bHVlKSA9PSBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4ob3RoZXIubV92YWx1ZSk7Ci0g
ICAgY2FzZSBLZXlUeXBlOjpBcnJheToKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJy
YXk6CiAgICAgICAgIHJldHVybiBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUp
ID09IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4ob3RoZXIubV92YWx1ZSk7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKaW5kZXggYWJkOWQwNmZlOTBlODBkMmI1N2Q5Yzg2
YzlkMjlkNDZhMDE5OTM4NC4uNDgyNzgwZmQ5MjllNDBmNGU1NzQ0YTE4OTlkODc3YjBiYWJmMGM3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApA
QCAtNDAsNyArNDAsNyBAQCBjbGFzcyBLZXllZEVuY29kZXI7CiBjbGFzcyBJREJLZXlEYXRhIHsK
IHB1YmxpYzoKICAgICBJREJLZXlEYXRhKCkKLSAgICAgICAgOiBtX3R5cGUoS2V5VHlwZTo6SW52
YWxpZCkKKyAgICAgICAgOiBtX3R5cGUoSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkKQogICAg
ICAgICAsIG1faXNOdWxsKHRydWUpCiAgICAgewogICAgIH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJREJLZXlEYXRhIG1pbmltdW0oKQogICAgIHsKICAgICAgICAgSURC
S2V5RGF0YSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3R5cGUgPSBLZXlUeXBlOjpNaW47Cisg
ICAgICAgIHJlc3VsdC5tX3R5cGUgPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjsKICAgICAgICAg
cmVzdWx0Lm1faXNOdWxsID0gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQktleURhdGEgbWF4aW11bSgp
CiAgICAgewogICAgICAgICBJREJLZXlEYXRhIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdHlw
ZSA9IEtleVR5cGU6Ok1heDsKKyAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IEluZGV4ZWREQjo6S2V5
VHlwZTo6TWF4OwogICAgICAgICByZXN1bHQubV9pc051bGwgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KICAgICBib29sIGlzVmFsaWQoKSBj
b25zdDsKLSAgICBLZXlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBJ
bmRleGVkREI6OktleVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgSURCS2V5RGF0YSYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0
b3I+KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdApAQCAtMTI1LDE4ICsxMjUsMTggQEAg
cHVibGljOgogICAgICAgICBoYXNoQ29kZXMuYXBwZW5kKG1faXNOdWxsID8gMSA6IDApOwogICAg
ICAgICBoYXNoQ29kZXMuYXBwZW5kKG1faXNEZWxldGVkVmFsdWUgPyAxIDogMCk7CiAgICAgICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKLSAgICAg
ICAgY2FzZSBLZXlUeXBlOjpNYXg6Ci0gICAgICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAgICAg
ICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKKyAgICAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok1heDoKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKLSAgICAg
ICAgY2FzZSBLZXlUeXBlOjpEYXRlOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
TnVtYmVyOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZToKICAgICAgICAg
ICAgIGhhc2hDb2Rlcy5hcHBlbmQoU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihkb3Vi
bGUpPigmV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgorICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6U3RyaW5nOgogICAgICAgICAgICAgaGFzaENvZGVzLmFwcGVuZChTdHJpbmdIYXNoOjpo
YXNoKFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSkpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEtleVR5cGU6OkJpbmFyeTogeworICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6QmluYXJ5OiB7CiAgICAgICAgICAgICBhdXRvKiBkYXRhID0gV1RGOjpnZXQ8VGhyZWFk
U2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpLmRhdGEoKTsKICAgICAgICAgICAgIGlmICghZGF0YSkK
ICAgICAgICAgICAgICAgICBoYXNoQ29kZXMuYXBwZW5kKDApOwpAQCAtMTQ0LDcgKzE0NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBoYXNoQ29kZXMuYXBwZW5kKFN0cmluZ0hhc2hlcjo6
aGFzaE1lbW9yeShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBLZXlUeXBlOjpBcnJheToKKyAgICAgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OgogICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpKQogICAgICAgICAgICAgICAg
IGhhc2hDb2Rlcy5hcHBlbmQoa2V5Lmhhc2goKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1
OCwzOCArMTU4LDM4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpTdHJpbmcpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nKTsKICAgICAgICAgcmV0
dXJuIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgZG91YmxlIGRhdGUo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpEYXRlKTsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkRhdGUpOwogICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBkb3Vi
bGUgbnVtYmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5VHlw
ZTo6TnVtYmVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6
Ok51bWJlcik7CiAgICAgICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpOwogICAg
IH0KIAogICAgIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBiaW5hcnkoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpCaW5hcnkpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5KTsKICAgICAgICAgcmV0
dXJuIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKICAgICB9CiAKICAg
ICBjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGFycmF5KCkgY29uc3QKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6QXJyYXkpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpOwogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8
VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgaXNvbGF0ZWRDb3B5KGNvbnN0IElEQktleURhdGEmIHNvdXJjZSwgSURCS2V5RGF0
YSYgZGVzdGluYXRpb24pOwogCi0gICAgS2V5VHlwZSBtX3R5cGU7CisgICAgSW5kZXhlZERCOjpL
ZXlUeXBlIG1fdHlwZTsKICAgICBWYXJpYW50PFZlY3RvcjxJREJLZXlEYXRhPiwgU3RyaW5nLCBk
b3VibGUsIFRocmVhZFNhZmVEYXRhQnVmZmVyPiBtX3ZhbHVlOwogCiAgICAgYm9vbCBtX2lzTnVs
bCB7IGZhbHNlIH07CkBAIC0yMzgsMjEgKzIzOCwyMSBAQCB2b2lkIElEQktleURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUp
OwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6Ci0g
ICAgY2FzZSBLZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBLZXlUeXBlOjpNaW46CisgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkludmFsaWQ6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6
Ok1heDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEtleVR5cGU6OkFycmF5OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpB
cnJheToKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1f
dmFsdWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OkJpbmFyeToKKyAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICBlbmNvZGVyIDw8IFdURjo6
Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBLZXlUeXBlOjpTdHJpbmc6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmlu
ZzoKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OkRhdGU6Ci0gICAgY2FzZSBLZXlUeXBlOjpOdW1i
ZXI6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxkb3VibGU+
KG1fdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNzIsMjcgKzI3MiwyNyBAQCBz
dGQ6Om9wdGlvbmFsPElEQktleURhdGE+IElEQktleURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoIChrZXlEYXRh
Lm1fdHlwZSkgewotICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKLSAgICBjYXNlIEtleVR5cGU6
Ok1heDoKLSAgICBjYXNlIEtleVR5cGU6Ok1pbjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6SW52YWxpZDoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgorICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5VHlw
ZTo6QXJyYXk6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OgogICAgICAgICBr
ZXlEYXRhLm1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KGtleURhdGEubV92YWx1ZSkp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBLZXlUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFy
eToKICAgICAgICAga2V5RGF0YS5tX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4o
a2V5RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBTdHJpbmcoKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxTdHJpbmc+KGtleURhdGEubV92
YWx1ZSkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBLZXlUeXBlOjpEYXRlOgotICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgorICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpOdW1iZXI6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IDAuMDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxkb3VibGU+KGtleURhdGEubV92YWx1ZSkpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggNWU1ZDc2Y2Q5ZTVkZjY4N2MwOWUxY2NmZDk3NzJkYjY4MGJjZjQ1NS4uYTFk
YjdhMjdkZGYxMzU0MmRlNGY1MjI5NjJhNzM2NzA3MGIxOTQxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyMTksNyArMjIxOSw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBp
bmRleElECiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkiKTsKIAotICAgIEFTU0VSVChrZXkuaXNWYWxp
ZCgpICYmIGtleS50eXBlKCkgIT0gS2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gS2V5VHlw
ZTo6TWluKTsKKyAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4
ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpN
aW4pOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDdkZGExZmE2NjJlNGQ4NTQ1
NTY0NjBjMTllNjE1YTNiMDJiOWEyYzQuLjJhOTgwZmEwOTIxOTM4NmE1NzdiYTc3Y2IxODdlMzQy
YWY4NTI3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUm
IHN0YXRlLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBJREJLZXkqIGtleSkKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBzd2l0Y2ggKGtleS0+
dHlwZSgpKSB7Ci0gICAgY2FzZSBLZXlUeXBlOjpBcnJheTogeworICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpBcnJheTogewogICAgICAgICBhdXRvJiBpbkFycmF5ID0ga2V5LT5hcnJheSgp
OwogICAgICAgICB1bnNpZ25lZCBzaXplID0gaW5BcnJheS5zaXplKCk7CiAgICAgICAgIGF1dG8g
b3V0QXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KCZzdGF0ZSwgMCwgJmdsb2JhbE9iamVjdCwg
c2l6ZSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIElEQktleSoga2V5KQogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBvdXRBcnJheTsKICAgICB9Ci0gICAgY2FzZSBLZXlUeXBlOjpCaW5hcnk6
IHsKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OiB7CiAgICAgICAgIGF1dG8q
IGRhdGEgPSBrZXktPmJpbmFyeSgpLmRhdGEoKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEyMSwxNyArMTIxLDE3IEBAIEpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBJ
REJLZXkqIGtleSkKIAogICAgICAgICByZXR1cm4gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRl
LnZtKCksIHN0cnVjdHVyZSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgIH0KLSAgICBjYXNl
IEtleVR5cGU6OlN0cmluZzoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgog
ICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBrZXktPnN0cmluZygpKTsK
LSAgICBjYXNlIEtleVR5cGU6OkRhdGU6CisgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRh
dGU6CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB0b0pTPElETERh
dGU+KC4uLikgYXMgcGVyOgogICAgICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9JbmRleGVk
REIvI3JlcXVlc3QtY29udmVydC1hLWtleS10by1hLXZhbHVlCiAgICAgICAgIHJldHVybiB0b0pT
PElETE51bGxhYmxlPElETERhdGU+PihzdGF0ZSwga2V5LT5kYXRlKCkpOwotICAgIGNhc2UgS2V5
VHlwZTo6TnVtYmVyOgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAg
ICAgIHJldHVybiBqc051bWJlcihrZXktPm51bWJlcigpKTsKLSAgICBjYXNlIEtleVR5cGU6Ok1p
bjoKLSAgICBjYXNlIEtleVR5cGU6Ok1heDoKLSAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6Cisg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKKyAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6TWF4OgorICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>