<?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>186967</bug_id>
          
          <creation_ts>2018-06-23 05:26:59 -0700</creation_ts>
          <short_desc>[GCrypt] Zero-prefix (if necessary) output of RSA-based encryption and signing operations</short_desc>
          <delta_ts>2018-06-25 23:29:39 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>aboya</cc>
    
    <cc>cturner</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435819</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:26:59 -0700</bug_when>
    <thetext>[GCrypt] Zero-prefix (if necessary) RSA-OAEP encryption, RSA-PSS signing output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435820</commentid>
    <comment_count>1</comment_count>
      <attachid>343431</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:56:02 -0700</bug_when>
    <thetext>Created attachment 343431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435822</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:57:04 -0700</bug_when>
    <thetext>*** Bug 176759 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435824</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:57:12 -0700</bug_when>
    <thetext>*** Bug 180095 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435826</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:57:18 -0700</bug_when>
    <thetext>*** Bug 181139 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435828</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-23 05:57:26 -0700</bug_when>
    <thetext>*** Bug 176358 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435844</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-23 07:25:15 -0700</bug_when>
    <thetext>*** Bug 177529 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435851</commentid>
    <comment_count>7</comment_count>
      <attachid>343431</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-23 07:39:37 -0700</bug_when>
    <thetext>Comment on attachment 343431
Patch

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

Excellent

&gt; Source/WebCore/ChangeLog:11
&gt; +        length of the RSA key. The way we retrieve the MPI data means libgcrypt
&gt; +        can ignore the high-bit zero values and leave us with a valid result
&gt; +        that&apos;s shorter in length compared to the RSA key. For instance, if the

Wow!

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:98
&gt; +    ASSERT(!(key.keySizeInBits() % 8));

I&apos;d probably use ASSERT_WITH_SECURITY_IMPLICATION

&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:183
&gt; +static inline std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiZeroPrefixedData(gcry_mpi_t paramMPI, size_t targetLength)

Isn&apos;t it pretty long for an inline hint? How long does it have to get before you worry about cache locality?

&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:191
&gt; +    // Fill out the output buffer with zeros. Properly determine the zero prefix length,
&gt; +    // and copy the MPI data into memory area following the prefix (if any).

These are good comments. It&apos;s a difficult art, finding the right balance between too much information and not enough. OK, just felt you deserved a compliment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435994</commentid>
    <comment_count>8</comment_count>
      <attachid>343431</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-24 23:45:42 -0700</bug_when>
    <thetext>Comment on attachment 343431
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:98
&gt;&gt; +    ASSERT(!(key.keySizeInBits() % 8));
&gt; 
&gt; I&apos;d probably use ASSERT_WITH_SECURITY_IMPLICATION

OK.

&gt;&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:183
&gt;&gt; +static inline std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiZeroPrefixedData(gcry_mpi_t paramMPI, size_t targetLength)
&gt; 
&gt; Isn&apos;t it pretty long for an inline hint? How long does it have to get before you worry about cache locality?

I don&apos;t think this harms cache locality. `inline` specifier is primarily used to denote functions that are defined in headers and that should remain the same in definition between different source files. Nowadays it&apos;s completely up to the compiler whether it decides to inline the function or not. This I guess primarily depends on compilation options (optimization flags, debugging options, link-time optimizations). If the `inline` specifier is removed, the compiler already complains of the function being unused in whatever translation unit the header is included in.

What I can do is move all the definitions into a standalone GCryptUtilities.cpp source file.

&gt;&gt; Source/WebCore/crypto/gcrypt/GCryptUtilities.h:191
&gt;&gt; +    // and copy the MPI data into memory area following the prefix (if any).
&gt; 
&gt; These are good comments. It&apos;s a difficult art, finding the right balance between too much information and not enough. OK, just felt you deserved a compliment here.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435997</commentid>
    <comment_count>9</comment_count>
      <attachid>343488</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-25 00:03:17 -0700</bug_when>
    <thetext>Created attachment 343488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435998</commentid>
    <comment_count>10</comment_count>
      <attachid>343488</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-25 00:05:53 -0700</bug_when>
    <thetext>Comment on attachment 343488
Patch

Clearing flags on attachment: 343488

Committed r233138: &lt;https://trac.webkit.org/changeset/233138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435999</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-25 00:05:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436000</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-25 00:06:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/41416540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1436414</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-06-25 23:29:39 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #8) 
&gt; What I can do is move all the definitions into a standalone
&gt; GCryptUtilities.cpp source file.
&gt; 

Bug #187033.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343431</attachid>
            <date>2018-06-23 05:56:02 -0700</date>
            <delta_ts>2018-06-25 00:03:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186967-20180623145600.patch</filename>
            <type>text/plain</type>
            <size>19240</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBhNDIyM2ZmYmZmNjk5
N2M1NzQzZDM0Nzk0Mjc0ZWY0ZjE5YzVmNy4uZTE0OGM4NGNjZjQ3ZDY3OTZmNDNkYzA2NzA5Njc5
NmEzM2VmYjM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTA2LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBaZXJv
LXByZWZpeCAoaWYgbmVjZXNzYXJ5KSBvdXRwdXQgb2YgUlNBLWJhc2VkIGVuY3J5cHRpb24gYW5k
IHNpZ25pbmcgb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT3V0cHV0IGZvciBSU0EtYmFzZWQgZW5jcnlwdGlvbiBhbmQgc2lnbmluZyBv
cGVyYXRpb25zIHNob3VsZCBtYXRjaCB0aGUKKyAgICAgICAgbGVuZ3RoIG9mIHRoZSBSU0Ega2V5
LiBUaGUgd2F5IHdlIHJldHJpZXZlIHRoZSBNUEkgZGF0YSBtZWFucyBsaWJnY3J5cHQKKyAgICAg
ICAgY2FuIGlnbm9yZSB0aGUgaGlnaC1iaXQgemVybyB2YWx1ZXMgYW5kIGxlYXZlIHVzIHdpdGgg
YSB2YWxpZCByZXN1bHQKKyAgICAgICAgdGhhdCdzIHNob3J0ZXIgaW4gbGVuZ3RoIGNvbXBhcmVk
IHRvIHRoZSBSU0Ega2V5LiBGb3IgaW5zdGFuY2UsIGlmIHRoZQorICAgICAgICBvdXRwdXQgTVBJ
IGZpdHMgaW50byAyMDQwIGJpdHMgd2hpbGUgYSAyMDQ4LWJpdCBrZXkgd2FzIHVzZWQgd2UnbGwg
ZW5kCisgICAgICAgIHVwIHdpdGggTVBJIGRhdGEgdGhhdCB3aWxsIGJlIGZpdHRlZCBpbnRvIGEg
MjU1LWJ5dGUgVmVjdG9yLCBvbmUgYnl0ZQorICAgICAgICBzaG9ydCBvZiB0aGUgZXhwZWN0ZWQg
b3V0cHV0IGxlbmd0aC4KKworICAgICAgICBUbyBhdm9pZCB0aGlzLCBtcGlaZXJvUHJlZml4ZWRE
YXRhKCkgaXMgbm93IHVzZWQgd2hlbiByZXRyaWV2aW5nIG91dHB1dAorICAgICAgICBvZiB0aGVz
ZSBSU0Egb3BlcmF0aW9ucywgYW5kIHRoZSB2YWx1ZSBvZiB0aGUga2V5IHNpemUgaW4gYnl0ZXMg
aXMKKyAgICAgICAgcGFzc2VkIHRvIGl0LiBUaGlzIGVmZmljaWVudGx5IHByZXBhcmVzIHRoZSBv
dXRwdXQgVmVjdG9yIGFuZCB0aGVuCisgICAgICAgIGNvcGllcyB0aGUgTVBJIGRhdGEgaW50byBp
dCwgcmVzcGVjdGluZyB0aGUgTVBJIGRhdGEgbGVuZ3RoIGFzIHdlbGwgYXMKKyAgICAgICAgdGhl
IGRlc2lyZWQgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0t
IHJlbGV2YW50IHRlc3RzIGFyZSBub3cgc3RhYmxlIChpLmUuIG5vdCBzcG9yYWRpY2FsbHkKKyAg
ICAgICAgZmFpbGluZyBhbnltb3JlKSwgYXNzb2NpYXRlZCBleHBlY3RhdGlvbnMgYXJlIHJlbW92
ZWQuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlKTogQWxzbyB1c2UgbXBpWmVyb1By
ZWZpeGVkRGF0YSgpLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRW5jcnlwdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpw
bGF0Zm9ybVNpZ24pOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToK
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAqIGNyeXB0by9nY3J5
cHQvR0NyeXB0VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjptcGlaZXJvUHJlZml4ZWRE
YXRhKToKKwogMjAxOC0wNi0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbV1RGXSBBZGQgdXNlci1kZWZpbmVkIGxpdGVyYWwgZm9yIEFTQ0lJTGl0
ZXJhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1FQ0RIR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKaW5kZXggMTNkY2Y5NjlmYjIxZDZkYTU2ZDNjYWJmZmZh
NmY5MWYyZWFhMGMxZi4uOTVhY2E5MjRjZWQ5YjBiNTI3MWI2YTVlOGM1NDVjOGE0NzljOTgxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1F
Q0RIR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobUVDREhHQ3J5cHQuY3BwCkBAIC05NywxNyArOTcsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4
cCwgZ2NyeQogICAgICAgICBnY3J5X21waV9wb2ludF9zbmF0Y2hfZ2V0KHhNUEksIG51bGxwdHIs
IG51bGxwdHIsIHBvaW50LnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gbXBp
RGF0YSh4TVBJKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBpZiAoZGF0YS0+c2l6ZSgpIDwga2V5U2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHBhZGRlZERhdGEoa2V5U2l6ZUluQnl0ZXMgLSBkYXRhLT5zaXplKCksIDAp
OwotICAgICAgICBwYWRkZWREYXRhLmFwcGVuZFZlY3RvcigqZGF0YSk7Ci0gICAgICAgICpkYXRh
ID0gV1RGTW92ZShwYWRkZWREYXRhKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YTsKKyAgICBy
ZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YSh4TVBJLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9y
bURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleUVD
JiBwdWJsaWNLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApp
bmRleCAzMDQ0YWNlZmZhMDdkODM1Yzk3MjlmOTdlZDBkZTM0YjViY2Y4NmUzLi5iMmM1MjU2OGI4
Njg4MGIxNTU5MjFhYTg4YmQzZWIwZTBkYzQ5NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5
cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIHNpemVf
dCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBkYXRhIGlu
IGEgYGRhdGFgIHMtZXhwcmVzc2lvbiB1c2luZyBQS0NTIzEgcGFkZGluZy4KICAgICBQQUw6OkdD
cnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBkYXRhU2V4cDsKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4
cF90IGtleVNleHAsIGNvbnN0IFYKICAgICBpZiAoIWFTZXhwKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIG1waURhdGEoYVNleHApOworICAgIHJldHVybiBtcGla
ZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlT
ZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCkBAIC05NSw3ICs5NSw4IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWCiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0tleVJTQSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LnBsYXRmb3JtS2V5KCksIHBsYWluVGV4
dCk7CisgICAgQVNTRVJUKCEoa2V5LmtleVNpemVJbkJpdHMoKSAlIDgpKTsKKyAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LnBsYXRmb3JtS2V5KCksIHBsYWluVGV4dCwga2V5Lmtl
eVNpemVJbkJpdHMoKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggNjViNTk4
MTA2MjAzOWJhNjQwN2Y0Njk2NmQxNTA3ODgwMTNjMTliZC4uMzA1MTkwNTRiMjc2MDdjNTQwZDBi
ZjlkNzc0NzMzZjk2MzEzYzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdDcnlwdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIFBlcmZvcm0g
ZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZl
biBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKQEAgLTgzLDcgKzgzLDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4
cF90IGtleVNleHAsIGNvbnN0IFZlY3QKICAgICBpZiAoIXNTZXhwKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIG1waURhdGEoc1NleHApOworICAgIHJldHVybiBt
cGlaZXJvUHJlZml4ZWREYXRhKHNTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQpAQCAt
MTM2LDcgKzEzNiw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfCiAKIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KQogewotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihrZXkucGxhdGZvcm1LZXkoKSwgZGF0
YSwga2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghKGtleS5rZXlT
aXplSW5CaXRzKCkgJSA4KSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKGtleS5wbGF0
Zm9ybUtleSgpLCBkYXRhLCBrZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwga2V5LmtleVNp
emVJbkJpdHMoKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKaW5kZXggMGMwNjZiNzE3YTQ5ZGY1MDljZjU5N2NhYWIx
YTE2MzkxMDNkNGMxYi4uNDhlMzYxNDdlNjRhYzdhZTBjMzg0MzE4M2RmZGIyYzIwNDA1NDg4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRp
ZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBsYWJlbFZl
Y3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBsYWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFp
blRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4t
dGV4dCBkYXRhIGluIGEgZGF0YSBzLWV4cHJlc3Npb24gdXNpbmcgT0FFUCBwYWRkaW5nLgogICAg
IC8vIEVtcHR5IGxhYmVsIGRhdGEgaXMgcHJvcGVybHkgaGFuZGxlZCBieSBnY3J5X3NleHBfYnVp
bGQoKS4KQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICBpZiAo
IWFTZXhwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIG1waURh
dGEoYVNleHApOworICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXpl
SW5CeXRlcyk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2Ny
eXB0RGVjcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlm
aWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVj
dG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCkBAIC0xMTIsNyArMTEyLDgg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dEVuY3J5cHQoa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5wbGF0Zm9ybUtleSgp
LCBwYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCk7CisgICAgQVNTRVJUKCEoa2V5
LmtleVNpemVJbkJpdHMoKSAlIDgpKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQo
a2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5wbGF0Zm9ybUtleSgpLCBwYXJhbWV0
ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCwga2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwog
ICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQu
Y3BwCmluZGV4IDk1YmZjNDA5MzQ5ZjZmYTQ3NTFhNGEyMTZmMjMzNTJmMTgzMGE1MzAuLjQ4OGJl
NDViN2JiNTkwNzIxMjNmNGJkMjI0OTY3ZDMzN2E2NDRiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0Ny
eXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBr
ZXlTZXhwLCBzaXplX3Qga2V5TGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBz
YWx0TGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRT
aWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNh
bHRMZW5ndGgsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAvLyBQZXJmb3JtIGRpZ2Vz
dCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0
YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CkBAIC04NCwxMiArODQsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgc2l6ZV90IGtleQogICAgIGlmICghc1NleHApCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgTVBJIGRhdGEgc2l6ZSAtLSBpdCBzaG91
bGQgbWF0Y2ggdGhlIGtleSBsZW5ndGggaW4gYnl0ZXMuCi0gICAgYXV0byBzaWduYXR1cmUgPSBt
cGlEYXRhKHNTZXhwKTsKLSAgICBpZiAoIXNpZ25hdHVyZSB8fCBzaWduYXR1cmUtPnNpemUoKSAh
PSBrZXlMZW5ndGggLyA4KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0
dXJuIHNpZ25hdHVyZTsKKyAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5
U2l6ZUluQnl0ZXMpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJp
ZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNhbHRMZW5ndGgpCkBAIC0xNDIsNyArMTM3
LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90
IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihr
ZXkucGxhdGZvcm1LZXkoKSwga2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwga2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgQVNTRVJUKCEo
a2V5LmtleVNpemVJbkJpdHMoKSAlIDgpKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24o
a2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIGtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCBw
YXJhbWV0ZXJzLnNhbHRMZW5ndGgsIGtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsKICAgICBpZiAo
IW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAg
ICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9HQ3J5cHRVdGlsaXRpZXMuaAppbmRleCA2YmQxZTE1YTQyODM4MzIzYWVmNTRkNTQwNTk1
Nzc2MDBmYmRhNDFkLi5kOWE2N2M2ZDFlYTJiYmNmYTgxN2Q5OTkwOGZiNGQwZmUzMmRmYjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKQEAg
LTE4MCw2ICsxODAsMjYgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gbXBpRGF0YShnY3J5X21waV90IHBhcmFtTVBJKQogICAgIHJldHVybiBvdXRwdXQ7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9Q
cmVmaXhlZERhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldExlbmd0aCkKK3sK
KyAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIGxlbmd0aC4gQmFpbCBpZiB0aGUgcmV0cmlldmVkIGxl
bmd0aCBpcyBsb25nZXIgdGhhbiB0YXJnZXQgbGVuZ3RoLgorICAgIGF1dG8gbGVuZ3RoID0gbXBp
TGVuZ3RoKHBhcmFtTVBJKTsKKyAgICBpZiAoIWxlbmd0aCB8fCAqbGVuZ3RoID4gdGFyZ2V0TGVu
Z3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLy8gRmlsbCBvdXQgdGhl
IG91dHB1dCBidWZmZXIgd2l0aCB6ZXJvcy4gUHJvcGVybHkgZGV0ZXJtaW5lIHRoZSB6ZXJvIHBy
ZWZpeCBsZW5ndGgsCisgICAgLy8gYW5kIGNvcHkgdGhlIE1QSSBkYXRhIGludG8gbWVtb3J5IGFy
ZWEgZm9sbG93aW5nIHRoZSBwcmVmaXggKGlmIGFueSkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG91
dHB1dCh0YXJnZXRMZW5ndGgsIDApOworICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSB0YXJnZXRM
ZW5ndGggLSAqbGVuZ3RoOworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50
KEdDUllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSArIHByZWZpeExlbmd0aCwgdGFyZ2V0TGVu
Z3RoLCBudWxscHRyLCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gb3V0cHV0OworfQorCiBzdGF0
aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4
cF90IHBhcmFtU2V4cCkKIHsKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBp
biB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKQEAgLTE5MCw2ICsyMTAsMTYgQEAg
c3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5
X3NleHBfdCBwYXJhbVNleHApCiAgICAgcmV0dXJuIG1waURhdGEocGFyYW1NUEkpOwogfQogCitz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4
ZWREYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCwgc2l6ZV90IHRhcmdldExlbmd0aCkKK3sKKyAg
ICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAo
bmFtZSBtcGktZGF0YSkKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFt
TVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7Cisg
ICAgaWYgKCFwYXJhbU1QSSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKHBhcmFtTVBJLCB0YXJnZXRMZW5ndGgpOworfQorCiBz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRh
KGdjcnlfbXBpX3QgbXBpKQogewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEobXBpKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhOGY3MDQ0MmYyOWJiOTU2YjhjMWFiZWVkOWQ5MDhjNmM3MzAzMjk3Li40NGQwZWVlY2JkZTUz
MWE0MjA2YTUzZjBlNmNjZDU2OTJhZGY5NTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgt
MDYtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
Q3J5cHRdIFplcm8tcHJlZml4IChpZiBuZWNlc3NhcnkpIFJTQS1PQUVQIGVuY3J5cHRpb24sIFJT
QS1QU1Mgc2lnbmluZyBvdXRwdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4Njk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZSBmbGFr
eSBmYWlsdXJlcyBmb3IgUlNBLU9BRVAgYW5kIFJTQS1QU1MgdGVzdHMuCisgICAgICAgICogcGxh
dGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorCiAyMDE4LTA2LTIyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIFdlYlNvY2tldCBp
biBXYXRjaE9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGRhZjIyNzU1NGMzZjc5ZWVmZTc5OTQ3MWM3ZmU3Y2YxZDgwOTgzZjYuLjlhYjNlNjY4NjU4YmFl
MzA1YzZlZTgwZTQwZjE1N2RmNGQ2OGRjZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xODQ3LDEwICsxODQ3LDYgQEAgd2Via2l0Lm9yZy9iLzE3NjE3
NCBtZWRpYS9ldmVudC1xdWV1ZS1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xNzY3NTcgZmFzdC9oaWRwaS9maWx0ZXJzLWludmVydC5odG1sIFsgUGFzcyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNzY3NTcgZmFzdC9oaWRwaS9maWx0ZXJzLW11bHRp
cGxlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc2NzU5
IGNyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtleS13cmFwLWp3ay1vY3Qta2V5Lmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3Njc1OSBjcnlwdG8vd29ya2Vycy9zdWJ0
bGUvcnNhLW9hZXAtaW1wb3J0LWtleS1lbmNyeXB0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzE3Njc1OSBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1rZXktZW5jcnlw
dC1sYWJlbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE3NzUyNyBbIFJl
bGVhc2UgXSBmYXN0L2hpZHBpL2ZpbHRlcnMtYmx1ci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3NzUzMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1hNTEh0dHBSZXF1ZXN0L3NldHJlcXVlc3RoZWFkZXItaGVhZGVyLWFsbG93ZWQuaHRtIFsg
UGFzcyBGYWlsdXJlIF0KQEAgLTE4NjYsOCArMTg2Miw2IEBAIHdlYmtpdC5vcmcvYi8xNzk0NDQg
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3Vy
ZS1yCiAKIHdlYmtpdC5vcmcvYi8xNzk3NTUgbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLmh0bWwg
WyBQYXNzIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzE4MDA5NSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9zaWduX3ZlcmlmeS90ZXN0X3JzYV9wc3MuaHR0cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xODAzNjkgaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUteGhyLWluLW1haW4tZnJhbWUuaHRtbCBbIFBh
c3MgQ3Jhc2ggXQogCiB3ZWJraXQub3JnL2IvMTc5MTc0IGluc3BlY3Rvci9jb25zb2xlL3dlYmNv
cmUtbG9nZ2luZy5odG1sIFsgRmFpbHVyZSBDcmFzaCBdCkBAIC0xODc2LDggKzE4NzAsNiBAQCB3
ZWJraXQub3JnL2IvMTgxMDMwIHdhc20vaWZyYW1lLXBvc3RtZXNzYWdlLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3OTk0OCBbIFJlbGVhc2UgXSBmYXN0L2hpZHBpL2ZpbHRl
cnMtcmVmZXJlbmNlLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE4MTAzMSBmYXN0L2ZyYW1lcy9jcmFzaC13aGVuLWlmcmFtZS1pcy1yZW1vdmUtaW4tZXZlbnRo
YW5kbGVyLmh0bWwgWyBQYXNzIENyYXNoIF0KIAotd2Via2l0Lm9yZy9iLzE4MTEzOSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9lbmNyeXB0X2RlY3J5cHQvdGVz
dF9yc2Ffb2FlcC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE4
MTUyOCBodHRwL3Rlc3RzL2NhY2hlL21lbW9yeS1jYWNoZS1wcnVuaW5nLmh0bWwgWyBQYXNzIENy
YXNoIF0KIAogd2Via2l0Lm9yZy9iLzE4MTUyOSBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3dl
YmZvbnQvYW5pbWF0aW9uLWFzc2VydC5odG1sIFsgUGFzcyBDcmFzaCBdCkBAIC0xOTU0LDcgKzE5
NDYsNiBAQCB3ZWJraXQub3JnL2IvMTg2NjM4IGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1iaWRp
LXJ1bi5odG1sIFsgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvd3JhcEtleV91bndyYXBLZXkvd3Jh
cEtleV91bndyYXBLZXkuaHR0cHMud29ya2VyLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0
Lm9yZy9iLzE4NjYzOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1hNTEh0dHBSZXF1
ZXN0L3NlbmQtdGltZW91dC1ldmVudHMuaHRtIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcv
Yi8xODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaW50ZXJs
ZWF2ZWQtY3Vyc29ycy1sYXJnZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KLXdlYmtpdC5vcmcvYi8x
ODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvc2lnbl92
ZXJpZnkvcnNhX3Bzcy5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMTg2NjM4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBh
cGlzL3RpbWVycy9uZWdhdGl2ZS1zZXR0aW1lb3V0Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Vi
a2l0Lm9yZy9iLzE4NjYzOCBmYXN0L3NlbGVjdG9ycy9ob3Zlci1pbnZhbGlkYXRpb24tZGVzY2Vu
ZGFudC1keW5hbWljLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzE4NjYzOCBm
YXN0L3NlbGVjdG9ycy9ob3Zlci1xdWlya3MuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCkBAIC0xOTYy
LDcgKzE5NTMsNiBAQCB3ZWJraXQub3JnL2IvMTg2NjM4IGZhc3Qvc2VsZWN0b3JzL2hvdmVyLXN0
cmljdC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggZmFzdC9zZWxl
Y3RvcnMvdW5xdWFsaWZpZWQtaG92ZXItc3RyaWN0Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Vi
a2l0Lm9yZy9iLzE4NjYzOCBjb21wb3NpdGluZy9wYXR0ZXJucy9kaXJlY3QtcGF0dGVybi1jb21w
b3NpdGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODY2
MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXRobWwvcmVsYXRpb25zL2h0bWw1
LXRyZWUvY29sb3ItYXR0cmlidXRlcy0xLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQotd2Via2l0Lm9y
Zy9iLzE4NjYzOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9l
bmNyeXB0X2RlY3J5cHQvcnNhLmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIAog
d2Via2l0Lm9yZy9iLzE4NjY2NCBtZWRpYS92aWRlby1wbGF5c2lubGluZS5odG1sIFsgRmFpbHVy
ZSBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA3ZWZmYWVlYTgxYWMyODdiNzE1YjhmNjZmYjFmMmFlZTE3Njc3NTRkLi4zMTMyZDBlNzA3YmIz
NmNmNjM5MWMxMWY3OGUwODg4ZDQwMzQwZWZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAyNiw4ICsxMDI2LDYgQEAgd2Via2l0Lm9yZy9iLzE4NTU5
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2VuY3J5cHRlZC1tZWRpYS9jbGVhcmtl
eS1tcDQKIHdlYmtpdC5vcmcvYi8xNzI4MTUgaW1wb3J0ZWQvdzNjL2kxOG4vYmlkaS9iaWRpLXBs
YWludGV4dC0wMTEuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8xNzYxNzQgbWVkaWEvZXZlbnQtcXVldWUtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0K
LXdlYmtpdC5vcmcvYi8xNzYzNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJD
cnlwdG9BUEkvZW5jcnlwdF9kZWNyeXB0L3JzYS5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUg
UGFzcyBdCiB3ZWJraXQub3JnL2IvMTc3MjI2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3dyYXBLZXlfdW53cmFwS2V5Lmh0dHBz
Lndvcmtlci5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogIyBBcHBhcmVudGx5IGZhaWxzIG9uIE1h
YywgYnV0IEkgZG9uJ3Qga25vdyBmb3Igd2hhdCByZWFzb25zLiBJdCBwYXNzZXMgb24gR1RLL1dQ
RS4KQEAgLTExODYsOCArMTE4NCw2IEBAIHdlYmtpdC5vcmcvYi8xODIzMTcgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBGYWlsCiAKIHdlYmtp
dC5vcmcvYi8xODIyNDAgc3ZnL2FuaW1hdGlvbnMvc3ZnZW51bS1hbmltYXRpb24tNy5odG1sIFsg
UGFzcyBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8xODExMzkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZW5jcnlwdF9kZWNyeXB0L3Rlc3RfcnNhX29hZXAuaHR0
cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xODQwODYgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9hbmltYXRpb24tbW9kZWwvYW5p
bWF0aW9uLXR5cGVzL2FjY3VtdWxhdGlvbi1wZXItcHJvcGVydHkuaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzE4NDA4NiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1h
bmltYXRpb25zL2FuaW1hdGlvbi1tb2RlbC9hbmltYXRpb24tdHlwZXMvaW50ZXJwb2xhdGlvbi1w
ZXItcHJvcGVydHkuaHRtbCBbIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343488</attachid>
            <date>2018-06-25 00:03:17 -0700</date>
            <delta_ts>2018-06-25 00:03:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186967-20180625090316.patch</filename>
            <type>text/plain</type>
            <size>19466</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZmYjAyMWFkNWY4NDhl
MDZmYjc4NDljMGM5ODBkOGY0NjQ0N2IyMS4uYjg3ZjJjM2I1NTVjYTQ0NTAzYTFhMzM2N2ExYjU1
YmVjOTRlOWUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTA2LTI0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBaZXJv
LXByZWZpeCAoaWYgbmVjZXNzYXJ5KSBvdXRwdXQgb2YgUlNBLWJhc2VkIGVuY3J5cHRpb24gYW5k
IHNpZ25pbmcgb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnph
cm8uCisKKyAgICAgICAgT3V0cHV0IGZvciBSU0EtYmFzZWQgZW5jcnlwdGlvbiBhbmQgc2lnbmlu
ZyBvcGVyYXRpb25zIHNob3VsZCBtYXRjaCB0aGUKKyAgICAgICAgbGVuZ3RoIG9mIHRoZSBSU0Eg
a2V5LiBUaGUgd2F5IHdlIHJldHJpZXZlIHRoZSBNUEkgZGF0YSBtZWFucyBsaWJnY3J5cHQKKyAg
ICAgICAgY2FuIGlnbm9yZSB0aGUgaGlnaC1iaXQgemVybyB2YWx1ZXMgYW5kIGxlYXZlIHVzIHdp
dGggYSB2YWxpZCByZXN1bHQKKyAgICAgICAgdGhhdCdzIHNob3J0ZXIgaW4gbGVuZ3RoIGNvbXBh
cmVkIHRvIHRoZSBSU0Ega2V5LiBGb3IgaW5zdGFuY2UsIGlmIHRoZQorICAgICAgICBvdXRwdXQg
TVBJIGZpdHMgaW50byAyMDQwIGJpdHMgd2hpbGUgYSAyMDQ4LWJpdCBrZXkgd2FzIHVzZWQgd2Un
bGwgZW5kCisgICAgICAgIHVwIHdpdGggTVBJIGRhdGEgdGhhdCB3aWxsIGJlIGZpdHRlZCBpbnRv
IGEgMjU1LWJ5dGUgVmVjdG9yLCBvbmUgYnl0ZQorICAgICAgICBzaG9ydCBvZiB0aGUgZXhwZWN0
ZWQgb3V0cHV0IGxlbmd0aC4KKworICAgICAgICBUbyBhdm9pZCB0aGlzLCBtcGlaZXJvUHJlZml4
ZWREYXRhKCkgaXMgbm93IHVzZWQgd2hlbiByZXRyaWV2aW5nIG91dHB1dAorICAgICAgICBvZiB0
aGVzZSBSU0Egb3BlcmF0aW9ucywgYW5kIHRoZSB2YWx1ZSBvZiB0aGUga2V5IHNpemUgaW4gYnl0
ZXMgaXMKKyAgICAgICAgcGFzc2VkIHRvIGl0LiBUaGlzIGVmZmljaWVudGx5IHByZXBhcmVzIHRo
ZSBvdXRwdXQgVmVjdG9yIGFuZCB0aGVuCisgICAgICAgIGNvcGllcyB0aGUgTVBJIGRhdGEgaW50
byBpdCwgcmVzcGVjdGluZyB0aGUgTVBJIGRhdGEgbGVuZ3RoIGFzIHdlbGwgYXMKKyAgICAgICAg
dGhlIGRlc2lyZWQgbGVuZ3RoIG9mIHRoZSBvdXRwdXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0tIHJlbGV2YW50IHRlc3RzIGFyZSBub3cgc3RhYmxlIChpLmUuIG5vdCBzcG9yYWRpY2FsbHkK
KyAgICAgICAgZmFpbGluZyBhbnltb3JlKSwgYXNzb2NpYXRlZCBleHBlY3RhdGlvbnMgYXJlIHJl
bW92ZWQuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlKTogQWxzbyB1c2UgbXBpWmVy
b1ByZWZpeGVkRGF0YSgpLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRT
aWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0
KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAqIGNyeXB0by9n
Y3J5cHQvR0NyeXB0VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjptcGlaZXJvUHJlZml4
ZWREYXRhKToKKwogMjAxOC0wNi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWlsXSBVc2UgdGhlIE1haWwgVmlld2VyIHdpZHRoIGFzIHRoZSBiYXNlIGZv
ciByZXNvbHZpbmcgaG9yaXpvbnRhbCB2aWV3cG9ydCB1bml0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAK
aW5kZXggMTNkY2Y5NjlmYjIxZDZkYTU2ZDNjYWJmZmZhNmY5MWYyZWFhMGMxZi4uOTVhY2E5MjRj
ZWQ5YjBiNTI3MWI2YTVlOGM1NDVjOGE0NzljOTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCkBA
IC05NywxNyArOTcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeQogICAgICAgICBnY3J5X21w
aV9wb2ludF9zbmF0Y2hfZ2V0KHhNUEksIG51bGxwdHIsIG51bGxwdHIsIHBvaW50LnJlbGVhc2Uo
KSk7CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gbXBpRGF0YSh4TVBJKTsKLSAgICBpZiAoIWRh
dGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoZGF0YS0+c2l6ZSgp
IDwga2V5U2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBhZGRlZERhdGEo
a2V5U2l6ZUluQnl0ZXMgLSBkYXRhLT5zaXplKCksIDApOwotICAgICAgICBwYWRkZWREYXRhLmFw
cGVuZFZlY3RvcigqZGF0YSk7Ci0gICAgICAgICpkYXRhID0gV1RGTW92ZShwYWRkZWREYXRhKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0
YSh4TVBJLCBrZXlTaXplSW5CeXRlcyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRv
S2V5RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleUVDJiBwdWJsaWNLZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCAzMDQ0YWNlZmZhMDdkODM1Yzk3
MjlmOTdlZDBkZTM0YjViY2Y4NmUzLi4xNWFiOGUwNWU2ZjlmMjA1ZmFhNThlM2NkYjRmZjM3ZWIy
YWY4YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAg
ICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBkYXRhIGluIGEgYGRhdGFgIHMtZXhwcmVzc2lvbiB1
c2luZyBQS0NTIzEgcGFkZGluZy4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90
PiBkYXRhU2V4cDsKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFYKICAg
ICBpZiAoIWFTZXhwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJu
IG1waURhdGEoYVNleHApOworICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBr
ZXlTaXplSW5CeXRlcyk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNpcGhlclRleHQpCkBAIC05NSw3ICs5NSw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBW
CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVu
Y3J5cHQoa2V5LnBsYXRmb3JtS2V5KCksIHBsYWluVGV4dCk7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighKGtleS5rZXlTaXplSW5CaXRzKCkgJSA4KSk7Cisg
ICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBwbGFpblRl
eHQsIGtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUo
Km91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmlu
ZGV4IDY1YjU5ODEwNjIwMzliYTY0MDdmNDY5NjZkMTUwNzg4MDEzYzE5YmQuLmVjM2I2MWFiZWU0
NGE3YzE3ZTlhMjY4YzFiMzJiNmZlYTgzMGYxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWdu
KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhw
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKICAgICAv
LyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBv
biB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CkBAIC04Myw3
ICs4Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2ln
bihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0CiAgICAgaWYgKCFzU2V4cCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBtcGlEYXRhKHNTZXhwKTsKKyAg
ICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQog
CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRp
ZmllcikKQEAgLTEzNiw3ICsxMzYsOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5
cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24oa2V5LnBsYXRmb3Jt
S2V5KCksIGRhdGEsIGtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCEoa2V5LmtleVNpemVJbkJpdHMoKSAl
IDgpKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24oa2V5LnBsYXRmb3JtS2V5KCksIGRh
dGEsIGtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCBrZXkua2V5U2l6ZUluQml0cygpIC8g
OCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
R0NyeXB0LmNwcAppbmRleCAwYzA2NmI3MTdhNDlkZjUwOWNmNTk3Y2FhYjFhMTYzOTEwM2Q0YzFi
Li4xYTY2OGYyNzE2YzU0YmQ2MWJmNDQ4ZWY5MzI3OTBjNjdmZjI1OTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQR0NyeXB0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBnY3J5X3Nl
eHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGxhYmVsVmVjdG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCwgc2l6ZV90
IGtleVNpemVJbkJ5dGVzKQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4g
YSBkYXRhIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFi
ZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgpLgpAQCAtNzAs
NyArNzAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVu
Y3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogICAgIGlmICghYVNleHApCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gbXBpRGF0YShhU2V4cCk7Cisg
ICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEoYVNleHAsIGtleVNpemVJbkJ5dGVzKTsKIH0K
IAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIGdjcnlfc2V4
cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbGFiZWxWZWN0b3IsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKQEAgLTExMiw3ICsxMTIsOCBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBoYQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcGxhaW5UZXh0KQogewotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChrZXku
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwga2V5LnBsYXRmb3JtS2V5KCksIHBhcmFtZXRlcnMu
bGFiZWxWZWN0b3IoKSwgcGxhaW5UZXh0KTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCEoa2V5LmtleVNpemVJbkJpdHMoKSAlIDgpKTsKKyAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5w
bGF0Zm9ybUtleSgpLCBwYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCwga2V5Lmtl
eVNpemVJbkJpdHMoKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCmluZGV4IDk1YmZjNDA5MzQ5ZjZmYTQ3NTFhNGEyMTZm
MjMzNTJmMTgzMGE1MzAuLjkyMmNjOWIwNTgzYTYyYjI1MjNjYjk5M2NkZTYxZjRiN2JhNmQ5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBX1BTU0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2Ny
eXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBzaXplX3Qga2V5TGVuZ3RoLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGht
SWRlbnRpZmllciwgc2l6ZV90IHNhbHRMZW5ndGgsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsK
ICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29y
aXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CkBA
IC04NCwxMiArODQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgc2l6ZV90IGtleQogICAgIGlmICghc1NleHAp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAvLyBWYWxpZGF0ZSB0aGUgTVBJ
IGRhdGEgc2l6ZSAtLSBpdCBzaG91bGQgbWF0Y2ggdGhlIGtleSBsZW5ndGggaW4gYnl0ZXMuCi0g
ICAgYXV0byBzaWduYXR1cmUgPSBtcGlEYXRhKHNTZXhwKTsKLSAgICBpZiAoIXNpZ25hdHVyZSB8
fCBzaWduYXR1cmUtPnNpemUoKSAhPSBrZXlMZW5ndGggLyA4KQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHNpZ25hdHVyZTsKKyAgICByZXR1cm4gbXBpWmVyb1By
ZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNhbHRM
ZW5ndGgpCkBAIC0xNDIsNyArMTM3LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2Ny
eXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KIAogRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9y
bVNpZ24oQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0U2lnbihrZXkucGxhdGZvcm1LZXkoKSwga2V5LmtleVNpemVJbkJpdHMo
KSwgZGF0YSwga2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHBhcmFtZXRlcnMuc2FsdExl
bmd0aCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighKGtl
eS5rZXlTaXplSW5CaXRzKCkgJSA4KSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKGtl
eS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBrZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcGFy
YW1ldGVycy5zYWx0TGVuZ3RoLCBrZXkua2V5U2l6ZUluQml0cygpIC8gOCk7CiAgICAgaWYgKCFv
dXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAg
IHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvR0NyeXB0VXRpbGl0aWVzLmgKaW5kZXggNmJkMWUxNWE0MjgzODMyM2FlZjU0ZDU0MDU5NTc3
NjAwZmJkYTQxZC4uZDlhNjdjNmQxZWEyYmJjZmE4MTdkOTk5MDhmYjRkMGZlMzJkZmIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oCkBAIC0x
ODAsNiArMTgwLDI2IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKICAgICByZXR1cm4gb3V0cHV0OwogfQog
CitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJl
Zml4ZWREYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEksIHNpemVfdCB0YXJnZXRMZW5ndGgpCit7Cisg
ICAgLy8gUmV0cmlldmUgdGhlIE1QSSBsZW5ndGguIEJhaWwgaWYgdGhlIHJldHJpZXZlZCBsZW5n
dGggaXMgbG9uZ2VyIHRoYW4gdGFyZ2V0IGxlbmd0aC4KKyAgICBhdXRvIGxlbmd0aCA9IG1waUxl
bmd0aChwYXJhbU1QSSk7CisgICAgaWYgKCFsZW5ndGggfHwgKmxlbmd0aCA+IHRhcmdldExlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIEZpbGwgb3V0IHRoZSBv
dXRwdXQgYnVmZmVyIHdpdGggemVyb3MuIFByb3Blcmx5IGRldGVybWluZSB0aGUgemVybyBwcmVm
aXggbGVuZ3RoLAorICAgIC8vIGFuZCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIG1lbW9yeSBhcmVh
IGZvbGxvd2luZyB0aGUgcHJlZml4IChpZiBhbnkpLgorICAgIFZlY3Rvcjx1aW50OF90PiBvdXRw
dXQodGFyZ2V0TGVuZ3RoLCAwKTsKKyAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gdGFyZ2V0TGVu
Z3RoIC0gKmxlbmd0aDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChH
Q1JZTVBJX0ZNVF9VU0csIG91dHB1dC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIHRhcmdldExlbmd0
aCwgbnVsbHB0ciwgcGFyYW1NUEkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIG91dHB1dDsKK30KKwogc3RhdGlj
IGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBf
dCBwYXJhbVNleHApCiB7CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4g
dGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCkBAIC0xOTAsNiArMjEwLDE2IEBAIHN0
YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9z
ZXhwX3QgcGFyYW1TZXhwKQogICAgIHJldHVybiBtcGlEYXRhKHBhcmFtTVBJKTsKIH0KIAorc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVk
RGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAsIHNpemVfdCB0YXJnZXRMZW5ndGgpCit7CisgICAg
Ly8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5h
bWUgbXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1Q
SShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOworICAg
IGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShwYXJhbU1QSSwgdGFyZ2V0TGVuZ3RoKTsKK30KKwogc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShn
Y3J5X21waV90IG1waSkKIHsKICAgICBhdXRvIGRhdGEgPSBtcGlEYXRhKG1waSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NDk3ZTI3YTMwNTkyMzM4YTBkOGNmZjc5NTI5YjY5OTRkZDY5ZjEzNC4uMTFhMjZiYzdjNGYzZWYz
YjMwNTQ0OGVjM2M3MjU5ZTk4ZGQ3Y2YwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA2
LTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0Ny
eXB0XSBaZXJvLXByZWZpeCAoaWYgbmVjZXNzYXJ5KSBSU0EtT0FFUCBlbmNyeXB0aW9uLCBSU0Et
UFNTIHNpZ25pbmcgb3V0cHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY5NjcKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFy
by4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmUgZmxh
a3kgZmFpbHVyZXMgZm9yIFJTQS1PQUVQIGFuZCBSU0EtUFNTIHRlc3RzLgorICAgICAgICAqIHBs
YXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKwogMjAxOC0wNi0yMyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWlsXSBVc2UgdGhlIE1haWwg
Vmlld2VyIHdpZHRoIGFzIHRoZSBiYXNlIGZvciByZXNvbHZpbmcgaG9yaXpvbnRhbCB2aWV3cG9y
dCB1bml0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBk
YWYyMjc1NTRjM2Y3OWVlZmU3OTk0NzFjN2ZlN2NmMWQ4MDk4M2Y2Li45YWIzZTY2ODY1OGJhZTMw
NWM2ZWU4MGU0MGYxNTdkZjRkNjhkY2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTg0NywxMCArMTg0Nyw2IEBAIHdlYmtpdC5vcmcvYi8xNzYxNzQg
bWVkaWEvZXZlbnQtcXVldWUtY3Jhc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTc2NzU3IGZhc3QvaGlkcGkvZmlsdGVycy1pbnZlcnQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTc2NzU3IGZhc3QvaGlkcGkvZmlsdGVycy1tdWx0aXBs
ZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3Njc1OSBj
cnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1rZXktd3JhcC1qd2stb2N0LWtleS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNzY3NTkgY3J5cHRvL3dvcmtlcnMvc3VidGxl
L3JzYS1vYWVwLWltcG9ydC1rZXktZW5jcnlwdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xNzY3NTkgY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1pbXBvcnQta2V5LWVuY3J5cHQt
bGFiZWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xNzc1MjcgWyBSZWxl
YXNlIF0gZmFzdC9oaWRwaS9maWx0ZXJzLWJsdXIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzc1MzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9YTUxIdHRwUmVxdWVzdC9zZXRyZXF1ZXN0aGVhZGVyLWhlYWRlci1hbGxvd2VkLmh0bSBbIFBh
c3MgRmFpbHVyZSBdCkBAIC0xODY2LDggKzE4NjIsNiBAQCB3ZWJraXQub3JnL2IvMTc5NDQ0IGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUt
cgogCiB3ZWJraXQub3JnL2IvMTc5NzU1IG1lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS5odG1sIFsg
UGFzcyBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8xODAwOTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvc2lnbl92ZXJpZnkvdGVzdF9yc2FfcHNzLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTgwMzY5IGh0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXhoci1pbi1tYWluLWZyYW1lLmh0bWwgWyBQYXNz
IENyYXNoIF0KIAogd2Via2l0Lm9yZy9iLzE3OTE3NCBpbnNwZWN0b3IvY29uc29sZS93ZWJjb3Jl
LWxvZ2dpbmcuaHRtbCBbIEZhaWx1cmUgQ3Jhc2ggXQpAQCAtMTg3Niw4ICsxODcwLDYgQEAgd2Vi
a2l0Lm9yZy9iLzE4MTAzMCB3YXNtL2lmcmFtZS1wb3N0bWVzc2FnZS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xNzk5NDggWyBSZWxlYXNlIF0gZmFzdC9oaWRwaS9maWx0ZXJz
LXJlZmVyZW5jZS5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
ODEwMzEgZmFzdC9mcmFtZXMvY3Jhc2gtd2hlbi1pZnJhbWUtaXMtcmVtb3ZlLWluLWV2ZW50aGFu
ZGxlci5odG1sIFsgUGFzcyBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8xODExMzkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZW5jcnlwdF9kZWNyeXB0L3Rlc3Rf
cnNhX29hZXAuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8xODE1
MjggaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy5odG1sIFsgUGFzcyBDcmFz
aCBdCiAKIHdlYmtpdC5vcmcvYi8xODE1MjkgaW1wb3J0ZWQvYmxpbmsvaHR0cC90ZXN0cy93ZWJm
b250L2FuaW1hdGlvbi1hc3NlcnQuaHRtbCBbIFBhc3MgQ3Jhc2ggXQpAQCAtMTk1NCw3ICsxOTQ2
LDYgQEAgd2Via2l0Lm9yZy9iLzE4NjYzOCBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYmlkaS1y
dW4uaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3dyYXBLZXlfdW53cmFwS2V5L3dyYXBL
ZXlfdW53cmFwS2V5Lmh0dHBzLndvcmtlci5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5v
cmcvYi8xODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVz
dC9zZW5kLXRpbWVvdXQtZXZlbnRzLmh0bSBbIEZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2Iv
MTg2NjM4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2ludGVybGVh
dmVkLWN1cnNvcnMtbGFyZ2UuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCi13ZWJraXQub3JnL2IvMTg2
NjM4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJL3NpZ25fdmVy
aWZ5L3JzYV9wc3MuaHR0cHMud29ya2VyLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzE4NjYzOCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBp
cy90aW1lcnMvbmVnYXRpdmUtc2V0dGltZW91dC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8xODY2MzggZmFzdC9zZWxlY3RvcnMvaG92ZXItaW52YWxpZGF0aW9uLWRlc2NlbmRh
bnQtZHluYW1pYy5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xODY2MzggZmFz
dC9zZWxlY3RvcnMvaG92ZXItcXVpcmtzLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQpAQCAtMTk2Miw3
ICsxOTUzLDYgQEAgd2Via2l0Lm9yZy9iLzE4NjYzOCBmYXN0L3NlbGVjdG9ycy9ob3Zlci1zdHJp
Y3QuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg2NjM4IGZhc3Qvc2VsZWN0
b3JzL3VucXVhbGlmaWVkLWhvdmVyLXN0cmljdC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8xODY2MzggY29tcG9zaXRpbmcvcGF0dGVybnMvZGlyZWN0LXBhdHRlcm4tY29tcG9z
aXRpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTg2NjM4
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0aG1sL3JlbGF0aW9ucy9odG1sNS10
cmVlL2NvbG9yLWF0dHJpYnV0ZXMtMS5odG1sIFsgVGltZW91dCBQYXNzIF0KLXdlYmtpdC5vcmcv
Yi8xODY2MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZW5j
cnlwdF9kZWNyeXB0L3JzYS5odHRwcy53b3JrZXIuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKIHdl
YmtpdC5vcmcvYi8xODY2NjQgbWVkaWEvdmlkZW8tcGxheXNpbmxpbmUuaHRtbCBbIEZhaWx1cmUg
UGFzcyBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
N2VmZmFlZWE4MWFjMjg3YjcxNWI4ZjY2ZmIxZjJhZWUxNzY3NzU0ZC4uMzEzMmQwZTcwN2JiMzZj
ZjYzOTFjMTFmNzhlMDg4OGQ0MDM0MGVmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEwMjYsOCArMTAyNiw2IEBAIHdlYmtpdC5vcmcvYi8xODU1OTQg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9lbmNyeXB0ZWQtbWVkaWEvY2xlYXJrZXkt
bXA0CiB3ZWJraXQub3JnL2IvMTcyODE1IGltcG9ydGVkL3czYy9pMThuL2JpZGkvYmlkaS1wbGFp
bnRleHQtMDExLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTc2MTc0IG1lZGlhL2V2ZW50LXF1ZXVlLWNyYXNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMTc2MzU4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5
cHRvQVBJL2VuY3J5cHRfZGVjcnlwdC9yc2EuaHR0cHMud29ya2VyLmh0bWwgWyBGYWlsdXJlIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzE3NzIyNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vud3JhcEtleS5odHRwcy53
b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgQXBwYXJlbnRseSBmYWlscyBvbiBNYWMs
IGJ1dCBJIGRvbid0IGtub3cgZm9yIHdoYXQgcmVhc29ucy4gSXQgcGFzc2VzIG9uIEdUSy9XUEUu
CkBAIC0xMTg2LDggKzExODQsNiBAQCB3ZWJraXQub3JnL2IvMTgyMzE3IGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhlcmluZy5odG1sIFsgRmFpbAogCiB3ZWJraXQu
b3JnL2IvMTgyMjQwIHN2Zy9hbmltYXRpb25zL3N2Z2VudW0tYW5pbWF0aW9uLTcuaHRtbCBbIFBh
c3MgQ3Jhc2ggXQogCi13ZWJraXQub3JnL2IvMTgxMTM5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvV2ViQ3J5cHRvQVBJL2VuY3J5cHRfZGVjcnlwdC90ZXN0X3JzYV9vYWVwLmh0dHBz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTg0MDg2IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvYW5pbWF0aW9uLW1vZGVsL2FuaW1h
dGlvbi10eXBlcy9hY2N1bXVsYXRpb24tcGVyLXByb3BlcnR5Lmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xODQwODYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5p
bWF0aW9ucy9hbmltYXRpb24tbW9kZWwvYW5pbWF0aW9uLXR5cGVzL2ludGVycG9sYXRpb24tcGVy
LXByb3BlcnR5Lmh0bWwgWyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>