<?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>149149</bug_id>
          
          <creation_ts>2015-09-14 21:00:27 -0700</creation_ts>
          <short_desc>Make the enum IDBKey::Type into a utility enum class</short_desc>
          <delta_ts>2015-09-15 08:53:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1125870</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-14 21:00:27 -0700</bug_when>
    <thetext>Make the enum IDBKey::Type into a utility enum class

It belongs in the IndexedDB.h utility header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125872</commentid>
    <comment_count>1</comment_count>
      <attachid>261167</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-14 21:02:43 -0700</bug_when>
    <thetext>Created attachment 261167
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125875</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-14 21:05:20 -0700</bug_when>
    <thetext>Attachment 261167 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/IDBKey.h:146:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBKey.h:147:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBKey.h:148:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBKey.h:149:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125963</commentid>
    <comment_count>3</comment_count>
      <attachid>261167</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-09-15 08:18:45 -0700</bug_when>
    <thetext>Comment on attachment 261167
Patch v1

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBKey.h:37
&gt; +using WebCore::IndexedDB::KeyType;

You shouldn&apos;t need this.  You have KeyType:: everywhere.

&gt; Source/WebCore/Modules/indexeddb/IndexedDB.h:63
&gt; +    Max = -1,

Why not put Max at the end?

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1922
&gt;          // MaxType and MinType are only used for comparison to other keys.

change

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1958
&gt;          // MaxType and MinType are only used for comparison to other keys.

Change comment, too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125967</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-15 08:48:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 261167 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=261167&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBKey.h:37
&gt; &gt; +using WebCore::IndexedDB::KeyType;
&gt; 
&gt; You shouldn&apos;t need this.  You have KeyType:: everywhere.

Except I don&apos;t have IndexedDB everywhere, and don&apos;t want to pull in the entire namespace.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IndexedDB.h:63
&gt; &gt; +    Max = -1,
&gt; 
&gt; Why not put Max at the end?

There&apos;s actually a spec-defined comparison order for IDB keys, and for many reasons we put the enums in reverse order.

&gt; &gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1922
&gt; &gt;          // MaxType and MinType are only used for comparison to other keys.
&gt; 
&gt; change
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1958
&gt; &gt;          // MaxType and MinType are only used for comparison to other keys.
&gt; 
&gt; Change comment, too

Oh thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125969</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-15 08:53:50 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/189809</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261167</attachid>
            <date>2015-09-14 21:02:43 -0700</date>
            <delta_ts>2015-09-15 08:18:45 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27351</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmODI0M2QwLi5mZmRjY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTMg
QEAKIDIwMTUtMDktMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1ha2UgdGhlIGVudW0gSURCS2V5OjpUeXBlIGludG8gYSB1dGlsaXR5IGVudW0gY2xhc3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkxNDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKENsZWFudXAsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojppc1ZhbGlk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y29tcGFyZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZU51
bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZURhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5OjpjcmVhdGVNdWx0aUVudHJ5QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5OjpjcmVhdGVBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjphcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJLZXk6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5OjpudW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5Ojpj
b21wYXJlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpJREJLZXkpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpt
YXliZUNyZWF0ZUlEQktleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlE
YXRhOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6c2V0QXJyYXlWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpzZXRTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJLZXlEYXRhOjpzZXREYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5
RGF0YTo6c2V0TnVtYmVyVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OklEQktleURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJLZXlEYXRhOjptYXhpbXVtKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVk
REIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlkYktleVRvSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVJREJLZXlGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwOgorCisyMDE1LTA5LTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwog
ICAgICAgICBSZW5hbWUgY3VycmVudCBjb25jcmV0ZSBJREIgaW1wbGVtZW50YXRpb24gdG8gIkxl
Z2FjeSIuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDkxMTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKaW5k
ZXggNTc5MGY4MS4uMDdlMWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXkuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAgSURCS2V5Ojp+SURCS2V5KCkKIAogYm9v
bCBJREJLZXk6OmlzVmFsaWQoKSBjb25zdAogewotICAgIGlmIChtX3R5cGUgPT0gSW52YWxpZFR5
cGUpCisgICAgaWYgKG1fdHlwZSA9PSBLZXlUeXBlOjpJbnZhbGlkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAobV90eXBlID09IEFycmF5VHlwZSkgeworICAgIGlmIChtX3R5cGUg
PT0gS2V5VHlwZTo6QXJyYXkpIHsKICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBtX2FycmF5KSB7
CiAgICAgICAgICAgICBpZiAoIWtleS0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgaW50IElEQktleTo6Y29tcGFyZShjb25zdCBJREJL
ZXkqIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4gbV90eXBlID4gb3RoZXItPm1fdHlwZSA/
IC0xIDogMTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBBcnJheVR5cGU6Cisg
ICAgY2FzZSBLZXlUeXBlOjpBcnJheToKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2FycmF5LnNpemUoKSAmJiBpIDwgb3RoZXItPm1fYXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChpbnQgcmVzdWx0ID0gbV9hcnJheVtpXS0+Y29tcGFyZShvdGhlci0+bV9hcnJh
eVtpXS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY4LDE1ICs2
OCwxNSBAQCBpbnQgSURCS2V5Ojpjb21wYXJlKGNvbnN0IElEQktleSogb3RoZXIpIGNvbnN0CiAg
ICAgICAgIGlmIChtX2FycmF5LnNpemUoKSA+IG90aGVyLT5tX2FycmF5LnNpemUoKSkKICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIFN0cmluZ1R5cGU6
CisgICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiAtY29kZVBvaW50Q29t
cGFyZShvdGhlci0+bV9zdHJpbmcsIG1fc3RyaW5nKTsKLSAgICBjYXNlIERhdGVUeXBlOgotICAg
IGNhc2UgTnVtYmVyVHlwZToKKyAgICBjYXNlIEtleVR5cGU6OkRhdGU6CisgICAgY2FzZSBLZXlU
eXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiAobV9udW1iZXIgPCBvdGhlci0+bV9udW1iZXIp
ID8gLTEgOgogICAgICAgICAgICAgICAgIChtX251bWJlciA+IG90aGVyLT4gbV9udW1iZXIpID8g
MSA6IDA7Ci0gICAgY2FzZSBJbnZhbGlkVHlwZToKLSAgICBjYXNlIE1pblR5cGU6Ci0gICAgY2Fz
ZSBNYXhUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKKyAgICBjYXNlIEtleVR5cGU6
Ok1pbjoKKyAgICBjYXNlIEtleVR5cGU6Ok1heDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5LmgKaW5kZXggOTI5NmNjOS4uOTllMzhiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKQEAgLTI4LDE3ICsyOCwxOCBAQAogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCit1c2luZyBX
ZWJDb3JlOjpJbmRleGVkREI6OktleVR5cGU7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSURCS2V5IDogcHVibGljIFJlZkNvdW50ZWQ8SURCS2V5PiB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEtleUFycmF5OwotCiAgICAgc3RhdGljIFJlZjxJ
REJLZXk+IGNyZWF0ZUludmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSURCS2V5KCkpOwpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
PElEQktleT4gY3JlYXRlTnVtYmVyKGRvdWJsZSBudW1iZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJREJLZXkoTnVtYmVyVHlwZSwgbnVtYmVyKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IElEQktleShLZXlUeXBlOjpOdW1iZXIsIG51bWJlcikpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8SURCS2V5PiBjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCkBAIC01NiwxMiArNTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxJREJL
ZXk+IGNyZWF0ZURhdGUoZG91YmxlIGRhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJREJLZXkoRGF0ZVR5cGUsIGRhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSURCS2V5KEtleVR5cGU6OkRhdGUsIGRhdGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZU11bHRpRW50cnlBcnJheShjb25zdCBLZXlBcnJheSYg
YXJyYXkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVNdWx0aUVudHJ5QXJy
YXkoY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCiAgICAgewotICAgICAgICBL
ZXlBcnJheSByZXN1bHQ7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4gcmVzdWx0Owog
CiAgICAgICAgIHNpemVfdCBzaXplRXN0aW1hdGUgPSAwOwogICAgICAgICBmb3IgKGF1dG8mIGtl
eSA6IGFycmF5KSB7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlk
YktleS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZUFy
cmF5KGNvbnN0IEtleUFycmF5JiBhcnJheSkKKyAgICBzdGF0aWMgUmVmPElEQktleT4gY3JlYXRl
QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiYgYXJyYXkpCiAgICAgewogICAgICAg
ICBzaXplX3Qgc2l6ZUVzdGltYXRlID0gMDsKICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBhcnJh
eSkKQEAgLTk2LDQxICs5NywzMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SURC
S2V5KCk7CiAKLSAgICAvLyBJbiBvcmRlciBvZiB0aGUgbGVhc3QgdG8gdGhlIGhpZ2hlc3QgcHJl
Y2VkZW50IGluIHRlcm1zIG9mIHNvcnQgb3JkZXIuCi0gICAgZW51bSBUeXBlIHsKLSAgICAgICAg
TWF4VHlwZSA9IC0xLAotICAgICAgICBJbnZhbGlkVHlwZSA9IDAsCi0gICAgICAgIEFycmF5VHlw
ZSwKLSAgICAgICAgU3RyaW5nVHlwZSwKLSAgICAgICAgRGF0ZVR5cGUsCi0gICAgICAgIE51bWJl
clR5cGUsCi0gICAgICAgIE1pblR5cGUKLSAgICB9OwotCi0gICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgS2V5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBLZXlBcnJheSYgYXJyYXkoKSBjb25zdAorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURC
S2V5Pj4mIGFycmF5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQXJy
YXlUeXBlKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlUeXBlOjpBcnJheSk7CiAgICAg
ICAgIHJldHVybiBtX2FycmF5OwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RyaW5nVHlwZSk7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6U3RyaW5nKTsKICAgICAgICAgcmV0dXJuIG1f
c3RyaW5nOwogICAgIH0KIAogICAgIGRvdWJsZSBkYXRlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gRGF0ZVR5cGUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEtl
eVR5cGU6OkRhdGUpOwogICAgICAgICByZXR1cm4gbV9udW1iZXI7CiAgICAgfQogCiAgICAgZG91
YmxlIG51bWJlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IE51bWJl
clR5cGUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6Ok51bWJlcik7CiAgICAg
ICAgIHJldHVybiBtX251bWJlcjsKICAgICB9CiAKQEAgLTE0MCw3ICsxMzAsNyBAQCBwdWJsaWM6
CiAKICAgICBzaXplX3Qgc2l6ZUVzdGltYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zaXplRXN0aW1h
dGU7IH0KIAotICAgIHN0YXRpYyBpbnQgY29tcGFyZVR5cGVzKFR5cGUgYSwgVHlwZSBiKQorICAg
IHN0YXRpYyBpbnQgY29tcGFyZVR5cGVzKEtleVR5cGUgYSwgS2V5VHlwZSBiKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGIgLSBhOwogICAgIH0KQEAgLTE1MywxMyArMTQzLDEzIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIElEQktleSgpIDogbV90eXBlKEludmFsaWRUeXBlKSwg
bV9udW1iZXIoMCksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSkgeyB9Ci0gICAgSURCS2V5
KFR5cGUgdHlwZSwgZG91YmxlIG51bWJlcikgOiBtX3R5cGUodHlwZSksIG1fbnVtYmVyKG51bWJl
ciksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSArIHNpemVvZihkb3VibGUpKSB7IH0KLSAg
ICBleHBsaWNpdCBJREJLZXkoY29uc3QgU3RyaW5nJiB2YWx1ZSkgOiBtX3R5cGUoU3RyaW5nVHlw
ZSksIG1fc3RyaW5nKHZhbHVlKSwgbV9udW1iZXIoMCksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFk
U2l6ZSArIHZhbHVlLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSkgeyB9Ci0gICAgSURCS2V5KGNv
bnN0IEtleUFycmF5JiBrZXlBcnJheSwgc2l6ZV90IGFycmF5U2l6ZSkgOiBtX3R5cGUoQXJyYXlU
eXBlKSwgbV9hcnJheShrZXlBcnJheSksIG1fbnVtYmVyKDApLCBtX3NpemVFc3RpbWF0ZShPdmVy
aGVhZFNpemUgKyBhcnJheVNpemUpIHsgfQorICAgIElEQktleSgpIDogbV90eXBlKEtleVR5cGU6
OkludmFsaWQpLCBtX251bWJlcigwKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplKSB7IH0K
KyAgICBJREJLZXkoS2V5VHlwZSB0eXBlLCBkb3VibGUgbnVtYmVyKSA6IG1fdHlwZSh0eXBlKSwg
bV9udW1iZXIobnVtYmVyKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgc2l6ZW9mKGRv
dWJsZSkpIHsgfQorICAgIGV4cGxpY2l0IElEQktleShjb25zdCBTdHJpbmcmIHZhbHVlKSA6IG1f
dHlwZShLZXlUeXBlOjpTdHJpbmcpLCBtX3N0cmluZyh2YWx1ZSksIG1fbnVtYmVyKDApLCBtX3Np
emVFc3RpbWF0ZShPdmVyaGVhZFNpemUgKyB2YWx1ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikp
IHsgfQorICAgIElEQktleShjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4+JiBrZXlBcnJheSwg
c2l6ZV90IGFycmF5U2l6ZSkgOiBtX3R5cGUoS2V5VHlwZTo6QXJyYXkpLCBtX2FycmF5KGtleUFy
cmF5KSwgbV9udW1iZXIoMCksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSArIGFycmF5U2l6
ZSkgeyB9CiAKLSAgICBjb25zdCBUeXBlIG1fdHlwZTsKLSAgICBjb25zdCBLZXlBcnJheSBtX2Fy
cmF5OworICAgIGNvbnN0IEtleVR5cGUgbV90eXBlOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
SURCS2V5Pj4gbV9hcnJheTsKICAgICBjb25zdCBTdHJpbmcgbV9zdHJpbmc7CiAgICAgY29uc3Qg
ZG91YmxlIG1fbnVtYmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleURhdGEuY3BwCmluZGV4IDJmMmI0ZjYuLjYyMzBkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQktleURhdGE6OklEQktleURhdGEoY29uc3QgSURC
S2V5KiBrZXkpCi0gICAgOiB0eXBlKElEQktleTo6SW52YWxpZFR5cGUpCisgICAgOiB0eXBlKEtl
eVR5cGU6OkludmFsaWQpCiAgICAgLCBudW1iZXJWYWx1ZSgwKQogICAgICwgaXNOdWxsKGZhbHNl
KQogewpAQCAtNDcsMjMgKzQ3LDIzIEBAIElEQktleURhdGE6OklEQktleURhdGEoY29uc3QgSURC
S2V5KiBrZXkpCiAgICAgbnVtYmVyVmFsdWUgPSAwOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICBjYXNlIEtl
eVR5cGU6OkFycmF5OgogICAgICAgICBmb3IgKGF1dG8mIGtleTIgOiBrZXktPmFycmF5KCkpCiAg
ICAgICAgICAgICBhcnJheVZhbHVlLmFwcGVuZChJREJLZXlEYXRhKGtleTIuZ2V0KCkpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CisgICAgY2FzZSBLZXlU
eXBlOjpTdHJpbmc6CiAgICAgICAgIHN0cmluZ1ZhbHVlID0ga2V5LT5zdHJpbmcoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6
RGF0ZToKICAgICAgICAgbnVtYmVyVmFsdWUgPSBrZXktPmRhdGUoKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6
CiAgICAgICAgIG51bWJlclZhbHVlID0ga2V5LT5udW1iZXIoKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJREJLZXk6Ok1heFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAg
Y2FzZSBLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBLZXlUeXBlOjpNaW46CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KQEAgLTc0LDI1ICs3NCwyNSBAQCBQYXNzUmVmUHRyPElEQktleT4gSURCS2V5
RGF0YTo6bWF5YmVDcmVhdGVJREJLZXkoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKKyAg
ICBjYXNlIEtleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUlu
dmFsaWQoKTsKLSAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6
QXJyYXk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIElEQktleTo6S2V5QXJyYXkgYXJyYXk7Cisg
ICAgICAgICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+IGFycmF5OwogICAgICAgICAgICAgZm9y
IChhdXRvJiBrZXlEYXRhIDogYXJyYXlWYWx1ZSkgewogICAgICAgICAgICAgICAgIGFycmF5LmFw
cGVuZChrZXlEYXRhLm1heWJlQ3JlYXRlSURCS2V5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChhcnJheS5sYXN0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIElEQktl
eTo6Y3JlYXRlQXJyYXkoYXJyYXkpOwogICAgICAgICB9Ci0gICAgY2FzZSBJREJLZXk6OlN0cmlu
Z1R5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBJREJLZXk6
OmNyZWF0ZVN0cmluZyhzdHJpbmdWYWx1ZSk7Ci0gICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgor
ICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0
ZShudW1iZXJWYWx1ZSk7Ci0gICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgY2FzZSBL
ZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcihudW1i
ZXJWYWx1ZSk7Ci0gICAgY2FzZSBJREJLZXk6Ok1heFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok1p
blR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBLZXlUeXBlOjpNaW46CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMDgsMjEgKzEwOCwyMSBAQCBJREJLZXlEYXRhIElEQktleURhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgcmVzdWx0LmlzTnVsbCA9IGlzTnVsbDsKIAogICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKKyAgICBjYXNlIEtleVR5cGU6
OkludmFsaWQ6CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgY2FzZSBJREJLZXk6OkFycmF5
VHlwZToKKyAgICBjYXNlIEtleVR5cGU6OkFycmF5OgogICAgICAgICBmb3IgKGF1dG8mIGtleSA6
IGFycmF5VmFsdWUpCiAgICAgICAgICAgICByZXN1bHQuYXJyYXlWYWx1ZS5hcHBlbmQoa2V5Lmlz
b2xhdGVkQ29weSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBjYXNlIElEQktleTo6
U3RyaW5nVHlwZToKKyAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKICAgICAgICAgcmVzdWx0LnN0
cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWUuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgIGNhc2UgSURCS2V5OjpOdW1i
ZXJUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6RGF0ZToKKyAgICBjYXNlIEtleVR5cGU6Ok51bWJl
cjoKICAgICAgICAgcmVzdWx0Lm51bWJlclZhbHVlID0gbnVtYmVyVmFsdWU7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgY2FzZSBJREJLZXk6Ok1heFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6
Ok1pblR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpNYXg6CisgICAgY2FzZSBLZXlUeXBlOjpNaW46
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMzksMjIgKzEzOSwyMiBAQCB2
b2lkIElEQktleURhdGE6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKCJ0eXBlIiwgdHlwZSk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpJbnZhbGlk
OgogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICBjYXNl
IEtleVR5cGU6OkFycmF5OgogICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMoImFycmF5Iiwg
YXJyYXlWYWx1ZS5iZWdpbigpLCBhcnJheVZhbHVlLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IElEQktleURhdGEmIGtleSkgewogICAgICAgICAgICAga2V5LmVuY29kZShl
bmNvZGVyKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIElEQktleTo6
U3RyaW5nVHlwZToKKyAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKICAgICAgICAgZW5jb2Rlci5l
bmNvZGVTdHJpbmcoInN0cmluZyIsIHN0cmluZ1ZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSURCS2V5OjpEYXRlVHlwZToKLSAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKKyAg
ICBjYXNlIEtleVR5cGU6OkRhdGU6CisgICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAg
IGVuY29kZXIuZW5jb2RlRG91YmxlKCJudW1iZXIiLCBudW1iZXJWYWx1ZSk7CiAgICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIElEQktleTo6TWF4VHlwZToKLSAgICBjYXNlIElEQktleTo6TWluVHlw
ZToKKyAgICBjYXNlIEtleVR5cGU6Ok1heDoKKyAgICBjYXNlIEtleVR5cGU6Ok1pbjoKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDMzICsxNzAsMzMgQEAgYm9vbCBJREJLZXlEYXRh
OjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlEYXRhJiByZXN1bHQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBlbnVtRnVuY3Rpb24gPSBbXShpbnQ2NF90IHZh
bHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9PSBJREJLZXk6Ok1heFR5cGUKLSAgICAgICAg
ICAgIHx8IHZhbHVlID09IElEQktleTo6SW52YWxpZFR5cGUKLSAgICAgICAgICAgIHx8IHZhbHVl
ID09IElEQktleTo6QXJyYXlUeXBlCi0gICAgICAgICAgICB8fCB2YWx1ZSA9PSBJREJLZXk6OlN0
cmluZ1R5cGUKLSAgICAgICAgICAgIHx8IHZhbHVlID09IElEQktleTo6RGF0ZVR5cGUKLSAgICAg
ICAgICAgIHx8IHZhbHVlID09IElEQktleTo6TnVtYmVyVHlwZQotICAgICAgICAgICAgfHwgdmFs
dWUgPT0gSURCS2V5OjpNaW5UeXBlOworICAgICAgICByZXR1cm4gdmFsdWUgPT0gS2V5VHlwZTo6
TWF4CisgICAgICAgICAgICB8fCB2YWx1ZSA9PSBLZXlUeXBlOjpJbnZhbGlkCisgICAgICAgICAg
ICB8fCB2YWx1ZSA9PSBLZXlUeXBlOjpBcnJheQorICAgICAgICAgICAgfHwgdmFsdWUgPT0gS2V5
VHlwZTo6U3RyaW5nCisgICAgICAgICAgICB8fCB2YWx1ZSA9PSBLZXlUeXBlOjpEYXRlCisgICAg
ICAgICAgICB8fCB2YWx1ZSA9PSBLZXlUeXBlOjpOdW1iZXIKKyAgICAgICAgICAgIHx8IHZhbHVl
ID09IEtleVR5cGU6Ok1pbjsKICAgICB9OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKCJ0
eXBlIiwgcmVzdWx0LnR5cGUsIGVudW1GdW5jdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChyZXN1bHQudHlwZSA9PSBJREJLZXk6OkludmFsaWRUeXBlKQorICAgIGlmIChy
ZXN1bHQudHlwZSA9PSBLZXlUeXBlOjpJbnZhbGlkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmIChyZXN1bHQudHlwZSA9PSBJREJLZXk6Ok1heFR5cGUpCisgICAgaWYgKHJlc3VsdC50
eXBlID09IEtleVR5cGU6Ok1heCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmVz
dWx0LnR5cGUgPT0gSURCS2V5OjpNaW5UeXBlKQorICAgIGlmIChyZXN1bHQudHlwZSA9PSBLZXlU
eXBlOjpNaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJlc3VsdC50eXBlID09
IElEQktleTo6U3RyaW5nVHlwZSkKKyAgICBpZiAocmVzdWx0LnR5cGUgPT0gS2V5VHlwZTo6U3Ry
aW5nKQogICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVTdHJpbmcoInN0cmluZyIsIHJlc3Vs
dC5zdHJpbmdWYWx1ZSk7CiAKLSAgICBpZiAocmVzdWx0LnR5cGUgPT0gSURCS2V5OjpOdW1iZXJU
eXBlIHx8IHJlc3VsdC50eXBlID09IElEQktleTo6RGF0ZVR5cGUpCisgICAgaWYgKHJlc3VsdC50
eXBlID09IEtleVR5cGU6Ok51bWJlciB8fCByZXN1bHQudHlwZSA9PSBLZXlUeXBlOjpEYXRlKQog
ICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVEb3VibGUoIm51bWJlciIsIHJlc3VsdC5udW1i
ZXJWYWx1ZSk7CiAKLSAgICBBU1NFUlQocmVzdWx0LnR5cGUgPT0gSURCS2V5OjpBcnJheVR5cGUp
OworICAgIEFTU0VSVChyZXN1bHQudHlwZSA9PSBLZXlUeXBlOjpBcnJheSk7CiAKICAgICBhdXRv
IGFycmF5RnVuY3Rpb24gPSBbXShLZXllZERlY29kZXImIGRlY29kZXIsIElEQktleURhdGEmIHJl
c3VsdCkgewogICAgICAgICByZXR1cm4gZGVjb2RlKGRlY29kZXIsIHJlc3VsdCk7CkBAIC0yMDgs
MTIgKzIwOCwxMiBAQCBib29sIElEQktleURhdGE6OmRlY29kZShLZXllZERlY29kZXImIGRlY29k
ZXIsIElEQktleURhdGEmIHJlc3VsdCkKIAogaW50IElEQktleURhdGE6OmNvbXBhcmUoY29uc3Qg
SURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHR5cGUgPT0gSURCS2V5OjpJbnZh
bGlkVHlwZSkgewotICAgICAgICBpZiAob3RoZXIudHlwZSAhPSBJREJLZXk6OkludmFsaWRUeXBl
KQorICAgIGlmICh0eXBlID09IEtleVR5cGU6OkludmFsaWQpIHsKKyAgICAgICAgaWYgKG90aGVy
LnR5cGUgIT0gS2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAg
ICAgaWYgKG90aGVyLnR5cGUgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkKKyAgICAgICAgaWYgKG90
aGVyLnR5cGUgPT0gS2V5VHlwZTo6SW52YWxpZCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAg
IH0gZWxzZSBpZiAob3RoZXIudHlwZSA9PSBJREJLZXk6OkludmFsaWRUeXBlKQorICAgIH0gZWxz
ZSBpZiAob3RoZXIudHlwZSA9PSBLZXlUeXBlOjpJbnZhbGlkKQogICAgICAgICByZXR1cm4gMTsK
IAogICAgIC8vIFRoZSBJREJLZXk6OlR5cGUgZW51bSBpcyBpbiByZXZlcnNlIHNvcnQgb3JkZXIu
CkBAIC0yMjIsMTEgKzIyMiwxMSBAQCBpbnQgSURCS2V5RGF0YTo6Y29tcGFyZShjb25zdCBJREJL
ZXlEYXRhJiBvdGhlcikgY29uc3QKIAogICAgIC8vIFRoZSB0eXBlcyBhcmUgdGhlIHNhbWUsIHNv
IGhhbmRsZSBhY3R1YWwgdmFsdWUgY29tcGFyaXNvbi4KICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpJbnZhbGlkOgog
ICAgICAgICAvLyBJbnZhbGlkVHlwZSBzaG91bGQgaGF2ZSBiZWVuIGZ1bGx5IGhhbmRsZWQgYWJv
dmUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwotICAg
IGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpBcnJheToKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheVZhbHVlLnNpemUoKSAmJiBpIDwgb3RoZXIu
YXJyYXlWYWx1ZS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGludCByZXN1bHQgPSBh
cnJheVZhbHVlW2ldLmNvbXBhcmUob3RoZXIuYXJyYXlWYWx1ZVtpXSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzNiwxNSArMjM2LDE1IEBAIGludCBJREJLZXlEYXRhOjpj
b21wYXJlKGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICBpZiAoYXJyYXlW
YWx1ZS5zaXplKCkgPiBvdGhlci5hcnJheVZhbHVlLnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
biAxOwogICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAg
ICBjYXNlIEtleVR5cGU6OlN0cmluZzoKICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUo
c3RyaW5nVmFsdWUsIG90aGVyLnN0cmluZ1ZhbHVlKTsKLSAgICBjYXNlIElEQktleTo6RGF0ZVR5
cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpEYXRl
OgorICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBpZiAobnVtYmVyVmFsdWUgPT0g
b3RoZXIubnVtYmVyVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJu
IG51bWJlclZhbHVlID4gb3RoZXIubnVtYmVyVmFsdWUgPyAxIDogLTE7Ci0gICAgY2FzZSBJREJL
ZXk6Ok1heFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgY2FzZSBLZXlUeXBl
OjpNYXg6CisgICAgY2FzZSBLZXlUeXBlOjpNaW46CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMjU5LDkgKzI1OSw5IEBAIFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuICI8bnVsbD4iOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoK
ICAgICAgICAgcmV0dXJuICI8aW52YWxpZD4iOwotICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6
CisgICAgY2FzZSBLZXlUeXBlOjpBcnJheToKICAgICAgICAgewogICAgICAgICAgICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiPGFycmF5
PiAtIHsgIik7CkBAIC0yNzMsMTUgKzI3MywxNSBAQCBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2lu
Z1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIH0iKTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICAgICAgfQotICAgIGNh
c2UgSURCS2V5OjpTdHJpbmdUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgogICAgICAg
ICByZXR1cm4gIjxzdHJpbmc+IC0gIiArIHN0cmluZ1ZhbHVlOwotICAgIGNhc2UgSURCS2V5OjpE
YXRlVHlwZToKKyAgICBjYXNlIEtleVR5cGU6OkRhdGU6CiAgICAgICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgiRGF0ZSB0eXBlIC0gJWYiLCBudW1iZXJWYWx1ZSk7Ci0gICAgY2FzZSBJREJLZXk6
Ok51bWJlclR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiPG51bWJlcj4gLSAlZiIsIG51bWJlclZhbHVlKTsKLSAgICBjYXNlIElE
QktleTo6TWF4VHlwZToKKyAgICBjYXNlIEtleVR5cGU6Ok1heDoKICAgICAgICAgcmV0dXJuICI8
bWF4aW11bT4iOwotICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6
TWluOgogICAgICAgICByZXR1cm4gIjxtaW5pbXVtPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgSURCS2V5RGF0YTo6c2V0
QXJyYXlWYWx1ZShjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIHZhbHVlKQogewogICAgICp0aGlz
ID0gSURCS2V5RGF0YSgpOwogICAgIGFycmF5VmFsdWUgPSB2YWx1ZTsKLSAgICB0eXBlID0gSURC
S2V5OjpBcnJheVR5cGU7CisgICAgdHlwZSA9IEtleVR5cGU6OkFycmF5OwogICAgIGlzTnVsbCA9
IGZhbHNlOwogfQogCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBJREJLZXlEYXRhOjpzZXRTdHJp
bmdWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgICp0aGlzID0gSURCS2V5RGF0YSgp
OwogICAgIHN0cmluZ1ZhbHVlID0gdmFsdWU7Ci0gICAgdHlwZSA9IElEQktleTo6U3RyaW5nVHlw
ZTsKKyAgICB0eXBlID0gS2V5VHlwZTo6U3RyaW5nOwogICAgIGlzTnVsbCA9IGZhbHNlOwogfQog
CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBJREJLZXlEYXRhOjpzZXREYXRlVmFsdWUoZG91Ymxl
IHZhbHVlKQogewogICAgICp0aGlzID0gSURCS2V5RGF0YSgpOwogICAgIG51bWJlclZhbHVlID0g
dmFsdWU7Ci0gICAgdHlwZSA9IElEQktleTo6RGF0ZVR5cGU7CisgICAgdHlwZSA9IEtleVR5cGU6
OkRhdGU7CiAgICAgaXNOdWxsID0gZmFsc2U7CiB9CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IElEQktleURhdGE6OnNldE51bWJlclZhbHVlKGRvdWJsZSB2YWx1ZSkKIHsKICAgICAqdGhpcyA9
IElEQktleURhdGEoKTsKICAgICBudW1iZXJWYWx1ZSA9IHZhbHVlOwotICAgIHR5cGUgPSBJREJL
ZXk6Ok51bWJlclR5cGU7CisgICAgdHlwZSA9IEtleVR5cGU6Ok51bWJlcjsKICAgICBpc051bGwg
PSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5oCmluZGV4IGQ3MjY1YmUuLjQ0ZDhhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgS2V5ZWRF
bmNvZGVyOwogCiBzdHJ1Y3QgSURCS2V5RGF0YSB7CiAgICAgSURCS2V5RGF0YSgpCi0gICAgICAg
IDogdHlwZShJREJLZXk6OkludmFsaWRUeXBlKQorICAgICAgICA6IHR5cGUoS2V5VHlwZTo6SW52
YWxpZCkKICAgICAgICAgLCBudW1iZXJWYWx1ZSgwKQogICAgICAgICAsIGlzTnVsbCh0cnVlKQog
ICAgIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IElEQktleURhdGEgewogICAgIHN0YXRpYyBJ
REJLZXlEYXRhIG1pbmltdW0oKQogICAgIHsKICAgICAgICAgSURCS2V5RGF0YSByZXN1bHQ7Ci0g
ICAgICAgIHJlc3VsdC50eXBlID0gSURCS2V5OjpNaW5UeXBlOworICAgICAgICByZXN1bHQudHlw
ZSA9IEtleVR5cGU6Ok1pbjsKICAgICAgICAgcmVzdWx0LmlzTnVsbCA9IGZhbHNlOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IElEQktleURh
dGEgewogICAgIHN0YXRpYyBJREJLZXlEYXRhIG1heGltdW0oKQogICAgIHsKICAgICAgICAgSURC
S2V5RGF0YSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC50eXBlID0gSURCS2V5OjpNYXhUeXBlOwor
ICAgICAgICByZXN1bHQudHlwZSA9IEtleVR5cGU6Ok1heDsKICAgICAgICAgcmVzdWx0LmlzTnVs
bCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTgzLDcgKzgzLDcg
QEAgc3RydWN0IElEQktleURhdGEgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsb2dnaW5n
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIElEQktleTo6VHlwZSB0eXBlOworICAgIEtl
eVR5cGUgdHlwZTsKICAgICBWZWN0b3I8SURCS2V5RGF0YT4gYXJyYXlWYWx1ZTsKICAgICBTdHJp
bmcgc3RyaW5nVmFsdWU7CiAgICAgZG91YmxlIG51bWJlclZhbHVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAppbmRleCBmYWMzOTI2Li5hNmE5ZjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaApAQCAtNTcs
NiArNTcsMTcgQEAgZW51bSBjbGFzcyBWZXJzaW9uTnVsbG5lc3MgewogICAgIE51bGwsCiAgICAg
Tm9uTnVsbCwKIH07CisgICAgCisvLyBJbiBvcmRlciBvZiB0aGUgbGVhc3QgdG8gdGhlIGhpZ2hl
c3QgcHJlY2VkZW50IGluIHRlcm1zIG9mIHNvcnQgb3JkZXIuCitlbnVtIEtleVR5cGUgeworICAg
IE1heCA9IC0xLAorICAgIEludmFsaWQgPSAwLAorICAgIEFycmF5LAorICAgIFN0cmluZywKKyAg
ICBEYXRlLAorICAgIE51bWJlciwKKyAgICBNaW4sCit9OwogCiB9IC8vIG5hbWVzcGFjZSBJbmRl
eGVkREIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAppbmRleCBiZWM3OGZlLi5jMWRmYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtODQsOSArODQsOSBA
QCBzdGF0aWMgSlNWYWx1ZSBpZGJLZXlUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KIAogICAgIHN3aXRjaCAoa2V5LT50eXBl
KCkpIHsKLSAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6QXJy
YXk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IElEQktleTo6S2V5QXJyYXkmIGluQXJy
YXkgPSBrZXktPmFycmF5KCk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktl
eT4+JiBpbkFycmF5ID0ga2V5LT5hcnJheSgpOwogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBp
bkFycmF5LnNpemUoKTsKICAgICAgICAgICAgIEpTQXJyYXkqIG91dEFycmF5ID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCAwLCBnbG9iYWxPYmplY3QsIHNpemUpOwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTk1LDE1ICs5NSwxNSBAQCBzdGF0
aWMgSlNWYWx1ZSBpZGJLZXlUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUob3V0QXJyYXkpOwogICAgICAgICB9Ci0gICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6
CisgICAgY2FzZSBLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBrZXktPnN0cmluZygpKTsKLSAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6Cisg
ICAgY2FzZSBLZXlUeXBlOjpEYXRlOgogICAgICAgICByZXR1cm4ganNEYXRlT3JOdWxsKGV4ZWMs
IGtleS0+ZGF0ZSgpKTsKLSAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKKyAgICBjYXNlIEtl
eVR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGtleS0+bnVtYmVyKCkpOwot
ICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgotICAgIGNhc2UgSURCS2V5OjpNYXhUeXBlOgotICAg
IGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKKyAgICBjYXNlIEtleVR5cGU6Ok1pbjoKKyAgICBj
YXNlIEtleVR5cGU6Ok1heDoKKyAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZy
b21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3QKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChhcnJheSk7CiAK
LSAgICAgICAgICAgIElEQktleTo6S2V5QXJyYXkgc3Via2V5czsKKyAgICAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8SURCS2V5Pj4gc3Via2V5czsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBhcnJh
eS0+Z2V0SW5kZXgoZXhlYywgaSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPElEQktleT4gc3Vi
a2V5ID0gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIGl0ZW0sIHN0YWNrKTsKQEAgLTI2NCw3
ICsyNjQsNyBAQCBSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRL
ZXlQYXRoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRGVwcgogICAgIEFTU0VSVCgha2V5UGF0aC5p
c051bGwoKSk7CiAKICAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlU
eXBlKSB7Ci0gICAgICAgIElEQktleTo6S2V5QXJyYXkgcmVzdWx0OworICAgICAgICBWZWN0b3I8
UmVmUHRyPElEQktleT4+IHJlc3VsdDsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFy
cmF5ID0ga2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRl
cm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFy
cmF5W2ldKTsKQEAgLTM1NywxNCArMzU3LDE0IEBAIHZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0CiAg
ICAgaWYgKCFpbmRleEtleSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbmRleE1ldGFk
YXRhLm11bHRpRW50cnkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkg
eworICAgIGlmICghaW5kZXhNZXRhZGF0YS5tdWx0aUVudHJ5IHx8IGluZGV4S2V5LT50eXBlKCkg
IT0gS2V5VHlwZTo6QXJyYXkpIHsKICAgICAgICAgaWYgKCFpbmRleEtleS0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGluZGV4S2V5cy5hcHBlbmQoSURCS2V5RGF0
YShpbmRleEtleS5nZXQoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChpbmRleE1l
dGFkYXRhLm11bHRpRW50cnkpOwotICAgICAgICBBU1NFUlQoaW5kZXhLZXktPnR5cGUoKSA9PSBJ
REJLZXk6OkFycmF5VHlwZSk7CisgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IEtl
eVR5cGU6OkFycmF5KTsKICAgICAgICAgaW5kZXhLZXkgPSBJREJLZXk6OmNyZWF0ZU11bHRpRW50
cnlBcnJheShpbmRleEtleS0+YXJyYXkoKSk7CiAKICAgICAgICAgaWYgKCFpbmRleEtleS0+aXNW
YWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKaW5kZXggNWNiOWFkYS4uNjNmOWIyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zNjIs
NyArMzYyLDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgaWRiS2V5ID0gSURCS2V5OjpjcmVhdGVEYXRlKGRhdGUpOwogICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBhcnJheVR5cGUpIHsKLSAgICAgICAgSURCS2V5OjpLZXlBcnJheSBrZXlBcnJheTsK
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBrZXlBcnJheTsKICAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcnJheTsKICAgICAgICAgaWYgKCFrZXktPmdldEFycmF5KCJhcnJh
eSIsIGFycmF5KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIw
ZTMxOTYuLjc4NTFiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNS0wOS0xNCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgTWFrZSB0aGUgZW51
bSBJREJLZXk6OlR5cGUgaW50byBhIHV0aWxpdHkgZW51bSBjbGFzcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTE0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJREJL
ZXlEYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJREJLZXlEYXRh
Pjo6ZGVjb2RlKToKKworMjAxNS0wOS0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKICAgICAgICAgUmVuYW1lIGN1cnJlbnQgY29uY3JldGUgSURCIGltcGxlbWVudGF0aW9u
IHRvICJMZWdhY3kiLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ5MTE4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMWJkZDNmOS4u
NTZkZDg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTg3NSw3ICs4NzUsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQogCiAgICAgbV9iYWNraW5nU3RvcmUtPm5vdGlmeUN1
cnNvcnNPZkNoYW5nZXModHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpOwogCi0g
ICAgaWYgKHB1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2Jq
ZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50ICYmIGtleS50eXBlID09IElEQktleTo6TnVt
YmVyVHlwZSkgeworICAgIGlmIChwdXRNb2RlICE9IElEQkRhdGFiYXNlQmFja2VuZDo6Q3Vyc29y
VXBkYXRlICYmIG9iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCAmJiBrZXkudHlwZSA9
PSBLZXlUeXBlOjpOdW1iZXIpIHsKICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+dXBkYXRl
S2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBr
ZXlOdW1iZXIsIGtleVdhc0dlbmVyYXRlZCkpIHsKICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3Rv
cmUgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRvciIpKSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IGQ1MjhjZTIuLjdmYmQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTA1LDIwICsxOTA1LDIwIEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxJREJLZXlEYXRhPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29u
c3QgSURCS2V5RGF0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtleURhdGEudHlwZSk7CiAKICAg
ICBzd2l0Y2ggKGtleURhdGEudHlwZSkgewotICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToK
KyAgICBjYXNlIEtleVR5cGU6OkludmFsaWQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURC
S2V5OjpBcnJheVR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpBcnJheToKICAgICAgICAgZW5jb2Rl
ciA8PCBrZXlEYXRhLmFycmF5VmFsdWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5
OjpTdHJpbmdUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBlbmNvZGVy
IDw8IGtleURhdGEuc3RyaW5nVmFsdWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5
OjpEYXRlVHlwZToKLSAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKKyAgICBjYXNlIEtleVR5
cGU6OkRhdGU6CisgICAgY2FzZSBLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGVuY29kZXIgPDwg
a2V5RGF0YS5udW1iZXJWYWx1ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXk6Ok1h
eFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpNYXg6
CisgICAgY2FzZSBLZXlUeXBlOjpNaW46CiAgICAgICAgIC8vIE1heFR5cGUgYW5kIE1pblR5cGUg
YXJlIG9ubHkgdXNlZCBmb3IgY29tcGFyaXNvbiB0byBvdGhlciBrZXlzLgogICAgICAgICAvLyBU
aGV5IHNob3VsZCBuZXZlciBiZSBzZW50IGFjcm9zcyB0aGUgd2lyZS4KICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0xOTM4LDIzICsxOTM4LDIzIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxJREJLZXlEYXRhPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSURCS2V5RGF0
YSYga2V5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoa2V5RGF0YS50eXBl
KSB7Ci0gICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6SW52
YWxpZDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICBj
YXNlIEtleVR5cGU6OkFycmF5OgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEu
YXJyYXlWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgorICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEuc3RyaW5nVmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQktleTo6RGF0
ZVR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgY2FzZSBLZXlUeXBlOjpE
YXRlOgorICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGtleURhdGEubnVtYmVyVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIElEQktleTo6TWF4VHlwZToKLSAgICBjYXNlIElEQktleTo6
TWluVHlwZToKKyAgICBjYXNlIEtleVR5cGU6Ok1heDoKKyAgICBjYXNlIEtleVR5cGU6Ok1pbjoK
ICAgICAgICAgLy8gTWF4VHlwZSBhbmQgTWluVHlwZSBhcmUgb25seSB1c2VkIGZvciBjb21wYXJp
c29uIHRvIG90aGVyIGtleXMuCiAgICAgICAgIC8vIFRoZXkgc2hvdWxkIG5ldmVyIGJlIHNlbnQg
YWNyb3NzIHRoZSB3aXJlLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
</data>
<flag name="review"
          id="286376"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>