<?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>171074</bug_id>
          
          <creation_ts>2017-04-20 13:53:22 -0700</creation_ts>
          <short_desc>[GCrypt] HKDF bit derivation support</short_desc>
          <delta_ts>2017-05-01 23:37:10 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1299279</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-20 13:53:22 -0700</bug_when>
    <thetext>[GCrypt] HKDF bit derivation support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299283</commentid>
    <comment_count>1</comment_count>
      <attachid>307634</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-20 14:00:30 -0700</bug_when>
    <thetext>Created attachment 307634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299301</commentid>
    <comment_count>2</comment_count>
      <attachid>307634</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-20 14:34:44 -0700</bug_when>
    <thetext>Comment on attachment 307634
Patch

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

Thanks. Would be good to ask Jiewen to look at this one, too.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:42
&gt; +static std::optional&lt;int&gt; macAlgorithmForHashFunction(CryptoAlgorithmIdentifier identifier)

This really isn&apos;t needed anywhere else, or isn&apos;t ever going to be needed anywhere else? Seems like it&apos;d fit better in Utilities.[cpp,h]?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299379</commentid>
    <comment_count>3</comment_count>
      <attachid>307634</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-20 16:28:56 -0700</bug_when>
    <thetext>Comment on attachment 307634
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:86
&gt; +        error = gcry_mac_setkey(handle, salt.data(), salt.size());

Does gcry_mac_setkey handle the case where salt is an empty vector?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:147
&gt; +            lastBlock.resize(blockSize);

Feel weird that we need to resize every time. Even though only the first invocation takes effect, it still feels weird to write it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299546</commentid>
    <comment_count>4</comment_count>
      <attachid>307634</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-21 00:47:39 -0700</bug_when>
    <thetext>Comment on attachment 307634
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:42
&gt;&gt; +static std::optional&lt;int&gt; macAlgorithmForHashFunction(CryptoAlgorithmIdentifier identifier)
&gt; 
&gt; This really isn&apos;t needed anywhere else, or isn&apos;t ever going to be needed anywhere else? Seems like it&apos;d fit better in Utilities.[cpp,h]?

Yes, this should all be gathered in the Utilities header. I would maybe prefer doing that in later cleanups.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:86
&gt;&gt; +        error = gcry_mac_setkey(handle, salt.data(), salt.size());
&gt; 
&gt; Does gcry_mac_setkey handle the case where salt is an empty vector?

It does, but on a second thought I&apos;d prefer being explicit here and use a 0-filled array of bytes in case the salt Vector is empty.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:147
&gt;&gt; +            lastBlock.resize(blockSize);
&gt; 
&gt; Feel weird that we need to resize every time. Even though only the first invocation takes effect, it still feels weird to write it this way.

OK. It&apos;s easy to work around -- the lastBlock should just not be appended to the block data when in the first iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299547</commentid>
    <comment_count>5</comment_count>
      <attachid>307706</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-21 00:54:31 -0700</bug_when>
    <thetext>Created attachment 307706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299779</commentid>
    <comment_count>6</comment_count>
      <attachid>307706</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-21 12:51:17 -0700</bug_when>
    <thetext>Comment on attachment 307706
Patch

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

Looks good otherwise.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:140
&gt; +            if (!i)

Should it be just if (i) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299800</commentid>
    <comment_count>7</comment_count>
      <attachid>307706</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-21 13:02:13 -0700</bug_when>
    <thetext>Comment on attachment 307706
Patch

Forgot to mention. I suggest you should add some false tests for this  gcrypt specific implementation as you implement HKDF by yourself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299801</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-21 13:02:51 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #7)
&gt; Comment on attachment 307706 [details]
&gt; Patch
&gt; 
&gt; Forgot to mention. I suggest you should add some false tests for this 
&gt; gcrypt specific implementation as you implement HKDF by yourself.

Just tests include false and pass ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300319</commentid>
    <comment_count>9</comment_count>
      <attachid>307706</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-23 05:26:32 -0700</bug_when>
    <thetext>Comment on attachment 307706
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:140
&gt;&gt; +            if (!i)
&gt; 
&gt; Should it be just if (i) ?

Correct, it&apos;s a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300320</commentid>
    <comment_count>10</comment_count>
      <attachid>307931</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-23 05:39:40 -0700</bug_when>
    <thetext>Created attachment 307931
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300328</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-23 07:06:07 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #7)
&gt; Comment on attachment 307706 [details]
&gt; Patch
&gt; 
&gt; Forgot to mention. I suggest you should add some false tests for this 
&gt; gcrypt specific implementation as you implement HKDF by yourself.

I can put together a length limit test that checks the algorithm properly rejects lengths that go over the 255 * MAC-length limit.

Is there anything else you&apos;d suggest testing around this HKDF implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300580</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-24 11:21:04 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #11)
&gt; (In reply to Jiewen Tan from comment #7)
&gt; &gt; Comment on attachment 307706 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Forgot to mention. I suggest you should add some false tests for this 
&gt; &gt; gcrypt specific implementation as you implement HKDF by yourself.
&gt; 
&gt; I can put together a length limit test that checks the algorithm properly
&gt; rejects lengths that go over the 255 * MAC-length limit.
&gt; 
&gt; Is there anything else you&apos;d suggest testing around this HKDF implementation?

I would suggest checking cases: length &gt;|=|&lt; macLength for positive tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302038</commentid>
    <comment_count>13</comment_count>
      <attachid>308379</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-27 05:08:47 -0700</bug_when>
    <thetext>Created attachment 308379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302039</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-27 05:10:28 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #13)
&gt; Created attachment 308379 [details]
&gt; Patch

This is the reviewed patch, plus a layout test that tests various length values. Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302244</commentid>
    <comment_count>15</comment_count>
      <attachid>308379</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-27 12:55:50 -0700</bug_when>
    <thetext>Comment on attachment 308379
Patch

Looks good. I suggest you could file a bug to replace this customized HKDF implementation with gcrypt one once it is available. We should not implement crypto by ourselves if we don&apos;t have to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303229</commentid>
    <comment_count>16</comment_count>
      <attachid>308379</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-01 07:27:26 -0700</bug_when>
    <thetext>Comment on attachment 308379
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303590</commentid>
    <comment_count>17</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 22:39:32 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #15)
&gt; Comment on attachment 308379 [details]
&gt; Patch
&gt; 
&gt; Looks good. I suggest you could file a bug to replace this customized HKDF
&gt; implementation with gcrypt one once it is available. We should not implement
&gt; crypto by ourselves if we don&apos;t have to.

I&apos;ll add a comment linking to bug #171536.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303591</commentid>
    <comment_count>18</comment_count>
      <attachid>308801</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 22:45:31 -0700</bug_when>
    <thetext>Created attachment 308801
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303598</commentid>
    <comment_count>19</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 23:37:10 -0700</bug_when>
    <thetext>Committed r216061: &lt;http://trac.webkit.org/changeset/216061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307634</attachid>
            <date>2017-04-20 14:00:30 -0700</date>
            <delta_ts>2017-04-21 00:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171074-20170420230028.patch</filename>
            <type>text/plain</type>
            <size>9430</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM1M2Q1ZjczZDkyMGIy
MDM0MjQ1NzVkNGJhNzA4YmRlZGVhZDU4Mi4uODZjNDk4NjM4YjdmYTJkZmE4MzBjZjg5ZWMwMjdj
YTRhZTlmZTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA0LTIwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBIS0RG
IGJpdCBkZXJpdmF0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBiaXQgZGVyaXZhdGlvbiBzdXBwb3J0IGZvciB0aGUg
SEtERiBhbGdvcml0aG0gZm9yIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIHRoYXQgdXNlIGxpYmdj
cnlwdC4KKworICAgICAgICBsaWJnY3J5cHQgZG9lc24ndCBwcm92aWRlIEhLREYgc3VwcG9ydCBv
dXQgb2YgdGhlIGJveCwgc28gd2UgaGF2ZSB0bworICAgICAgICBpbXBsZW1lbnQgdGhlIHR3byBz
dGVwcyBtYW51YWxseS4gSW4gdGhlIGZpcnN0IG9uZSwgd2UgcmV0cmlldmUgdGhlCisgICAgICAg
IHBzZXVkby1yYW5kb20ga2V5IGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgTUFDIGFsZ29yaXRobSB3
aXRoIHRoZSBzYWx0IGRhdGEKKyAgICAgICAgYXMgdGhlIGtleSBhbmQgdGhlIGtleSBkYXRhIGFz
IHRoZSBpbnB1dCBrZXlpbmcgbWF0ZXJpYWwuCisKKyAgICAgICAgSW4gdGhlIGV4cGFuZCBzdGVw
LCB3ZSBkbyB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIGl0ZXJhdGlvbnMgdG8gZGVyaXZlCisgICAg
ICAgIGEgc3VmZmljaWVudCBhbW91bnQgb2YgZGF0YSwgdXNpbmcgdGhlIHNhbWUgTUFDIGFsZ29y
aXRobSB3aXRoIHRoZQorICAgICAgICBwc2V1ZG8tcmFuZG9tIGtleSBmcm9tIHRoZSBwcmV2aW91
cyBzdGVwIG9uIHRoZSBkYXRhIHdlIGNvbXBvc2UgZnJvbSB0aGUKKyAgICAgICAgcHJldmlvdXMg
YmxvY2sgZGF0YSwgdGhlIGluZm8gZGF0YSwgYW5kIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB2YWx1
ZS4gVGhlCisgICAgICAgIHJlc3VsdGluZyBibG9ja3MgYXJlIGFwcGVuZGVkIHRvZ2V0aGVyIHVu
dGlsIHRoZXkgY2FuIGJlIGNsaXBwZWQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgb3V0cHV0IGxl
bmd0aC4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA0LTIwICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSVENQZWVyQ29ubmVj
dGlvbiBpcyBzdG9wcGluZyBpdHMgYmFja2VuZCB0d2ljZSBzb21ldGltZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5
cHQuY3BwCmluZGV4IGMwM2M5N2EwOWI0YTlmNzUwM2Y4YjdhOWRjN2Y5NmQ0ODc0Y2I1NjMuLjA3
MzNhYTE5NDc2MGRiNWZmNmVmOTA4Y2Y5OTlkYzQ0NjkwNWIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0
LmNwcApAQCAtMSw1ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNh
bCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTMgKzMwLDE2NyBAQAogCiAjaWYgRU5BQkxF
KFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgorI2luY2x1ZGUg
PHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBzaXpl
X3QsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBtYWNBbGdv
cml0aG1Gb3JIYXNoRnVuY3Rpb24oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgcmV0dXJu
IEdDUllfTUFDX0hNQUNfU0hBMTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yMjQ6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTIyNDsKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgIHJldHVybiBHQ1JZ
X01BQ19ITUFDX1NIQTI1NjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTM4NDsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgIHJldHVybiBHQ1JZX01B
Q19ITUFDX1NIQTUxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2
ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2FsdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbmZvLCBzaXplX3QgbGVuZ3RoSW5CeXRlcywg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIC8vIGxpYmdjcnlw
dCBkb2Vzbid0IHByb3ZpZGUgSEtERiBzdXBwb3J0LCBzbyB3ZSBoYXZlIHRvIGltcGxlbWVudAor
ICAgIC8vIHRoZSBmdW5jdGlvbmFsaXR5IG91cnNlbHZlcyBhcyBzcGVjaWZpZWQgaW4gUkZDNTg2
OS4KKyAgICAvLyBodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTg2OS50eHQKKworICAgIGF1
dG8gbWFjQWxnb3JpdGhtID0gbWFjQWxnb3JpdGhtRm9ySGFzaEZ1bmN0aW9uKGlkZW50aWZpZXIp
OworICAgIGlmICghbWFjQWxnb3JpdGhtKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgLy8gV2UgY2FuIGltbWVkaWF0ZWx5IGRpc2NhcmQgaW52YWxpZCBvdXRwdXQgbGVuZ3Ro
cywgb3RoZXJ3aXNlIG5lZWRlZCBmb3IgdGhlIGV4cGFuZCBzdGVwLgorICAgIHNpemVfdCBtYWNM
ZW5ndGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oKm1hY0FsZ29yaXRobSk7CisgICAgaWYg
KGxlbmd0aEluQnl0ZXMgPiBtYWNMZW5ndGggKiAyNTUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbWFjX2hkX3Q+IGhhbmRsZTsK
KyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21hY19vcGVuKCZoYW5kbGUsICptYWNBbGdv
cml0aG0sIDAsIG51bGxwdHIpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gU3RlcCAxIC0tIEV4dHJhY3QuIEEgcHNldWRv
LXJhbmRvbSBrZXkgaXMgZ2VuZXJhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0KKyAg
ICAvLyBmb3IgdGhlIGdpdmVuIHNhbHQgdmFsdWUgKHVzZWQgYXMgYSBrZXkpIGFuZCB0aGUgJ2lu
cHV0IGtleWluZyBtYXRlcmlhbCcuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHBzZXVkb1JhbmRvbUtl
eShtYWNMZW5ndGgpOworICAgIHsKKyAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFu
ZGxlLCBzYWx0LmRhdGEoKSwgc2FsdC5zaXplKCkpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAg
ICBlcnJvciA9IGdjcnlfbWFjX3dyaXRlKGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7
CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBwc2V1ZG9SYW5kb21LZXlTaXplID0g
cHNldWRvUmFuZG9tS2V5LnNpemUoKTsKKyAgICAgICAgZXJyb3IgPSBnY3J5X21hY19yZWFkKGhh
bmRsZSwgcHNldWRvUmFuZG9tS2V5LmRhdGEoKSwgJnBzZXVkb1JhbmRvbUtleVNpemUpOworICAg
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIH0KKworICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBpZiBsaWJnY3J5
cHQgZGlkbid0IHdyaXRlIG91dCB0aGUgcHJvcGVyIGFtb3VudCBvZiBkYXRhLgorICAgICAgICBp
ZiAocHNldWRvUmFuZG9tS2V5U2l6ZSAhPSBtYWNMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIFN0ZXAgIzIgLS0gRXhwYW5kLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBvdXRwdXQ7CisgICAgeworICAgICAgICAvLyBEZWR1Y2UgdGhlIG51bWJl
ciBvZiBuZWVkZWQgaXRlcmF0aW9ucyB0byByZXRyaWV2ZSB0aGUgbmVjZXNzYXJ5IGFtb3VudCBv
ZiBkYXRhLgorICAgICAgICBzaXplX3QgbnVtSXRlcmF0aW9ucyA9IChsZW5ndGhJbkJ5dGVzICsg
bWFjTGVuZ3RoKSAvIG1hY0xlbmd0aDsKKyAgICAgICAgLy8gQmxvY2sgZnJvbSB0aGUgcHJldmlv
dXMgaXRlcmF0aW9uIGlzIHVzZWQgaW4gdGhlIGN1cnJlbnQgb25lLCBleGNlcHQKKyAgICAgICAg
Ly8gaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbiB3aGVuIGl0J3MgZW1wdHkuCisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBsYXN0QmxvY2s7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1JdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAgIGVycm9yID0gZ2NyeV9tYWNfcmVzZXQo
aGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7Cisg
ICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
cnJvciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHBzZXVkb1JhbmRvbUtleS5kYXRhKCksIHBz
ZXVkb1JhbmRvbUtleS5zaXplKCkpOworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFQoMCkgPSBlbXB0eSBzdHJpbmcgKHplcm8gbGVuZ3RoKSAtLSBpLmUu
IGVtcHR5IGxhc3RCbG9jaworICAgICAgICAgICAgLy8gVChpKSA9IEhNQUMtSGFzaChQUkssIFQo
aS0xKSB8IGluZm8gfCBoZXgoaSkpIC0tIHwgcmVwcmVzZW50cyBjb25jYXRlbmF0aW9uCisgICAg
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvY2tEYXRhOworICAgICAgICAgICAgaWYgKCFsYXN0
QmxvY2suaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGJsb2NrRGF0YS5hcHBlbmRWZWN0b3Io
bGFzdEJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrRGF0YS5hcHBlbmRWZWN0b3IoaW5mbyk7Cisg
ICAgICAgICAgICBibG9ja0RhdGEuYXBwZW5kKGkgKyAxKTsKKworICAgICAgICAgICAgZXJyb3Ig
PSBnY3J5X21hY193cml0ZShoYW5kbGUsIGJsb2NrRGF0YS5kYXRhKCksIGJsb2NrRGF0YS5zaXpl
KCkpOworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAg
ICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVf
dCBibG9ja1NpemUgPSBtYWNMZW5ndGg7CisgICAgICAgICAgICBsYXN0QmxvY2sucmVzaXplKGJs
b2NrU2l6ZSk7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBsYXN0
QmxvY2suZGF0YSgpLCAmYmxvY2tTaXplKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBpZiBsaWJnY3J5cHQgZGlk
bid0IHdyaXRlIG91dCB0aGUgcHJvcGVyIGFtb3VudCBvZiBkYXRhLgorICAgICAgICAgICAgaWYg
KGJsb2NrU2l6ZSAhPSBtYWNMZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50IGJsb2NrIGRhdGEgdG8g
dGhlIG91dHB1dCB2ZWN0b3IuCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKGxhc3RC
bG9jayk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDbGlwIG91dHB1dCB2ZWN0b3IgdG8g
dGhlIHJlcXVlc3RlZCBzaXplLgorICAgIG91dHB1dC5yZXNpemUobGVuZ3RoSW5CeXRlcyk7Cisg
ICAgcmV0dXJuIG91dHB1dDsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9y
bURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYg
cGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShi
YXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSGtkZlBhcmFtcz4oKnBhcmFtZXRlcnMpOworICAgICAgICAgICAgYXV0byYgcmF3S2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihiYXNlS2V5LmdldCgpKTsKKworICAgICAgICAgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwgaGtkZlBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9yKCksIGxlbmd0aCAvIDgs
IGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0
KSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAg
ICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307706</attachid>
            <date>2017-04-21 00:54:31 -0700</date>
            <delta_ts>2017-04-23 05:39:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171074-20170421095429.patch</filename>
            <type>text/plain</type>
            <size>9694</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI1MDRkMDZjNzY1OWNl
NDRmZWJhMTQ4NDk0ZTkwZjJhZjQ2ODgyMi4uY2Y0NGU1YjZkMTBjZTg1ZTM1Nzk1ZDNkZDEzNjM3
ZDg4Mzk4OWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA0LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBIS0RG
IGJpdCBkZXJpdmF0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBiaXQgZGVyaXZhdGlvbiBzdXBwb3J0IGZvciB0aGUg
SEtERiBhbGdvcml0aG0gZm9yIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIHRoYXQgdXNlIGxpYmdj
cnlwdC4KKworICAgICAgICBsaWJnY3J5cHQgZG9lc24ndCBwcm92aWRlIEhLREYgc3VwcG9ydCBv
dXQgb2YgdGhlIGJveCwgc28gd2UgaGF2ZSB0bworICAgICAgICBpbXBsZW1lbnQgdGhlIHR3byBz
dGVwcyBtYW51YWxseS4gSW4gdGhlIGZpcnN0IG9uZSwgd2UgcmV0cmlldmUgdGhlCisgICAgICAg
IHBzZXVkby1yYW5kb20ga2V5IGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgTUFDIGFsZ29yaXRobSB3
aXRoIHRoZSBzYWx0IGRhdGEKKyAgICAgICAgYXMgdGhlIGtleSBhbmQgdGhlIGtleSBkYXRhIGFz
IHRoZSBpbnB1dCBrZXlpbmcgbWF0ZXJpYWwuCisKKyAgICAgICAgSW4gdGhlIGV4cGFuZCBzdGVw
LCB3ZSBkbyB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIGl0ZXJhdGlvbnMgdG8gZGVyaXZlCisgICAg
ICAgIGEgc3VmZmljaWVudCBhbW91bnQgb2YgZGF0YSwgdXNpbmcgdGhlIHNhbWUgTUFDIGFsZ29y
aXRobSB3aXRoIHRoZQorICAgICAgICBwc2V1ZG8tcmFuZG9tIGtleSBmcm9tIHRoZSBwcmV2aW91
cyBzdGVwIG9uIHRoZSBkYXRhIHdlIGNvbXBvc2UgZnJvbSB0aGUKKyAgICAgICAgcHJldmlvdXMg
YmxvY2sgZGF0YSwgdGhlIGluZm8gZGF0YSwgYW5kIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB2YWx1
ZS4gVGhlCisgICAgICAgIHJlc3VsdGluZyBibG9ja3MgYXJlIGFwcGVuZGVkIHRvZ2V0aGVyIHVu
dGlsIHRoZXkgY2FuIGJlIGNsaXBwZWQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgb3V0cHV0IGxl
bmd0aC4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA0LTIxICBU
aW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBv
c2Ugb2JzY3VyZWQgaW5zZXRzIHRvIHdlYiBjb250ZW50IChhcyAic2FmZSBhcmVhIGluc2V0cyIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCBjMDNjOTdhMDliNGE5Zjc1MDNmOGI3YTlkYzdmOTZk
NDg3NGNiNTYzLi4yMWIxYWY2MWY3ZDJhNjAyZDI1OWVkMTNhMjgwN2I0MzMyMWNlN2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtSEtERkdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBT
LkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEzICszMCwxNzEgQEAK
IAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5
cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUu
aD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0
cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0
b0tleT4mJiwgc2l6ZV90LCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PGludD4gbWFjQWxnb3JpdGhtRm9ySGFzaEZ1bmN0aW9uKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRl
bnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Cisg
ICAgICAgIHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEy
MjQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAg
ICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyNTY7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEzODQ7
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICBy
ZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEE1MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNp
emVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgLy8gbGliZ2NyeXB0IGRvZXNuJ3QgcHJvdmlkZSBIS0RGIHN1cHBvcnQsIHNvIHdl
IGhhdmUgdG8gaW1wbGVtZW50CisgICAgLy8gdGhlIGZ1bmN0aW9uYWxpdHkgb3Vyc2VsdmVzIGFz
IHNwZWNpZmllZCBpbiBSRkM1ODY5LgorICAgIC8vIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9y
ZmM1ODY5LnR4dAorCisgICAgYXV0byBtYWNBbGdvcml0aG0gPSBtYWNBbGdvcml0aG1Gb3JIYXNo
RnVuY3Rpb24oaWRlbnRpZmllcik7CisgICAgaWYgKCFtYWNBbGdvcml0aG0pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBXZSBjYW4gaW1tZWRpYXRlbHkgZGlzY2FyZCBp
bnZhbGlkIG91dHB1dCBsZW5ndGhzLCBvdGhlcndpc2UgbmVlZGVkIGZvciB0aGUgZXhwYW5kIHN0
ZXAuCisgICAgc2l6ZV90IG1hY0xlbmd0aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbigqbWFj
QWxnb3JpdGhtKTsKKyAgICBpZiAobGVuZ3RoSW5CeXRlcyA+IG1hY0xlbmd0aCAqIDI1NSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2Ny
eV9tYWNfaGRfdD4gaGFuZGxlOworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbWFjX29w
ZW4oJmhhbmRsZSwgKm1hY0FsZ29yaXRobSwgMCwgbnVsbHB0cik7CisgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBTdGVwIDEg
LS0gRXh0cmFjdC4gQSBwc2V1ZG8tcmFuZG9tIGtleSBpcyBnZW5lcmF0ZWQgd2l0aCB0aGUgc3Bl
Y2lmaWVkIGFsZ29yaXRobQorICAgIC8vIGZvciB0aGUgZ2l2ZW4gc2FsdCB2YWx1ZSAodXNlZCBh
cyBhIGtleSkgYW5kIHRoZSAnaW5wdXQga2V5aW5nIG1hdGVyaWFsJy4KKyAgICBWZWN0b3I8dWlu
dDhfdD4gcHNldWRvUmFuZG9tS2V5KG1hY0xlbmd0aCk7CisgICAgeworICAgICAgICAvLyBJZiB0
aGUgc2FsdCB2ZWN0b3IgaXMgZW1wdHksIGEgemVyb2VkLW91dCBrZXkgb2YgbWFjTGVuZ3RoIHNp
emUgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIGlmIChzYWx0LmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHplcm9lZEtleShtYWNMZW5ndGgsIDApOworICAgICAgICAg
ICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCB6ZXJvZWRLZXkuZGF0YSgpLCB6ZXJv
ZWRLZXkuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlcnJvciA9IGdjcnlf
bWFjX3NldGtleShoYW5kbGUsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CisgICAgICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgfQorCisgICAgICAgIGVycm9yID0gZ2NyeV9tYWNfd3JpdGUoaGFuZGxlLCBrZXkuZGF0YSgp
LCBrZXkuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
KyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IHBzZXVkb1Jh
bmRvbUtleVNpemUgPSBwc2V1ZG9SYW5kb21LZXkuc2l6ZSgpOworICAgICAgICBlcnJvciA9IGdj
cnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgpLCAmcHNldWRvUmFuZG9t
S2V5U2l6ZSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdy
b25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBwcm9wZXIgYW1vdW50IG9mIGRh
dGEuCisgICAgICAgIGlmIChwc2V1ZG9SYW5kb21LZXlTaXplICE9IG1hY0xlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gU3RlcCAjMiAtLSBF
eHBhbmQuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dHB1dDsKKyAgICB7CisgICAgICAgIC8vIERl
ZHVjZSB0aGUgbnVtYmVyIG9mIG5lZWRlZCBpdGVyYXRpb25zIHRvIHJldHJpZXZlIHRoZSBuZWNl
c3NhcnkgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIHNpemVfdCBudW1JdGVyYXRpb25zID0gKGxl
bmd0aEluQnl0ZXMgKyBtYWNMZW5ndGgpIC8gbWFjTGVuZ3RoOworICAgICAgICAvLyBCbG9jayBm
cm9tIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gaXMgdXNlZCBpbiB0aGUgY3VycmVudCBvbmUsIGV4
Y2VwdAorICAgICAgICAvLyBpbiB0aGUgZmlyc3QgaXRlcmF0aW9uIHdoZW4gaXQncyBlbXB0eS4K
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGxhc3RCbG9jayhtYWNMZW5ndGgpOworCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAg
ICBlcnJvciA9IGdjcnlfbWFjX3Jlc2V0KGhhbmRsZSk7CisgICAgICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCBw
c2V1ZG9SYW5kb21LZXkuZGF0YSgpLCBwc2V1ZG9SYW5kb21LZXkuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUKDApID0gZW1wdHkgc3Ry
aW5nICh6ZXJvIGxlbmd0aCkgLS0gaS5lLiBlbXB0eSBsYXN0QmxvY2sKKyAgICAgICAgICAgIC8v
IFQoaSkgPSBITUFDLUhhc2goUFJLLCBUKGktMSkgfCBpbmZvIHwgaGV4KGkpKSAtLSB8IHJlcHJl
c2VudHMgY29uY2F0ZW5hdGlvbgorICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2NrRGF0
YTsKKyAgICAgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgICAgICBibG9ja0RhdGEuYXBwZW5k
VmVjdG9yKGxhc3RCbG9jayk7CisgICAgICAgICAgICBibG9ja0RhdGEuYXBwZW5kVmVjdG9yKGlu
Zm8pOworICAgICAgICAgICAgYmxvY2tEYXRhLmFwcGVuZChpICsgMSk7CisKKyAgICAgICAgICAg
IGVycm9yID0gZ2NyeV9tYWNfd3JpdGUoaGFuZGxlLCBibG9ja0RhdGEuZGF0YSgpLCBibG9ja0Rh
dGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBzaXplX3QgYmxvY2tTaXplID0gbGFzdEJsb2NrLnNpemUoKTsKKyAgICAgICAgICAgIGVycm9y
ID0gZ2NyeV9tYWNfcmVhZChoYW5kbGUsIGxhc3RCbG9jay5kYXRhKCksICZibG9ja1NpemUpOwor
ICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAg
ICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNvbWV0aGlu
ZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBwcm9wZXIgYW1v
dW50IG9mIGRhdGEuCisgICAgICAgICAgICBpZiAoYmxvY2tTaXplICE9IGxhc3RCbG9jay5zaXpl
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAg
Ly8gQXBwZW5kIHRoZSBjdXJyZW50IGJsb2NrIGRhdGEgdG8gdGhlIG91dHB1dCB2ZWN0b3IuCisg
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKGxhc3RCbG9jayk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBDbGlwIG91dHB1dCB2ZWN0b3IgdG8gdGhlIHJlcXVlc3RlZCBzaXplLgor
ICAgIG91dHB1dC5yZXNpemUobGVuZ3RoSW5CeXRlcyk7CisgICAgcmV0dXJuIG91dHB1dDsKK30K
Kwordm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0
b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJl
ZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8m
IGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4oKnBh
cmFtZXRlcnMpOworICAgICAgICAgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UmF3PihiYXNlS2V5LmdldCgpKTsKKworICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRE
ZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLCBoa2Rm
UGFyYW1ldGVycy5pbmZvVmVjdG9yKCksIGxlbmd0aCAvIDgsIGhrZGZQYXJhbWV0ZXJzLmhhc2hJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307931</attachid>
            <date>2017-04-23 05:39:40 -0700</date>
            <delta_ts>2017-04-27 05:08:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171074-20170423143939.patch</filename>
            <type>text/plain</type>
            <size>11392</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEyMmMyYTA3OTIyMGQ2
YTNlNzc1MmU4MzgwNTNhN2Q5ODcyZWY4Yi4uNTI5MTRkOWJmMzRiOWM4NThiYzZiNTUyZmRhNWI0
ZDMzNzZlYThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA0LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBIS0RG
IGJpdCBkZXJpdmF0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0
YW56YXJvLgorCisgICAgICAgIEltcGxlbWVudCBiaXQgZGVyaXZhdGlvbiBzdXBwb3J0IGZvciB0
aGUgSEtERiBhbGdvcml0aG0gZm9yIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIHRoYXQgdXNlIGxp
YmdjcnlwdC4KKworICAgICAgICBsaWJnY3J5cHQgZG9lc24ndCBwcm92aWRlIEhLREYgc3VwcG9y
dCBvdXQgb2YgdGhlIGJveCwgc28gd2UgaGF2ZSB0bworICAgICAgICBpbXBsZW1lbnQgdGhlIHR3
byBzdGVwcyBtYW51YWxseS4gSW4gdGhlIGZpcnN0IG9uZSwgd2UgcmV0cmlldmUgdGhlCisgICAg
ICAgIHBzZXVkby1yYW5kb20ga2V5IGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgTUFDIGFsZ29yaXRo
bSB3aXRoIHRoZSBzYWx0IGRhdGEKKyAgICAgICAgYXMgdGhlIGtleSBhbmQgdGhlIGtleSBkYXRh
IGFzIHRoZSBpbnB1dCBrZXlpbmcgbWF0ZXJpYWwuCisKKyAgICAgICAgSW4gdGhlIGV4cGFuZCBz
dGVwLCB3ZSBkbyB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIGl0ZXJhdGlvbnMgdG8gZGVyaXZlCisg
ICAgICAgIGEgc3VmZmljaWVudCBhbW91bnQgb2YgZGF0YSwgdXNpbmcgdGhlIHNhbWUgTUFDIGFs
Z29yaXRobSB3aXRoIHRoZQorICAgICAgICBwc2V1ZG8tcmFuZG9tIGtleSBmcm9tIHRoZSBwcmV2
aW91cyBzdGVwIG9uIHRoZSBkYXRhIHdlIGNvbXBvc2UgZnJvbSB0aGUKKyAgICAgICAgcHJldmlv
dXMgYmxvY2sgZGF0YSwgdGhlIGluZm8gZGF0YSwgYW5kIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB2
YWx1ZS4gVGhlCisgICAgICAgIHJlc3VsdGluZyBibG9ja3MgYXJlIGFwcGVuZGVkIHRvZ2V0aGVy
IHVudGlsIHRoZXkgY2FuIGJlIGNsaXBwZWQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgb3V0cHV0
IGxlbmd0aC4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdD
cnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA0LTIy
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGUg
aW5wdXRzIG9ubHkgYWNjZXB0IFVUSSB0eXBlcyB0aGF0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIGNv
bnRlbnRlZGl0YWJsZSBhcmVhcyB3aGVuIGRyb3BwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRl
eCBjMDNjOTdhMDliNGE5Zjc1MDNmOGI3YTlkYzdmOTZkNDg3NGNiNTYzLi4yNDQ0NDNmNDBlNThk
ZWNmYjFiZTNkZmZmOTZlMmMxODliYjlkNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTEs
NSArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDEzICszMCwxNzEgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1Ia2RmUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRv
L2djcnlwdC9VdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0
b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90LCBWZWN0b3JD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V29ya1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gbWFjQWxnb3JpdGhtRm9ySGFz
aEZ1bmN0aW9uKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19I
TUFDX1NIQTE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0Ogor
ICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyMjQ7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19T
SEEyNTY7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAg
ICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEzODQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEE1
MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9
CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0
cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgLy8gbGliZ2NyeXB0IGRv
ZXNuJ3QgcHJvdmlkZSBIS0RGIHN1cHBvcnQsIHNvIHdlIGhhdmUgdG8gaW1wbGVtZW50CisgICAg
Ly8gdGhlIGZ1bmN0aW9uYWxpdHkgb3Vyc2VsdmVzIGFzIHNwZWNpZmllZCBpbiBSRkM1ODY5Lgor
ICAgIC8vIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1ODY5LnR4dAorCisgICAgYXV0byBt
YWNBbGdvcml0aG0gPSBtYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24oaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtYWNBbGdvcml0aG0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICAvLyBXZSBjYW4gaW1tZWRpYXRlbHkgZGlzY2FyZCBpbnZhbGlkIG91dHB1dCBsZW5ndGhzLCBv
dGhlcndpc2UgbmVlZGVkIGZvciB0aGUgZXhwYW5kIHN0ZXAuCisgICAgc2l6ZV90IG1hY0xlbmd0
aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbigqbWFjQWxnb3JpdGhtKTsKKyAgICBpZiAobGVu
Z3RoSW5CeXRlcyA+IG1hY0xlbmd0aCAqIDI1NSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tYWNfaGRfdD4gaGFuZGxlOworICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbWFjX29wZW4oJmhhbmRsZSwgKm1hY0FsZ29yaXRo
bSwgMCwgbnVsbHB0cik7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBTdGVwIDEgLS0gRXh0cmFjdC4gQSBwc2V1ZG8tcmFu
ZG9tIGtleSBpcyBnZW5lcmF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobQorICAgIC8v
IGZvciB0aGUgZ2l2ZW4gc2FsdCB2YWx1ZSAodXNlZCBhcyBhIGtleSkgYW5kIHRoZSAnaW5wdXQg
a2V5aW5nIG1hdGVyaWFsJy4KKyAgICBWZWN0b3I8dWludDhfdD4gcHNldWRvUmFuZG9tS2V5KG1h
Y0xlbmd0aCk7CisgICAgeworICAgICAgICAvLyBJZiB0aGUgc2FsdCB2ZWN0b3IgaXMgZW1wdHks
IGEgemVyb2VkLW91dCBrZXkgb2YgbWFjTGVuZ3RoIHNpemUgc2hvdWxkIGJlIHVzZWQuCisgICAg
ICAgIGlmIChzYWx0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHpl
cm9lZEtleShtYWNMZW5ndGgsIDApOworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRr
ZXkoaGFuZGxlLCB6ZXJvZWRLZXkuZGF0YSgpLCB6ZXJvZWRLZXkuc2l6ZSgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHNhbHQu
ZGF0YSgpLCBzYWx0LnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0g
Z2NyeV9tYWNfd3JpdGUoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKKyAgICAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0
Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICB9CisKKyAgICAgICAgc2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1ZG9SYW5k
b21LZXkuc2l6ZSgpOworICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1
ZG9SYW5kb21LZXkuZGF0YSgpLCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CisgICAgICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qg
d3JpdGUgb3V0IHRoZSBwcm9wZXIgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIGlmIChwc2V1ZG9S
YW5kb21LZXlTaXplICE9IG1hY0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgfQorCisgICAgLy8gU3RlcCAjMiAtLSBFeHBhbmQuCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG91dHB1dDsKKyAgICB7CisgICAgICAgIC8vIERlZHVjZSB0aGUgbnVtYmVyIG9mIG5lZWRl
ZCBpdGVyYXRpb25zIHRvIHJldHJpZXZlIHRoZSBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEuCisg
ICAgICAgIHNpemVfdCBudW1JdGVyYXRpb25zID0gKGxlbmd0aEluQnl0ZXMgKyBtYWNMZW5ndGgp
IC8gbWFjTGVuZ3RoOworICAgICAgICAvLyBCbG9jayBmcm9tIHRoZSBwcmV2aW91cyBpdGVyYXRp
b24gaXMgdXNlZCBpbiB0aGUgY3VycmVudCBvbmUsIGV4Y2VwdAorICAgICAgICAvLyBpbiB0aGUg
Zmlyc3QgaXRlcmF0aW9uIHdoZW4gaXQncyBlbXB0eS4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGxhc3RCbG9jayhtYWNMZW5ndGgpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3Jlc2V0
KGhhbmRsZSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewor
ICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgpLCBw
c2V1ZG9SYW5kb21LZXkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUKDApID0gZW1wdHkgc3RyaW5nICh6ZXJvIGxlbmd0aCkgLS0gaS5l
LiBlbXB0eSBsYXN0QmxvY2sKKyAgICAgICAgICAgIC8vIFQoaSkgPSBITUFDLUhhc2goUFJLLCBU
KGktMSkgfCBpbmZvIHwgaGV4KGkpKSAtLSB8IHJlcHJlc2VudHMgY29uY2F0ZW5hdGlvbgorICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2NrRGF0YTsKKyAgICAgICAgICAgIGlmIChpKQor
ICAgICAgICAgICAgICAgIGJsb2NrRGF0YS5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKKyAgICAg
ICAgICAgIGJsb2NrRGF0YS5hcHBlbmRWZWN0b3IoaW5mbyk7CisgICAgICAgICAgICBibG9ja0Rh
dGEuYXBwZW5kKGkgKyAxKTsKKworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZSho
YW5kbGUsIGJsb2NrRGF0YS5kYXRhKCksIGJsb2NrRGF0YS5zaXplKCkpOworICAgICAgICAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBibG9ja1NpemUgPSBsYXN0
QmxvY2suc2l6ZSgpOworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19yZWFkKGhhbmRsZSwg
bGFzdEJsb2NrLmRhdGEoKSwgJmJsb2NrU2l6ZSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgaWYgbGliZ2NyeXB0
IGRpZG4ndCB3cml0ZSBvdXQgdGhlIHByb3BlciBhbW91bnQgb2YgZGF0YS4KKyAgICAgICAgICAg
IGlmIChibG9ja1NpemUgIT0gbGFzdEJsb2NrLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQgYmxv
Y2sgZGF0YSB0byB0aGUgb3V0cHV0IHZlY3Rvci4KKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmRW
ZWN0b3IobGFzdEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENsaXAgb3V0cHV0
IHZlY3RvciB0byB0aGUgcmVxdWVzdGVkIHNpemUuCisgICAgb3V0cHV0LnJlc2l6ZShsZW5ndGhJ
bkJ5dGVzKTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobUhL
REY6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBs
ZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkg
PSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBh
dXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworCisg
ICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBo
a2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKSwg
bGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOworICAgICAgICAgICAg
aWYgKCFvdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAg
ICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3Zl
KCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MmZjNjA3Y2RiMzJi
MzVjMmI4YTA2NWJmMjkzM2I4YmJiMWQ0YzJiLi43MzA4NDM2YTgwNWRmN2EyNzU0OTkyZDgxODk0
OGUyMzhjYTdjMTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQtMjMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEhLREYgYml0
IGRlcml2YXRpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcxMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnph
cm8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRo
ZSBIS0RGIHRlc3RzIHVuZGVyIGNyeXB0by9zdWJ0bGUvLgorCiAyMDE3LTA0LTIxICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjA1Mzc0KTog
PGxpPiBjb250ZW50IGluc2lkZSA8dWw+IHNob3VsZCBtaWQtd29yZCB3cmFwIHdoZW4gd29yZC1i
cmVhazogYnJlYWstd29yZCBpcyBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA4NTViYjNlNTAyZmI3MTZmZDdlMTg5YjAyZGYwYzdhMWM5NTFj
NTYxLi44YTQzZGZlMjNjNzY1MjVkZWM5NjczN2E4ZjY4OTA3NzgzNjZlNDIzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzIzLDYgKzcyMywxMSBAQCBC
dWcoR1RLKSBlZGl0aW5nL3NlY3VyZS1pbnB1dCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vc3VidGxlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93
ZWJraXRTdWJ0bGUgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMv
c3VidGxlIFsgU2tpcCBdCitjcnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbWFsZm9ybWVk
LXBhcmFtZXRycy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2hrZGYtaW1wb3J0LWtleS1k
ZXJpdmUtYml0cy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2hrZGYtaW1wb3J0LWtleS1k
ZXJpdmUtaG1hYy1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9oa2RmLWltcG9ydC1r
ZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9oa2RmLWltcG9ydC1rZXktbWFsZm9ybWVk
LXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWV4cG9ydC1rZXkt
bWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWdl
bmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTEuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9o
bWFjLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308379</attachid>
            <date>2017-04-27 05:08:47 -0700</date>
            <delta_ts>2017-05-01 22:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171074-20170427140846.patch</filename>
            <type>text/plain</type>
            <size>19224</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkNjlkNzJhMTRhNzNh
MzhkNmMxMzk2NzE2NTk1ZDQzYzEyNGNkNy4uOTE0ZGE3ZWU3NzI3NDg4ZTA1NjU2NWI2OWFjYmMz
YjFlOTVlYWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA0LTI3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBIS0RG
IGJpdCBkZXJpdmF0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0
YW56YXJvLgorCisgICAgICAgIEltcGxlbWVudCBiaXQgZGVyaXZhdGlvbiBzdXBwb3J0IGZvciB0
aGUgSEtERiBhbGdvcml0aG0gZm9yIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIHRoYXQgdXNlIGxp
YmdjcnlwdC4KKworICAgICAgICBsaWJnY3J5cHQgZG9lc24ndCBwcm92aWRlIEhLREYgc3VwcG9y
dCBvdXQgb2YgdGhlIGJveCwgc28gd2UgaGF2ZSB0bworICAgICAgICBpbXBsZW1lbnQgdGhlIHR3
byBzdGVwcyBtYW51YWxseS4gSW4gdGhlIGZpcnN0IG9uZSwgd2UgcmV0cmlldmUgdGhlCisgICAg
ICAgIHBzZXVkby1yYW5kb20ga2V5IGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgTUFDIGFsZ29yaXRo
bSB3aXRoIHRoZSBzYWx0IGRhdGEKKyAgICAgICAgYXMgdGhlIGtleSBhbmQgdGhlIGtleSBkYXRh
IGFzIHRoZSBpbnB1dCBrZXlpbmcgbWF0ZXJpYWwuCisKKyAgICAgICAgSW4gdGhlIGV4cGFuZCBz
dGVwLCB3ZSBkbyB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIGl0ZXJhdGlvbnMgdG8gZGVyaXZlCisg
ICAgICAgIGEgc3VmZmljaWVudCBhbW91bnQgb2YgZGF0YSwgdXNpbmcgdGhlIHNhbWUgTUFDIGFs
Z29yaXRobSB3aXRoIHRoZQorICAgICAgICBwc2V1ZG8tcmFuZG9tIGtleSBmcm9tIHRoZSBwcmV2
aW91cyBzdGVwIG9uIHRoZSBkYXRhIHdlIGNvbXBvc2UgZnJvbSB0aGUKKyAgICAgICAgcHJldmlv
dXMgYmxvY2sgZGF0YSwgdGhlIGluZm8gZGF0YSwgYW5kIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB2
YWx1ZS4gVGhlCisgICAgICAgIHJlc3VsdGluZyBibG9ja3MgYXJlIGFwcGVuZGVkIHRvZ2V0aGVy
IHVudGlsIHRoZXkgY2FuIGJlIGNsaXBwZWQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgb3V0cHV0
IGxlbmd0aC4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdD
cnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA0LTI3
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGhlIGNvcnJl
Y3QgbW9kZXJuLW1lZGlhLWNvbnRyb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCBjMDNjOTdh
MDliNGE5Zjc1MDNmOGI3YTlkYzdmOTZkNDg3NGNiNTYzLi4yNDQ0NDNmNDBlNThkZWNmYjFiZTNk
ZmZmOTZlMmMxODliYjlkNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDEzICszMCwxNzEgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Ia2Rm
UGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxw
YWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9V
dGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90LCBWZWN0b3JDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVl
JikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gbWFjQWxnb3JpdGhtRm9ySGFzaEZ1bmN0aW9u
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTE7
CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICBy
ZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyMjQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyNTY7Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1
cm4gR0NSWV9NQUNfSE1BQ19TSEEzODQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEE1MTI7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgLy8gbGliZ2NyeXB0IGRvZXNuJ3QgcHJv
dmlkZSBIS0RGIHN1cHBvcnQsIHNvIHdlIGhhdmUgdG8gaW1wbGVtZW50CisgICAgLy8gdGhlIGZ1
bmN0aW9uYWxpdHkgb3Vyc2VsdmVzIGFzIHNwZWNpZmllZCBpbiBSRkM1ODY5LgorICAgIC8vIGh0
dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1ODY5LnR4dAorCisgICAgYXV0byBtYWNBbGdvcml0
aG0gPSBtYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24oaWRlbnRpZmllcik7CisgICAgaWYgKCFt
YWNBbGdvcml0aG0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBXZSBj
YW4gaW1tZWRpYXRlbHkgZGlzY2FyZCBpbnZhbGlkIG91dHB1dCBsZW5ndGhzLCBvdGhlcndpc2Ug
bmVlZGVkIGZvciB0aGUgZXhwYW5kIHN0ZXAuCisgICAgc2l6ZV90IG1hY0xlbmd0aCA9IGdjcnlf
bWFjX2dldF9hbGdvX21hY2xlbigqbWFjQWxnb3JpdGhtKTsKKyAgICBpZiAobGVuZ3RoSW5CeXRl
cyA+IG1hY0xlbmd0aCAqIDI1NSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tYWNfaGRfdD4gaGFuZGxlOworICAgIGdjcnlfZXJy
b3JfdCBlcnJvciA9IGdjcnlfbWFjX29wZW4oJmhhbmRsZSwgKm1hY0FsZ29yaXRobSwgMCwgbnVs
bHB0cik7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICAvLyBTdGVwIDEgLS0gRXh0cmFjdC4gQSBwc2V1ZG8tcmFuZG9tIGtleSBp
cyBnZW5lcmF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobQorICAgIC8vIGZvciB0aGUg
Z2l2ZW4gc2FsdCB2YWx1ZSAodXNlZCBhcyBhIGtleSkgYW5kIHRoZSAnaW5wdXQga2V5aW5nIG1h
dGVyaWFsJy4KKyAgICBWZWN0b3I8dWludDhfdD4gcHNldWRvUmFuZG9tS2V5KG1hY0xlbmd0aCk7
CisgICAgeworICAgICAgICAvLyBJZiB0aGUgc2FsdCB2ZWN0b3IgaXMgZW1wdHksIGEgemVyb2Vk
LW91dCBrZXkgb2YgbWFjTGVuZ3RoIHNpemUgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIGlmIChz
YWx0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHplcm9lZEtleSht
YWNMZW5ndGgsIDApOworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxl
LCB6ZXJvZWRLZXkuZGF0YSgpLCB6ZXJvZWRLZXkuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHNhbHQuZGF0YSgpLCBz
YWx0LnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7Cisg
ICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gZ2NyeV9tYWNf
d3JpdGUoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisK
KyAgICAgICAgc2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1ZG9SYW5kb21LZXkuc2l6
ZSgpOworICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1ZG9SYW5kb21L
ZXkuZGF0YSgpLCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CisgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0
IHRoZSBwcm9wZXIgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIGlmIChwc2V1ZG9SYW5kb21LZXlT
aXplICE9IG1hY0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorCisgICAgLy8gU3RlcCAjMiAtLSBFeHBhbmQuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dHB1
dDsKKyAgICB7CisgICAgICAgIC8vIERlZHVjZSB0aGUgbnVtYmVyIG9mIG5lZWRlZCBpdGVyYXRp
b25zIHRvIHJldHJpZXZlIHRoZSBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIHNp
emVfdCBudW1JdGVyYXRpb25zID0gKGxlbmd0aEluQnl0ZXMgKyBtYWNMZW5ndGgpIC8gbWFjTGVu
Z3RoOworICAgICAgICAvLyBCbG9jayBmcm9tIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gaXMgdXNl
ZCBpbiB0aGUgY3VycmVudCBvbmUsIGV4Y2VwdAorICAgICAgICAvLyBpbiB0aGUgZmlyc3QgaXRl
cmF0aW9uIHdoZW4gaXQncyBlbXB0eS4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGxhc3RCbG9j
ayhtYWNMZW5ndGgpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlcmF0
aW9uczsgKytpKSB7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3Jlc2V0KGhhbmRsZSk7
CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAg
ICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXJyb3IgPSBn
Y3J5X21hY19zZXRrZXkoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgpLCBwc2V1ZG9SYW5k
b21LZXkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUKDApID0gZW1wdHkgc3RyaW5nICh6ZXJvIGxlbmd0aCkgLS0gaS5lLiBlbXB0eSBs
YXN0QmxvY2sKKyAgICAgICAgICAgIC8vIFQoaSkgPSBITUFDLUhhc2goUFJLLCBUKGktMSkgfCBp
bmZvIHwgaGV4KGkpKSAtLSB8IHJlcHJlc2VudHMgY29uY2F0ZW5hdGlvbgorICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJsb2NrRGF0YTsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAg
ICAgICAgIGJsb2NrRGF0YS5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKKyAgICAgICAgICAgIGJs
b2NrRGF0YS5hcHBlbmRWZWN0b3IoaW5mbyk7CisgICAgICAgICAgICBibG9ja0RhdGEuYXBwZW5k
KGkgKyAxKTsKKworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGJs
b2NrRGF0YS5kYXRhKCksIGJsb2NrRGF0YS5zaXplKCkpOworICAgICAgICAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBibG9ja1NpemUgPSBsYXN0QmxvY2suc2l6
ZSgpOworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19yZWFkKGhhbmRsZSwgbGFzdEJsb2Nr
LmRhdGEoKSwgJmJsb2NrU2l6ZSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgaWYgbGliZ2NyeXB0IGRpZG4ndCB3
cml0ZSBvdXQgdGhlIHByb3BlciBhbW91bnQgb2YgZGF0YS4KKyAgICAgICAgICAgIGlmIChibG9j
a1NpemUgIT0gbGFzdEJsb2NrLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQgYmxvY2sgZGF0YSB0
byB0aGUgb3V0cHV0IHZlY3Rvci4KKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3IobGFz
dEJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENsaXAgb3V0cHV0IHZlY3RvciB0
byB0aGUgcmVxdWVzdGVkIHNpemUuCisgICAgb3V0cHV0LnJlc2l6ZShsZW5ndGhJbkJ5dGVzKTsK
KyAgICByZXR1cm4gb3V0cHV0OworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRm
b3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3Zl
KGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgeworICAgICAgICAgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiByYXdL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworCisgICAgICAgICAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1l
dGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8g
OCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFvdXRw
dXQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisg
ICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYmEyYzI3N2I3ZTg0NzlkNWUwMTE0
NDdiYjVlYjBjMzdhMzRmOWRjLi5jYTAyOTU0NjA4NzI2MTNlZjE3MzY3MDJmNzRlOWVjODkzYTlk
ODc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDQtMjcgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEhLREYgYml0IGRlcml2YXRp
b24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxMDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGNyeXB0by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLmh0bWwg
dGVzdCBpcyBhZGRlZCwgdGVzdGluZyB0aGUKKyAgICAgICAgY29ybmVyLWNhc2UgbGVuZ3RoIHZh
bHVlcyBmb3Igd2hpY2ggdGhlIGJpdCBkZXJpdmF0aW9uIG9wZXJhdGlvbiBtdXN0IHN1Y2NlZWQg
b3IKKyAgICAgICAgZmFpbCBmb3IgYW55IHNwZWNpZmllZCBTSEEgaGFzaCBhbGdvcml0aG0uIFdp
dGggSGFzaExlbiBhcyB0aGUgYWxnb3JpdGhtJ3Mgb3V0cHV0CisgICAgICAgIGxlbmd0aCwgdGhl
IG9wZXJhdGlvbiBzaG91bGQgcmVqZWN0IGZvciBsZW5ndGhzIG9mIDAgb3IgYWJvdmUgMjU1ICog
SGFzaExlbiAqIDguCisgICAgICAgIFRoZSBvcGVyYXRpb24gc2hvdWxkIHJlc29sdmUgZm9yIGxl
bmd0aHMgYmV0d2VlbiB0aGUgdHdvIGxpbWl0cywgd2l0aCB0ZXN0aW5nCisgICAgICAgIHBlcmZv
cm1lZCBvbiBsZW5ndGhzIG9mIDggKHRoZSBtaW5pbXVtIG91dHB1dCBsZW5ndGgpLCBIYXNoTGVu
ICogOCAobWF0Y2hpbmcgdGhlCisgICAgICAgIG91dHB1dCBsZW5ndGggb2YgdGhlIGhhc2ggYWxn
b3JpdGhtKSwgYW5kIDI1NSAqIEhhc2hMZW4gKiA4ICh0aGUgbWF4aW11bQorICAgICAgICBkZXJp
dmF0aW9uIG91dHB1dCBsZW5ndGgpLgorCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9oa2RmLWRl
cml2ZS1iaXRzLWxlbmd0aC1saW1pdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
cnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRoZSBIS0RG
IHRlc3RzIHVuZGVyIGNyeXB0by9zdWJ0bGUvLgorCiAyMDE3LTA0LTI2ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIHVubmVjZXNz
YXJ5IGV4cGVjdGVkIHJlc3VsdCBpbiBwbGF0Zm9ybS9pb3Mtd2syCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVu
Z3RoLWxpbWl0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIxZjRkNmM2MDc2N2E3MGQwZWRj
MmRlMDZiN2QxYjUwNTU3NjUyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI0IEBACitUZXN0IEhLREYgZGVyaXZlQml0cyBvcGVyYXRpb24gZm9yIGNvcm5lci1j
YXNlIGxlbmd0aCB2YWx1ZXMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
ZGVyaXZlQml0cygic2hhLTEiLCAwKSByZWplY3RlZCBwcm9taXNlICB3aXRoIE9wZXJhdGlvbkVy
cm9yIChET00gRXhjZXB0aW9uIDM0KTogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIGFuIG9wZXJh
dGlvbi1zcGVjaWZpYyByZWFzb24uCitQQVNTIEJpdCBkZXJpdmF0aW9ucyBmb3IgU0hBLTEgd2l0
aCBtaW5pbXVtLCBtYXhpbXVtIGFuZCBIYXNoTGVuIGxlbmd0aHMgYWxsIHBhc3NlZAorUEFTUyBk
ZXJpdmVCaXRzKCJzaGEtMSIsIDI1NiAqIDIwICogOCkgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBP
cGVyYXRpb25FcnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZv
ciBhbiBvcGVyYXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBkZXJpdmVCaXRzKCJzaGEtMjI0
IiwgMCkgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25FcnJvciAoRE9NIEV4Y2VwdGlv
biAzNCk6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVyYXRpb24tc3BlY2lmaWMgcmVh
c29uLgorUEFTUyBCaXQgZGVyaXZhdGlvbnMgZm9yIFNIQS0yMjQgd2l0aCBtaW5pbXVtLCBtYXhp
bXVtIGFuZCBIYXNoTGVuIGxlbmd0aHMgYWxsIHBhc3NlZAorUEFTUyBkZXJpdmVCaXRzKCJzaGEt
MjI0IiwgMjU2ICogMjggKiA4KSByZWplY3RlZCBwcm9taXNlICB3aXRoIE9wZXJhdGlvbkVycm9y
IChET00gRXhjZXB0aW9uIDM0KTogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIGFuIG9wZXJhdGlv
bi1zcGVjaWZpYyByZWFzb24uCitQQVNTIGRlcml2ZUJpdHMoInNoYS0yNTYiLCAwKSByZWplY3Rl
ZCBwcm9taXNlICB3aXRoIE9wZXJhdGlvbkVycm9yIChET00gRXhjZXB0aW9uIDM0KTogVGhlIG9w
ZXJhdGlvbiBmYWlsZWQgZm9yIGFuIG9wZXJhdGlvbi1zcGVjaWZpYyByZWFzb24uCitQQVNTIEJp
dCBkZXJpdmF0aW9ucyBmb3IgU0hBLTI1NiB3aXRoIG1pbmltdW0sIG1heGltdW0gYW5kIEhhc2hM
ZW4gbGVuZ3RocyBhbGwgcGFzc2VkCitQQVNTIGRlcml2ZUJpdHMoInNoYS0yNTYiLCAyNTYgKiAz
MiAqIDgpIHJlamVjdGVkIHByb21pc2UgIHdpdGggT3BlcmF0aW9uRXJyb3IgKERPTSBFeGNlcHRp
b24gMzQpOiBUaGUgb3BlcmF0aW9uIGZhaWxlZCBmb3IgYW4gb3BlcmF0aW9uLXNwZWNpZmljIHJl
YXNvbi4KK1BBU1MgZGVyaXZlQml0cygic2hhLTM4NCIsIDApIHJlamVjdGVkIHByb21pc2UgIHdp
dGggT3BlcmF0aW9uRXJyb3IgKERPTSBFeGNlcHRpb24gMzQpOiBUaGUgb3BlcmF0aW9uIGZhaWxl
ZCBmb3IgYW4gb3BlcmF0aW9uLXNwZWNpZmljIHJlYXNvbi4KK1BBU1MgQml0IGRlcml2YXRpb25z
IGZvciBTSEEtMzg0IHdpdGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFs
bCBwYXNzZWQKK1BBU1MgZGVyaXZlQml0cygic2hhLTM4NCIsIDI1NiAqIDQ4ICogOCkgcmVqZWN0
ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25FcnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBv
cGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVyYXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBk
ZXJpdmVCaXRzKCJzaGEtNTEyIiwgMCkgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25F
cnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVy
YXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBCaXQgZGVyaXZhdGlvbnMgZm9yIFNIQS01MTIg
d2l0aCBtaW5pbXVtLCBtYXhpbXVtIGFuZCBIYXNoTGVuIGxlbmd0aHMgYWxsIHBhc3NlZAorUEFT
UyBkZXJpdmVCaXRzKCJzaGEtNTEyIiwgMjU2ICogNjQgKiA4KSByZWplY3RlZCBwcm9taXNlICB3
aXRoIE9wZXJhdGlvbkVycm9yIChET00gRXhjZXB0aW9uIDM0KTogVGhlIG9wZXJhdGlvbiBmYWls
ZWQgZm9yIGFuIG9wZXJhdGlvbi1zcGVjaWZpYyByZWFzb24uCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9oa2RmLWRlcml2ZS1iaXRzLWxlbmd0aC1saW1pdHMuaHRtbCBiL0xheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGFmMmRjMjcwMTQyOWEyNzE0YWJiYzI2ODQwNmNiZWUzNjg3ZDM1YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0
cy1sZW5ndGgtbGltaXRzLmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNj
cmlwdGlvbigiVGVzdCBIS0RGIGRlcml2ZUJpdHMgb3BlcmF0aW9uIGZvciBjb3JuZXItY2FzZSBs
ZW5ndGggdmFsdWVzIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgbm9uRXh0cmFj
dGFibGUgPSBmYWxzZTsKK3ZhciByYXdLZXkgPSBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b09a
RkxJRVBNciIpOwordmFyIGluZm8gPSBhc2NpaVRvVWludDhBcnJheSgiam5Pdzk5b08iKTsKK3Zh
ciBzYWx0ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PIik7CisKK2NyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJyYXciLCByYXdLZXksICJIS0RGIiwgbm9uRXh0cmFjdGFibGUsIFsiZGVyaXZl
Qml0cyJdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIGJhc2VLZXkgPSByZXN1bHQ7CisK
KyAgICBkZXJpdmVCaXRzID0gZnVuY3Rpb24oaGFzaCwgbGVuZ3RoKSB7CisgICAgICAgIHJldHVy
biBjcnlwdG8uc3VidGxlLmRlcml2ZUJpdHMoe25hbWU6ICJIS0RGIiwgaW5mbzogaW5mbywgc2Fs
dDogc2FsdCwgaGFzaDogaGFzaH0sIGJhc2VLZXksIGxlbmd0aCk7CisgICAgfTsKKworICAgIC8v
IEZvciBlYWNoIFNIQSBhbGdvcml0aG0gYW5kIHRoZSBjb3JyZXNwb25kaW5nIEhhc2hMZW4gbGVu
Z3RoLCB3ZSBjaGVjayB0aGF0OgorICAgIC8vICAgLSBkZXJpdmluZyB3aXRoIHplcm8gbGVuZ3Ro
IHJlamVjdHMsCisgICAgLy8gICAtIGRlcml2aW5nIHdpdGggOCwgSGFzaExlbiAqIDggYW5kIDI1
NSAqIEhhc2hMZW4gKiA4IHJlc29sdmVzLAorICAgIC8vICAgLSBkZXJpdmluZyB3aXRoIDI1NiAq
IEhhc2hMZW4gKiA4IHJlamVjdHMuCisKKyAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgLy8gU0hBLTEsIGhhc2ggb3V0cHV0IGxlbmd0
aCBpcyAyMCBieXRlcworICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJz
aGEtMSIsIDApJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTEiLCA4KSwKKyAg
ICAgICAgICAgICAgICBkZXJpdmVCaXRzKCJzaGEtMSIsIDIwICogOCksCisgICAgICAgICAgICAg
ICAgZGVyaXZlQml0cygic2hhLTEiLCAyNTUgKiAyMCAqIDgpCisgICAgICAgICAgICBdKS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkJpdCBkZXJp
dmF0aW9ucyBmb3IgU0hBLTEgd2l0aCBtaW5pbXVtLCBtYXhpbXVtIGFuZCBIYXNoTGVuIGxlbmd0
aHMgYWxsIHBhc3NlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRSZWplY3QoJ2Rl
cml2ZUJpdHMoInNoYS0xIiwgMjU2ICogMjAgKiA4KScpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIC8vIFNIQS0y
MjQsIGhhc2ggb3V0cHV0IGxlbmd0aCBpcyAyOCBieXRlcworICAgICAgICByZXR1cm4gc2hvdWxk
UmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEtMjI0IiwgMCknKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkZXJp
dmVCaXRzKCJzaGEtMjI0IiwgOCksCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTIy
NCIsIDI4ICogOCksCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTIyNCIsIDI1NSAq
IDI4ICogOCkKKyAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiQml0IGRlcml2YXRpb25zIGZvciBTSEEtMjI0IHdpdGggbWlu
aW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEtMjI0IiwgMjU2ICog
MjggKiA4KScpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICAgIC8vIFNIQS0yNTYsIGhhc2ggb3V0cHV0IGxlbmd0aCBp
cyAzMiBieXRlcworICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEt
MjU2IiwgMCknKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkZXJpdmVCaXRzKCJzaGEtMjU2IiwgOCksCisg
ICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTI1NiIsIDMyICogOCksCisgICAgICAgICAg
ICAgICAgZGVyaXZlQml0cygic2hhLTI1NiIsIDI1NSAqIDMyICogOCkKKyAgICAgICAgICAgIF0p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiQml0
IGRlcml2YXRpb25zIGZvciBTSEEtMjU2IHdpdGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExl
biBsZW5ndGhzIGFsbCBwYXNzZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkUmVq
ZWN0KCdkZXJpdmVCaXRzKCJzaGEtMjU2IiwgMjU2ICogMzIgKiA4KScpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAg
IC8vIFNIQS0zODQsIGhhc2ggb3V0cHV0IGxlbmd0aCBpcyA0OCBieXRlcworICAgICAgICByZXR1
cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEtMzg0IiwgMCknKS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICBkZXJpdmVCaXRzKCJzaGEtMzg0IiwgOCksCisgICAgICAgICAgICAgICAgZGVyaXZlQml0
cygic2hhLTM4NCIsIDQ4ICogOCksCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTM4
NCIsIDI1NSAqIDQ4ICogOCkKKyAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiQml0IGRlcml2YXRpb25zIGZvciBTSEEtMzg0
IHdpdGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEtMzg0
IiwgMjU2ICogNDggKiA4KScpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIC8vIFNIQS01MTIsIGhhc2ggb3V0cHV0
IGxlbmd0aCBpcyA2NCBieXRlcworICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdkZXJpdmVC
aXRzKCJzaGEtNTEyIiwgMCknKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBkZXJpdmVCaXRzKCJzaGEtNTEy
IiwgOCksCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTUxMiIsIDY0ICogOCksCisg
ICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTUxMiIsIDI1NSAqIDY0ICogOCkKKyAgICAg
ICAgICAgIF0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiQml0IGRlcml2YXRpb25zIGZvciBTSEEtNTEyIHdpdGggbWluaW11bSwgbWF4aW11bSBh
bmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2hvdWxkUmVqZWN0KCdkZXJpdmVCaXRzKCJzaGEtNTEyIiwgMjU2ICogNjQgKiA4KScpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSkudGhlbihmaW5pc2hKU1Rlc3Qs
IGZpbmlzaEpTVGVzdCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRhZjEwNDNlZGEzNzJhMTQx
Nzk2ODU4OWVmN2MzODQ4MzJiYjIxN2MuLmU4NDM1OTRhMzM5MjYyOGVjYzFkN2JhYmVlMTIzOWRl
MDFkZDk0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBA
IC03MjQsNiArNzI0LDEyIEBAIEJ1ZyhHVEspIGVkaXRpbmcvc2VjdXJlLWlucHV0IFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3dlYmtpdFN1YnRsZSBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUgWyBTa2lwIF0KK2NyeXB0by9zdWJ0bGUvaGtkZi1k
ZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvaGtk
Zi1kZXJpdmUtYml0cy1tYWxmb3JtZWQtcGFyYW1ldHJzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9z
dWJ0bGUvaGtkZi1pbXBvcnQta2V5LWRlcml2ZS1iaXRzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9z
dWJ0bGUvaGtkZi1pbXBvcnQta2V5LWRlcml2ZS1obWFjLWtleS5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL2hrZGYtaW1wb3J0LWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2hr
ZGYtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1sIFsgUGFzcyBdCiBjcnlwdG8v
c3VidGxlL2htYWMtZXhwb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1sIFsgUGFzcyBd
CiBjcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMS5odG1sIFsg
UGFzcyBdCiBjcnlwdG8vc3VidGxlL2htYWMtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMjI0
Lmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308801</attachid>
            <date>2017-05-01 22:45:31 -0700</date>
            <delta_ts>2017-05-01 22:45:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171074-20170502074530.patch</filename>
            <type>text/plain</type>
            <size>19510</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlY2RjNGI2NzZiNWRj
ZjQ3ODM4MDY3ZjUwYzFlMDliYzIwZjJkMS4uY2Y0MWU4YmU2OWYxNjExNTJmNzMxNDc2Y2Y1YWNh
MWFhZjI0Y2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA1LTAxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBIS0RG
IGJpdCBkZXJpdmF0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0
YW56YXJvLgorCisgICAgICAgIEltcGxlbWVudCBiaXQgZGVyaXZhdGlvbiBzdXBwb3J0IGZvciB0
aGUgSEtERiBhbGdvcml0aG0gZm9yIGNvbmZpZ3VyYXRpb25zCisgICAgICAgIHRoYXQgdXNlIGxp
YmdjcnlwdC4KKworICAgICAgICBsaWJnY3J5cHQgZG9lc24ndCBwcm92aWRlIEhLREYgc3VwcG9y
dCBvdXQgb2YgdGhlIGJveCwgc28gd2UgaGF2ZSB0bworICAgICAgICBpbXBsZW1lbnQgdGhlIHR3
byBzdGVwcyBtYW51YWxseS4gSW4gdGhlIGZpcnN0IG9uZSwgd2UgcmV0cmlldmUgdGhlCisgICAg
ICAgIHBzZXVkby1yYW5kb20ga2V5IGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgTUFDIGFsZ29yaXRo
bSB3aXRoIHRoZSBzYWx0IGRhdGEKKyAgICAgICAgYXMgdGhlIGtleSBhbmQgdGhlIGtleSBkYXRh
IGFzIHRoZSBpbnB1dCBrZXlpbmcgbWF0ZXJpYWwuCisKKyAgICAgICAgSW4gdGhlIGV4cGFuZCBz
dGVwLCB3ZSBkbyB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIGl0ZXJhdGlvbnMgdG8gZGVyaXZlCisg
ICAgICAgIGEgc3VmZmljaWVudCBhbW91bnQgb2YgZGF0YSwgdXNpbmcgdGhlIHNhbWUgTUFDIGFs
Z29yaXRobSB3aXRoIHRoZQorICAgICAgICBwc2V1ZG8tcmFuZG9tIGtleSBmcm9tIHRoZSBwcmV2
aW91cyBzdGVwIG9uIHRoZSBkYXRhIHdlIGNvbXBvc2UgZnJvbSB0aGUKKyAgICAgICAgcHJldmlv
dXMgYmxvY2sgZGF0YSwgdGhlIGluZm8gZGF0YSwgYW5kIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB2
YWx1ZS4gVGhlCisgICAgICAgIHJlc3VsdGluZyBibG9ja3MgYXJlIGFwcGVuZGVkIHRvZ2V0aGVy
IHVudGlsIHRoZXkgY2FuIGJlIGNsaXBwZWQgdG8gdGhlCisgICAgICAgIGRlc2lyZWQgb3V0cHV0
IGxlbmd0aC4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdD
cnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWNBbGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVyaXZlQml0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA1LTAx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbnN1cmUgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlIHNlbmRzIGEgYmxhY2sgZnJhbWUgd2hlbiBpdHMgcmVs
YXRlZCBzb3VyY2UgaXMgbXV0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IGMwM2M5N2EwOWI0
YTlmNzUwM2Y4YjdhOWRjN2Y5NmQ0ODc0Y2I1NjMuLmI5OGY5YTdjOWIwZjNhYThiYjA0NjRjZjNk
YTdlYzU1ZmQ3MTkwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtMSw1ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsMTMgKzMwLDE3NSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJh
bXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9j
cnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxp
dGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtE
Rjo6cGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBzaXplX3QsIFZlY3RvckNhbGxiYWNrJiYsIEV4
Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQor
Ly8gbGliZ2NyeXB0IGRvZXNuJ3QgcHJvdmlkZSBIS0RGIGZ1bmN0aW9uYWxpdHksIHNvIHdlIGhh
dmUgdG8gaW1wbGVtZW50IGl0IG1hbnVhbGx5LgorLy8gV2Ugc2hvdWxkIHN3aXRjaCB0byB0aGUg
bGliZ2NyeXB0LXByb3ZpZGVkIGltcGxlbWVudGF0aW9uIG9uY2UgaXQncyBhdmFpbGFibGUuCisv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNTM2CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPGludD4gbWFjQWxnb3JpdGhtRm9ySGFzaEZ1bmN0aW9uKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIp
IHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICBy
ZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEExOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMjI0OworICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAgICAgcmV0dXJu
IEdDUllfTUFDX0hNQUNfU0hBMjU2OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzM4NDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMzg0OworICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0dXJuIEdD
UllfTUFDX0hNQUNfU0hBNTEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgc2FsdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbmZvLCBzaXplX3QgbGVu
Z3RoSW5CeXRlcywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gbGliZ2NyeXB0IGRvZXNuJ3QgcHJvdmlkZSBIS0RG
IHN1cHBvcnQsIHNvIHdlIGhhdmUgdG8gaW1wbGVtZW50CisgICAgLy8gdGhlIGZ1bmN0aW9uYWxp
dHkgb3Vyc2VsdmVzIGFzIHNwZWNpZmllZCBpbiBSRkM1ODY5LgorICAgIC8vIGh0dHBzOi8vd3d3
LmlldGYub3JnL3JmYy9yZmM1ODY5LnR4dAorCisgICAgYXV0byBtYWNBbGdvcml0aG0gPSBtYWNB
bGdvcml0aG1Gb3JIYXNoRnVuY3Rpb24oaWRlbnRpZmllcik7CisgICAgaWYgKCFtYWNBbGdvcml0
aG0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBXZSBjYW4gaW1tZWRp
YXRlbHkgZGlzY2FyZCBpbnZhbGlkIG91dHB1dCBsZW5ndGhzLCBvdGhlcndpc2UgbmVlZGVkIGZv
ciB0aGUgZXhwYW5kIHN0ZXAuCisgICAgc2l6ZV90IG1hY0xlbmd0aCA9IGdjcnlfbWFjX2dldF9h
bGdvX21hY2xlbigqbWFjQWxnb3JpdGhtKTsKKyAgICBpZiAobGVuZ3RoSW5CeXRlcyA+IG1hY0xl
bmd0aCAqIDI1NSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9tYWNfaGRfdD4gaGFuZGxlOworICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfbWFjX29wZW4oJmhhbmRsZSwgKm1hY0FsZ29yaXRobSwgMCwgbnVsbHB0cik7Cisg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICAvLyBTdGVwIDEgLS0gRXh0cmFjdC4gQSBwc2V1ZG8tcmFuZG9tIGtleSBpcyBnZW5lcmF0
ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobQorICAgIC8vIGZvciB0aGUgZ2l2ZW4gc2Fs
dCB2YWx1ZSAodXNlZCBhcyBhIGtleSkgYW5kIHRoZSAnaW5wdXQga2V5aW5nIG1hdGVyaWFsJy4K
KyAgICBWZWN0b3I8dWludDhfdD4gcHNldWRvUmFuZG9tS2V5KG1hY0xlbmd0aCk7CisgICAgewor
ICAgICAgICAvLyBJZiB0aGUgc2FsdCB2ZWN0b3IgaXMgZW1wdHksIGEgemVyb2VkLW91dCBrZXkg
b2YgbWFjTGVuZ3RoIHNpemUgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIGlmIChzYWx0LmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHplcm9lZEtleShtYWNMZW5ndGgs
IDApOworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCB6ZXJvZWRL
ZXkuZGF0YSgpLCB6ZXJvZWRLZXkuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBlcnJvciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUo
KSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAg
ICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gZ2NyeV9tYWNfd3JpdGUoaGFu
ZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAg
c2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1ZG9SYW5kb21LZXkuc2l6ZSgpOworICAg
ICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgp
LCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNv
bWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBwcm9w
ZXIgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIGlmIChwc2V1ZG9SYW5kb21LZXlTaXplICE9IG1h
Y0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAg
Ly8gU3RlcCAjMiAtLSBFeHBhbmQuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dHB1dDsKKyAgICB7
CisgICAgICAgIC8vIERlZHVjZSB0aGUgbnVtYmVyIG9mIG5lZWRlZCBpdGVyYXRpb25zIHRvIHJl
dHJpZXZlIHRoZSBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEuCisgICAgICAgIHNpemVfdCBudW1J
dGVyYXRpb25zID0gKGxlbmd0aEluQnl0ZXMgKyBtYWNMZW5ndGgpIC8gbWFjTGVuZ3RoOworICAg
ICAgICAvLyBCbG9jayBmcm9tIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gaXMgdXNlZCBpbiB0aGUg
Y3VycmVudCBvbmUsIGV4Y2VwdAorICAgICAgICAvLyBpbiB0aGUgZmlyc3QgaXRlcmF0aW9uIHdo
ZW4gaXQncyBlbXB0eS4KKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGxhc3RCbG9jayhtYWNMZW5n
dGgpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytp
KSB7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3Jlc2V0KGhhbmRsZSk7CisgICAgICAg
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19z
ZXRrZXkoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgpLCBwc2V1ZG9SYW5kb21LZXkuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
KDApID0gZW1wdHkgc3RyaW5nICh6ZXJvIGxlbmd0aCkgLS0gaS5lLiBlbXB0eSBsYXN0QmxvY2sK
KyAgICAgICAgICAgIC8vIFQoaSkgPSBITUFDLUhhc2goUFJLLCBUKGktMSkgfCBpbmZvIHwgaGV4
KGkpKSAtLSB8IHJlcHJlc2VudHMgY29uY2F0ZW5hdGlvbgorICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJsb2NrRGF0YTsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAgICAgICAgIGJs
b2NrRGF0YS5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrRGF0YS5h
cHBlbmRWZWN0b3IoaW5mbyk7CisgICAgICAgICAgICBibG9ja0RhdGEuYXBwZW5kKGkgKyAxKTsK
KworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGJsb2NrRGF0YS5k
YXRhKCksIGJsb2NrRGF0YS5zaXplKCkpOworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHNpemVfdCBibG9ja1NpemUgPSBsYXN0QmxvY2suc2l6ZSgpOworICAg
ICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19yZWFkKGhhbmRsZSwgbGFzdEJsb2NrLmRhdGEoKSwg
JmJsb2NrU2l6ZSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgaWYgbGliZ2NyeXB0IGRpZG4ndCB3cml0ZSBvdXQg
dGhlIHByb3BlciBhbW91bnQgb2YgZGF0YS4KKyAgICAgICAgICAgIGlmIChibG9ja1NpemUgIT0g
bGFzdEJsb2NrLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQgYmxvY2sgZGF0YSB0byB0aGUgb3V0
cHV0IHZlY3Rvci4KKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIENsaXAgb3V0cHV0IHZlY3RvciB0byB0aGUgcmVx
dWVzdGVkIHNpemUuCisgICAgb3V0cHV0LnJlc2l6ZShsZW5ndGhJbkJ5dGVzKTsKKyAgICByZXR1
cm4gb3V0cHV0OworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZl
Qml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0
ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorewor
ICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFy
YW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkp
LCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAg
ICAgICAgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1I
a2RmUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiByYXdLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0
VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8gOCwgaGtkZlBh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NjZkNTFmMGJlZmYzMjJlMmQwMzljYjdkMjIzNDli
OTg3M2M1ZWExLi40OTQzY2E3MGJiOTc3OTkyNjQzOGY0NTlkNDAwODY1Mzk3MzM1MTQzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDUtMDEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEhLREYgYml0IGRlcml2YXRpb24gc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMDc0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgVGhl
IGNyeXB0by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLmh0bWwgdGVzdCBp
cyBhZGRlZCwgdGVzdGluZyB0aGUKKyAgICAgICAgY29ybmVyLWNhc2UgbGVuZ3RoIHZhbHVlcyBm
b3Igd2hpY2ggdGhlIGJpdCBkZXJpdmF0aW9uIG9wZXJhdGlvbiBtdXN0IHN1Y2NlZWQgb3IKKyAg
ICAgICAgZmFpbCBmb3IgYW55IHNwZWNpZmllZCBTSEEgaGFzaCBhbGdvcml0aG0uIFdpdGggSGFz
aExlbiBhcyB0aGUgYWxnb3JpdGhtJ3Mgb3V0cHV0CisgICAgICAgIGxlbmd0aCwgdGhlIG9wZXJh
dGlvbiBzaG91bGQgcmVqZWN0IGZvciBsZW5ndGhzIG9mIDAgb3IgYWJvdmUgMjU1ICogSGFzaExl
biAqIDguCisgICAgICAgIFRoZSBvcGVyYXRpb24gc2hvdWxkIHJlc29sdmUgZm9yIGxlbmd0aHMg
YmV0d2VlbiB0aGUgdHdvIGxpbWl0cywgd2l0aCB0ZXN0aW5nCisgICAgICAgIHBlcmZvcm1lZCBv
biBsZW5ndGhzIG9mIDggKHRoZSBtaW5pbXVtIG91dHB1dCBsZW5ndGgpLCBIYXNoTGVuICogOCAo
bWF0Y2hpbmcgdGhlCisgICAgICAgIG91dHB1dCBsZW5ndGggb2YgdGhlIGhhc2ggYWxnb3JpdGht
KSwgYW5kIDI1NSAqIEhhc2hMZW4gKiA4ICh0aGUgbWF4aW11bQorICAgICAgICBkZXJpdmF0aW9u
IG91dHB1dCBsZW5ndGgpLgorCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9oa2RmLWRlcml2ZS1i
aXRzLWxlbmd0aC1saW1pdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8v
c3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRoZSBIS0RGIHRlc3Rz
IHVuZGVyIGNyeXB0by9zdWJ0bGUvLgorCiAyMDE3LTA1LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IExheW91dFRlc3Qgd29ya2Vycy93
YXNtLWhhc2hzZXQtbWFueS5odG1sIGlzIGEgZmxha3kgdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9oa2RmLWRlcml2ZS1iaXRzLWxlbmd0aC1saW1pdHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9oa2RmLWRlcml2ZS1iaXRzLWxl
bmd0aC1saW1pdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMWY0ZDZjNjA3NjdhNzBkMGVk
YzJkZTA2YjdkMWI1MDU1NzY1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNCBAQAorVGVzdCBIS0RGIGRlcml2ZUJpdHMgb3BlcmF0aW9uIGZvciBjb3JuZXIt
Y2FzZSBsZW5ndGggdmFsdWVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGRlcml2ZUJpdHMoInNoYS0xIiwgMCkgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25F
cnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVy
YXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBCaXQgZGVyaXZhdGlvbnMgZm9yIFNIQS0xIHdp
dGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQKK1BBU1Mg
ZGVyaXZlQml0cygic2hhLTEiLCAyNTYgKiAyMCAqIDgpIHJlamVjdGVkIHByb21pc2UgIHdpdGgg
T3BlcmF0aW9uRXJyb3IgKERPTSBFeGNlcHRpb24gMzQpOiBUaGUgb3BlcmF0aW9uIGZhaWxlZCBm
b3IgYW4gb3BlcmF0aW9uLXNwZWNpZmljIHJlYXNvbi4KK1BBU1MgZGVyaXZlQml0cygic2hhLTIy
NCIsIDApIHJlamVjdGVkIHByb21pc2UgIHdpdGggT3BlcmF0aW9uRXJyb3IgKERPTSBFeGNlcHRp
b24gMzQpOiBUaGUgb3BlcmF0aW9uIGZhaWxlZCBmb3IgYW4gb3BlcmF0aW9uLXNwZWNpZmljIHJl
YXNvbi4KK1BBU1MgQml0IGRlcml2YXRpb25zIGZvciBTSEEtMjI0IHdpdGggbWluaW11bSwgbWF4
aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQKK1BBU1MgZGVyaXZlQml0cygic2hh
LTIyNCIsIDI1NiAqIDI4ICogOCkgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25FcnJv
ciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVyYXRp
b24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBkZXJpdmVCaXRzKCJzaGEtMjU2IiwgMCkgcmVqZWN0
ZWQgcHJvbWlzZSAgd2l0aCBPcGVyYXRpb25FcnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBv
cGVyYXRpb24gZmFpbGVkIGZvciBhbiBvcGVyYXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBC
aXQgZGVyaXZhdGlvbnMgZm9yIFNIQS0yNTYgd2l0aCBtaW5pbXVtLCBtYXhpbXVtIGFuZCBIYXNo
TGVuIGxlbmd0aHMgYWxsIHBhc3NlZAorUEFTUyBkZXJpdmVCaXRzKCJzaGEtMjU2IiwgMjU2ICog
MzIgKiA4KSByZWplY3RlZCBwcm9taXNlICB3aXRoIE9wZXJhdGlvbkVycm9yIChET00gRXhjZXB0
aW9uIDM0KTogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIGFuIG9wZXJhdGlvbi1zcGVjaWZpYyBy
ZWFzb24uCitQQVNTIGRlcml2ZUJpdHMoInNoYS0zODQiLCAwKSByZWplY3RlZCBwcm9taXNlICB3
aXRoIE9wZXJhdGlvbkVycm9yIChET00gRXhjZXB0aW9uIDM0KTogVGhlIG9wZXJhdGlvbiBmYWls
ZWQgZm9yIGFuIG9wZXJhdGlvbi1zcGVjaWZpYyByZWFzb24uCitQQVNTIEJpdCBkZXJpdmF0aW9u
cyBmb3IgU0hBLTM4NCB3aXRoIG1pbmltdW0sIG1heGltdW0gYW5kIEhhc2hMZW4gbGVuZ3RocyBh
bGwgcGFzc2VkCitQQVNTIGRlcml2ZUJpdHMoInNoYS0zODQiLCAyNTYgKiA0OCAqIDgpIHJlamVj
dGVkIHByb21pc2UgIHdpdGggT3BlcmF0aW9uRXJyb3IgKERPTSBFeGNlcHRpb24gMzQpOiBUaGUg
b3BlcmF0aW9uIGZhaWxlZCBmb3IgYW4gb3BlcmF0aW9uLXNwZWNpZmljIHJlYXNvbi4KK1BBU1Mg
ZGVyaXZlQml0cygic2hhLTUxMiIsIDApIHJlamVjdGVkIHByb21pc2UgIHdpdGggT3BlcmF0aW9u
RXJyb3IgKERPTSBFeGNlcHRpb24gMzQpOiBUaGUgb3BlcmF0aW9uIGZhaWxlZCBmb3IgYW4gb3Bl
cmF0aW9uLXNwZWNpZmljIHJlYXNvbi4KK1BBU1MgQml0IGRlcml2YXRpb25zIGZvciBTSEEtNTEy
IHdpdGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5ndGhzIGFsbCBwYXNzZWQKK1BB
U1MgZGVyaXZlQml0cygic2hhLTUxMiIsIDI1NiAqIDY0ICogOCkgcmVqZWN0ZWQgcHJvbWlzZSAg
d2l0aCBPcGVyYXRpb25FcnJvciAoRE9NIEV4Y2VwdGlvbiAzNCk6IFRoZSBvcGVyYXRpb24gZmFp
bGVkIGZvciBhbiBvcGVyYXRpb24tc3BlY2lmaWMgcmVhc29uLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NyeXB0by9zdWJ0bGUvaGtkZi1kZXJpdmUtYml0cy1sZW5ndGgtbGltaXRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBhZjJkYzI3MDE0MjlhMjcxNGFiYmMyNjg0MDZjYmVlMzY4N2QzNWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2hrZGYtZGVyaXZlLWJp
dHMtbGVuZ3RoLWxpbWl0cy5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvY29tbW9uLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVz
Y3JpcHRpb24oIlRlc3QgSEtERiBkZXJpdmVCaXRzIG9wZXJhdGlvbiBmb3IgY29ybmVyLWNhc2Ug
bGVuZ3RoIHZhbHVlcyIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIG5vbkV4dHJh
Y3RhYmxlID0gZmFsc2U7Cit2YXIgcmF3S2V5ID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9P
WkZMSUVQTXIiKTsKK3ZhciBpbmZvID0gYXNjaWlUb1VpbnQ4QXJyYXkoImpuT3c5OW9PIik7Cit2
YXIgc2FsdCA9IGFzY2lpVG9VaW50OEFycmF5KCJqbk93OTlvTyIpOworCitjcnlwdG8uc3VidGxl
LmltcG9ydEtleSgicmF3IiwgcmF3S2V5LCAiSEtERiIsIG5vbkV4dHJhY3RhYmxlLCBbImRlcml2
ZUJpdHMiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBiYXNlS2V5ID0gcmVzdWx0Owor
CisgICAgZGVyaXZlQml0cyA9IGZ1bmN0aW9uKGhhc2gsIGxlbmd0aCkgeworICAgICAgICByZXR1
cm4gY3J5cHRvLnN1YnRsZS5kZXJpdmVCaXRzKHtuYW1lOiAiSEtERiIsIGluZm86IGluZm8sIHNh
bHQ6IHNhbHQsIGhhc2g6IGhhc2h9LCBiYXNlS2V5LCBsZW5ndGgpOworICAgIH07CisKKyAgICAv
LyBGb3IgZWFjaCBTSEEgYWxnb3JpdGhtIGFuZCB0aGUgY29ycmVzcG9uZGluZyBIYXNoTGVuIGxl
bmd0aCwgd2UgY2hlY2sgdGhhdDoKKyAgICAvLyAgIC0gZGVyaXZpbmcgd2l0aCB6ZXJvIGxlbmd0
aCByZWplY3RzLAorICAgIC8vICAgLSBkZXJpdmluZyB3aXRoIDgsIEhhc2hMZW4gKiA4IGFuZCAy
NTUgKiBIYXNoTGVuICogOCByZXNvbHZlcywKKyAgICAvLyAgIC0gZGVyaXZpbmcgd2l0aCAyNTYg
KiBIYXNoTGVuICogOCByZWplY3RzLgorCisgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIC8vIFNIQS0xLCBoYXNoIG91dHB1dCBsZW5n
dGggaXMgMjAgYnl0ZXMKKyAgICAgICAgcmV0dXJuIHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygi
c2hhLTEiLCAwKScpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS0xIiwgOCksCisg
ICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTEiLCAyMCAqIDgpLAorICAgICAgICAgICAg
ICAgIGRlcml2ZUJpdHMoInNoYS0xIiwgMjU1ICogMjAgKiA4KQorICAgICAgICAgICAgXSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJCaXQgZGVy
aXZhdGlvbnMgZm9yIFNIQS0xIHdpdGggbWluaW11bSwgbWF4aW11bSBhbmQgSGFzaExlbiBsZW5n
dGhzIGFsbCBwYXNzZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkUmVqZWN0KCdk
ZXJpdmVCaXRzKCJzaGEtMSIsIDI1NiAqIDIwICogOCknKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAvLyBTSEEt
MjI0LCBoYXNoIG91dHB1dCBsZW5ndGggaXMgMjggYnl0ZXMKKyAgICAgICAgcmV0dXJuIHNob3Vs
ZFJlamVjdCgnZGVyaXZlQml0cygic2hhLTIyNCIsIDApJykudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGVy
aXZlQml0cygic2hhLTIyNCIsIDgpLAorICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS0y
MjQiLCAyOCAqIDgpLAorICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS0yMjQiLCAyNTUg
KiAyOCAqIDgpCisgICAgICAgICAgICBdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkJpdCBkZXJpdmF0aW9ucyBmb3IgU0hBLTIyNCB3aXRoIG1p
bmltdW0sIG1heGltdW0gYW5kIEhhc2hMZW4gbGVuZ3RocyBhbGwgcGFzc2VkIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygic2hhLTIyNCIsIDI1NiAq
IDI4ICogOCknKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAvLyBTSEEtMjU2LCBoYXNoIG91dHB1dCBsZW5ndGgg
aXMgMzIgYnl0ZXMKKyAgICAgICAgcmV0dXJuIHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygic2hh
LTI1NiIsIDApJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTI1NiIsIDgpLAor
ICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS0yNTYiLCAzMiAqIDgpLAorICAgICAgICAg
ICAgICAgIGRlcml2ZUJpdHMoInNoYS0yNTYiLCAyNTUgKiAzMiAqIDgpCisgICAgICAgICAgICBd
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkJp
dCBkZXJpdmF0aW9ucyBmb3IgU0hBLTI1NiB3aXRoIG1pbmltdW0sIG1heGltdW0gYW5kIEhhc2hM
ZW4gbGVuZ3RocyBhbGwgcGFzc2VkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJl
amVjdCgnZGVyaXZlQml0cygic2hhLTI1NiIsIDI1NiAqIDMyICogOCknKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAg
ICAvLyBTSEEtMzg0LCBoYXNoIG91dHB1dCBsZW5ndGggaXMgNDggYnl0ZXMKKyAgICAgICAgcmV0
dXJuIHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygic2hhLTM4NCIsIDApJykudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgZGVyaXZlQml0cygic2hhLTM4NCIsIDgpLAorICAgICAgICAgICAgICAgIGRlcml2ZUJp
dHMoInNoYS0zODQiLCA0OCAqIDgpLAorICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS0z
ODQiLCAyNTUgKiA0OCAqIDgpCisgICAgICAgICAgICBdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkJpdCBkZXJpdmF0aW9ucyBmb3IgU0hBLTM4
NCB3aXRoIG1pbmltdW0sIG1heGltdW0gYW5kIEhhc2hMZW4gbGVuZ3RocyBhbGwgcGFzc2VkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygic2hhLTM4
NCIsIDI1NiAqIDQ4ICogOCknKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAvLyBTSEEtNTEyLCBoYXNoIG91dHB1
dCBsZW5ndGggaXMgNjQgYnl0ZXMKKyAgICAgICAgcmV0dXJuIHNob3VsZFJlamVjdCgnZGVyaXZl
Qml0cygic2hhLTUxMiIsIDApJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgZGVyaXZlQml0cygic2hhLTUx
MiIsIDgpLAorICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS01MTIiLCA2NCAqIDgpLAor
ICAgICAgICAgICAgICAgIGRlcml2ZUJpdHMoInNoYS01MTIiLCAyNTUgKiA2NCAqIDgpCisgICAg
ICAgICAgICBdKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkJpdCBkZXJpdmF0aW9ucyBmb3IgU0hBLTUxMiB3aXRoIG1pbmltdW0sIG1heGltdW0g
YW5kIEhhc2hMZW4gbGVuZ3RocyBhbGwgcGFzc2VkIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNob3VsZFJlamVjdCgnZGVyaXZlQml0cygic2hhLTUxMiIsIDI1NiAqIDY0ICogOCknKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pLnRoZW4oZmluaXNoSlNUZXN0
LCBmaW5pc2hKU1Rlc3QpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ZWI0ZDhmYTNhMmQyN2Qw
OWM2ZWY5ZGFlYThkMzU5NGQxYTlkNWNkLi4yZDZmNzBiOThlYTFkNjE4MjI2N2M1MDU3MTg2ZTdm
ZjUzYTI0ZTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNzI0LDYgKzcyNCwxMiBAQCBCdWcoR1RLKSBlZGl0aW5nL3NlY3VyZS1pbnB1dCBbIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvMTMzMTIyIGNyeXB0by93ZWJraXRTdWJ0bGUgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlIFsgU2tpcCBdCitjcnlwdG8vc3VidGxlL2hrZGYt
ZGVyaXZlLWJpdHMtbGVuZ3RoLWxpbWl0cy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2hr
ZGYtZGVyaXZlLWJpdHMtbWFsZm9ybWVkLXBhcmFtZXRycy5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL2hrZGYtaW1wb3J0LWtleS1kZXJpdmUtYml0cy5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL2hrZGYtaW1wb3J0LWtleS1kZXJpdmUtaG1hYy1rZXkuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9oa2RmLWltcG9ydC1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9o
a2RmLWltcG9ydC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5cHRv
L3N1YnRsZS9obWFjLWV4cG9ydC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3Mg
XQogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTEuaHRtbCBb
IFBhc3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIy
NC5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>