<?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>171103</bug_id>
          
          <creation_ts>2017-04-21 00:24:46 -0700</creation_ts>
          <short_desc>[GCrypt] ECDSA signing and verification support</short_desc>
          <delta_ts>2017-05-01 23:49:09 -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>cgarcia</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1299538</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-21 00:24:46 -0700</bug_when>
    <thetext>[GCrypt] ECDSA signing and verification support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299541</commentid>
    <comment_count>1</comment_count>
      <attachid>307705</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-21 00:32:15 -0700</bug_when>
    <thetext>Created attachment 307705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299545</commentid>
    <comment_count>2</comment_count>
      <attachid>307705</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-04-21 00:46:47 -0700</bug_when>
    <thetext>Comment on attachment 307705
Patch

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

Doesn&apos;t this fix any test currently skipped?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:79
&gt; +std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiData(gcry_sexp_t paramSexp)

should this be static?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300330</commentid>
    <comment_count>3</comment_count>
      <attachid>307935</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-23 07:23:12 -0700</bug_when>
    <thetext>Created attachment 307935
Patch for landing

Also marks the majority of ECDSA layout tests under crypto/subtle/ as passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302115</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-27 09:08:19 -0700</bug_when>
    <thetext>Planning to land this?

Jiewen, do you mind sanity-checking it please? Thanks for looking over these patches. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302273</commentid>
    <comment_count>5</comment_count>
      <attachid>307935</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-27 13:59:53 -0700</bug_when>
    <thetext>Comment on attachment 307935
Patch for landing

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

Looks good to me.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:151
&gt; +    Vector&lt;uint8_t&gt; signature;

Not sure if you could always assume that r and s equal to key size as this is in fact not the case for CommonCrypto.
From RFC 6090:https://www.ietf.org/rfc/rfc6090.txt, I didn&apos;t see this guarantee as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302566</commentid>
    <comment_count>6</comment_count>
      <attachid>307935</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-28 07:13:03 -0700</bug_when>
    <thetext>Comment on attachment 307935
Patch for landing

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:151
&gt;&gt; +    Vector&lt;uint8_t&gt; signature;
&gt; 
&gt; Not sure if you could always assume that r and s equal to key size as this is in fact not the case for CommonCrypto.
&gt; From RFC 6090:https://www.ietf.org/rfc/rfc6090.txt, I didn&apos;t see this guarantee as well.

We check that the retrieved data is of proper size below, before appending the r and s data to the signature Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302705</commentid>
    <comment_count>7</comment_count>
      <attachid>307935</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-28 12:23:47 -0700</bug_when>
    <thetext>Comment on attachment 307935
Patch for landing

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

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:151
&gt;&gt;&gt; +    Vector&lt;uint8_t&gt; signature;
&gt;&gt; 
&gt;&gt; Not sure if you could always assume that r and s equal to key size as this is in fact not the case for CommonCrypto.
&gt;&gt; From RFC 6090:https://www.ietf.org/rfc/rfc6090.txt, I didn&apos;t see this guarantee as well.
&gt; 
&gt; We check that the retrieved data is of proper size below, before appending the r and s data to the signature Vector.

Sure. What I mean is a valid r and s pair does not necessarily meet the check below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302706</commentid>
    <comment_count>8</comment_count>
      <attachid>307935</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-28 12:25:26 -0700</bug_when>
    <thetext>Comment on attachment 307935
Patch for landing

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

&gt;&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:151
&gt;&gt;&gt;&gt; +    Vector&lt;uint8_t&gt; signature;
&gt;&gt;&gt; 
&gt;&gt;&gt; Not sure if you could always assume that r and s equal to key size as this is in fact not the case for CommonCrypto.
&gt;&gt;&gt; From RFC 6090:https://www.ietf.org/rfc/rfc6090.txt, I didn&apos;t see this guarantee as well.
&gt;&gt; 
&gt;&gt; We check that the retrieved data is of proper size below, before appending the r and s data to the signature Vector.
&gt; 
&gt; Sure. What I mean is a valid r and s pair does not necessarily meet the check below.

Also see: https://www.w3.org/TR/WebCryptoAPI/#dfn-convert-integer-to-octet-string</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303587</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 22:34:20 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #8)
&gt; Comment on attachment 307935 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307935&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:151
&gt; &gt;&gt;&gt;&gt; +    Vector&lt;uint8_t&gt; signature;
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Not sure if you could always assume that r and s equal to key size as this is in fact not the case for CommonCrypto.
&gt; &gt;&gt;&gt; From RFC 6090:https://www.ietf.org/rfc/rfc6090.txt, I didn&apos;t see this guarantee as well.
&gt; &gt;&gt; 
&gt; &gt;&gt; We check that the retrieved data is of proper size below, before appending the r and s data to the signature Vector.
&gt; &gt; 
&gt; &gt; Sure. What I mean is a valid r and s pair does not necessarily meet the check below.
&gt; 
&gt; Also see:
&gt; https://www.w3.org/TR/WebCryptoAPI/#dfn-convert-integer-to-octet-string

Ah, understood. I&apos;ll add a FIXME that points to a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303592</commentid>
    <comment_count>10</comment_count>
      <attachid>308802</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 22:50:03 -0700</bug_when>
    <thetext>Created attachment 308802
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303601</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-01 23:49:09 -0700</bug_when>
    <thetext>Committed r216062: &lt;http://trac.webkit.org/changeset/216062&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307705</attachid>
            <date>2017-04-21 00:32:15 -0700</date>
            <delta_ts>2017-04-23 07:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171103-20170421093214.patch</filename>
            <type>text/plain</type>
            <size>13852</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMyNDRlNjYyOTEyZGE0
Y2I2YmI3MzE3YTc0NjM5YzBmNTk1N2NiOC4uOTE0N2FlNTlkMThmOTJiMWU5YTk1MGM5MTcwZWE5
NjllMzY2ODg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA0LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBFQ0RT
QSBzaWduaW5nIGFuZCB2ZXJpZmljYXRpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFdlYkNyeXB0byBFQ0RTQSBzdXBw
b3J0IGZvciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgIGFyZSB1c2luZyBsaWJnY3J5cHQu
CisKKyAgICAgICAgRm9yIHNpZ25pbmcsIHRoZSBwcm92aWRlZCBkYXRhIGlzIGZpcnN0IGhhc2hl
ZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgZGlnZXN0IGFsZ29yaXRobSBhbmQgZW1iZWRk
ZWQgaW50byBhIGRhdGEgcy1leHByZXNzaW9uLiBJdCdzIHRoZW4KKyAgICAgICAgcGFzc2VkIHRv
IGdjcnlfcGtfc2lnbigpIGFsb25nIHdpdGggdGhlIHByaXZhdGUga2V5LCByZXR1cm5pbmcgYQor
ICAgICAgICBzaWctdmFsIHMtZXhwcmVzc2lvbi4gVGhlIHIgYW5kIHMgcGFyYW1ldGVycyBhcmUg
dGhlbiByZXRyaWV2ZWQgZnJvbQorICAgICAgICB0aGF0IHNpZy12YWwgYW5kIHRoZWlyIGRhdGEg
ZXh0cmFjdGVkIGFuZCBjb25jYXRlbmF0ZWQgaW4gdGhlIG91dHB1dAorICAgICAgICBWZWN0b3I8
Pi4KKworICAgICAgICBGb3IgdmVyaWZpY2F0aW9uLCB0aGUgZGF0YSBpcyBhZ2FpbiBoYXNoZWQg
YW5kIGVtYmVkZGVkIGludG8gYSBkYXRhCisgICAgICAgIHMtZXhwcmVzc2lvbi4gVGhlIHIgYW5k
IHMgcGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHBhc3NlZC1pbgorICAgICAgICBz
aWduYXR1cmUgVmVjdG9yPD4gYW5kIGVtYmVkZGVkIGludG8gYSBzaWctdmFsIHMtZXhwcmVzc2lv
bi4gVGhlIGRhdGEKKyAgICAgICAgYW5kIHNpZy12YWwgcy1leHByZXNzaW9ucyBhcmUgdGhlbiBw
YXNzZWQgdG8gZ2NyeV9wa192ZXJpZnkoKSBhbG9uZworICAgICAgICB3aXRoIHRoZSBwdWJsaWMg
a2V5LiBUaGUgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzIGlmIG5vIGVycm9yIGlzIHJldHVybmVkCisg
ICAgICAgIGFuZCBmYWlscyBpZiB0aGUgcmV0dXJuZWQgZXJyb3IgY29kZSBpcyBHUEdfRVJSX0JB
RF9TSUdOQVRVUkUuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVD
RFNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hDcnlwdG9EaWdlc3RBbGdvcml0
aG0pOgorICAgICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRobU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6bXBpRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWduKToKKyAgICAgICAg
KFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6CisKIDIwMTctMDQtMjAgIEtvbnN0YW50aW4gVG9rYXJl
diAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbGFtZGEgY2Fw
dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtRUNEU0FHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKaW5kZXggYWJhOTViMTI2NDU2MGUxYzk0ZmVjZGFk
MzVjZTU0ZTBlODg5ZDQyNy4uN2I2NTRlYzhhN2NlZmY0NThiMjA5ZTE3NjM0YjYyZjAzNmFiOThk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1FQ0RTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3
IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE4ICsz
MCwyNjEgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcy5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgorI2luY2x1
ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0
OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgIHJl
dHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJp
Znkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgQm9vbENhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3Jr
UXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1O
YW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiAic2hhMSI7CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gInNo
YTIyNCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAg
ICAgICByZXR1cm4gInNoYTI1NiI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gInNoYTM4NCI7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gInNoYTUxMiI7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkK
K3sKKyAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNz
aW9uOiAobmFtZSBtcGktZGF0YSkKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+
IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNH
KSk7CisgICAgaWYgKCFwYXJhbU1QSSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIC8vIFF1ZXJ5IHRoZSBkYXRhIGxlbmd0aCBmaXJzdCB0byBwcm9wZXJseSBwcmVwYXJlIHRo
ZSBidWZmZXIuCisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAwOworICAgIGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgbnVsbHB0ciwgMCwgJmRhdGFM
ZW5ndGgsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewor
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIC8vIEZpbmFsbHksIGNvcHkgdGhlIE1QSSBkYXRhIGlu
dG8gYSBwcm9wZXJseS1zaXplZCBidWZmZXIuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dHB1dChk
YXRhTGVuZ3RoKTsKKyAgICBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywg
b3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOworICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAg
cmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwg
c2l6ZV90IGtleVNpemVJbkJ5dGVzKQoreworICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlv
biB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAgICB7CisgICAgICAgIGF1dG8gZGlnZXN0QWxnb3Jp
dGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7
CisgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAgICAgIGlmICghZGlnZXN0KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFz
aCgpOworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhh
dCBjb250YWlucyByYXcgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5
X3NleHBfdD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhh
c2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFz
aGFBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIs
ICIoZGF0YShmbGFncyByYXcpKGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAgICAqc2hhQWxnb3Jp
dGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHNpZ25pbmcsIHJldHJpZXZpbmcgYSBzaWct
dmFsIHMtZXhwcmVzc2lvbiBvZiB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgLy8gKHNpZy12YWwK
KyAgICAvLyAgIChkc2EKKyAgICAvLyAgICAgKHIgci1tcGkpCisgICAgLy8gICAgIChzIHMtbXBp
KSkpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc2lnbmF0dXJlU2V4cDsK
KyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX3NpZ24oJnNpZ25hdHVyZVNleHAsIGRh
dGFTZXhwLCBrZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewor
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIC8vIFJldHJpZXZlIE1QSSBkYXRhIG9mIHRoZSByZXN1
bHRpbmcgciBhbmQgcyBpbnRlZ2Vycy4gVGhleSBhcmUgY29uY2F0ZW5hdGVkIGludG8KKyAgICAv
LyBhIHNpbmdsZSBidWZmZXIgYWZ0ZXIgY2hlY2tpbmcgdGhhdCB0aGUgZGF0YSBsZW5ndGggbWF0
Y2hlcyB0aGUga2V5IHNpemUuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKKyAgICB7
CisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHJTZXhwKGdjcnlfc2V4
cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJyIiwgMCkpOworICAgICAgICBpZiAoIXJTZXhw
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHJEYXRh
ID0gbXBpRGF0YShyU2V4cCk7CisgICAgICAgIGlmICghckRhdGEgfHwgckRhdGEtPnNpemUoKSAh
PSBrZXlTaXplSW5CeXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICAgICAgc2lnbmF0dXJlLmFwcGVuZFZlY3RvcigqckRhdGEpOworICAgIH0KKyAgICB7CisgICAg
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5k
X3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOworICAgICAgICBpZiAoIXNTZXhwKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIHNEYXRhID0gbXBp
RGF0YShzU2V4cCk7CisgICAgICAgIGlmICghc0RhdGEgfHwgc0RhdGEtPnNpemUoKSAhPSBrZXlT
aXplSW5CeXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAg
c2lnbmF0dXJlLmFwcGVuZFZlY3Rvcigqc0RhdGEpOworICAgIH0KKworICAgIHJldHVybiBzaWdu
YXR1cmU7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyLCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCit7CisgICAgLy8gQmFpbCBp
ZiB0aGUgc2lnbmF0dXJlIHNpemUgaXNuJ3QgZG91YmxlIHRoZSBrZXkgc2l6ZSAoaS5lLiBjb25j
YXRlbmF0ZWQgciBhbmQgcyBjb21wb25lbnRzKS4KKyAgICBpZiAoc2lnbmF0dXJlLnNpemUoKSAh
PSBrZXlTaXplSW5CeXRlcyAqIDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFBl
cmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRo
ZSBnaXZlbiBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAgICB7CisgICAg
ICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNo
QWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAgICAgIGlmICgh
ZGlnZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBkaWdl
c3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGRhdGFIYXNo
ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUg
c2lnLXZhbCBzLWV4cHJlc3Npb24sIGV4dHJhY3RpbmcgdGhlIHIgYW5kIHMgY29tcG9uZW50cyBm
cm9tIHRoZSBzaWduYXR1cmUgdmVjdG9yLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9z
ZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhw
X2J1aWxkKCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12YWwoZWNkc2EociAlYikocyAl
YikpKSIsCisgICAgICAgIGtleVNpemVJbkJ5dGVzLCBzaWduYXR1cmUuZGF0YSgpLCBrZXlTaXpl
SW5CeXRlcywgc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzKTsKKyAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIENv
bnN0cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyByYXcgaGFzaGVkIGRh
dGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAg
eworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGVycm9yID0gZ2NyeV9zZXhwX2J1aWxk
KCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHJhdykoaGFzaCAlcyAlYikpIiwKKyAg
ICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgp
KTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUgUEsgdmVyaWZp
Y2F0aW9uLiBXZSByZXBvcnQgc3VjY2VzcyBpZiB0aGVyZSdzIG5vIGVycm9yIHJldHVybmVkLCBm
YWlsdXJlCisgICAgLy8gaWYgdGhlIHJldHVybmVkIGVycm9yIGlzIEdQR19FUlJfQkFEX1NJR05B
VFVSRSwgb3IgYW4gT3BlcmF0aW9uRXJyb3Igb3RoZXJ3aXNlLgorICAgIGVycm9yID0gZ2NyeV9w
a192ZXJpZnkoc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SICYmIGdjcnlfZXJyX2NvZGUoZXJyb3IpICE9IEdQR19FUlJf
QkFEX1NJR05BVFVSRSkgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBlcnJvciA9
PSBHUEdfRVJSX05PX0VSUk9SOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0
Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlF
Qz4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7CisKKyAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1Bh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3Jt
VmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFt
ZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUs
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJl
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlF
Qz4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7CisKKyAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVy
ZSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXplSW5CaXRz
KCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAg
ICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307935</attachid>
            <date>2017-04-23 07:23:12 -0700</date>
            <delta_ts>2017-05-01 22:50:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171103-20170423162311.patch</filename>
            <type>text/plain</type>
            <size>16321</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEyMmMyYTA3OTIyMGQ2
YTNlNzc1MmU4MzgwNTNhN2Q5ODcyZWY4Yi4uNjEwZmY2NWE2YjE1ZTQ0ZWIzMDAxMTJlODA5MjFm
NGYxNzdhNzRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA0LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBFQ0RT
QSBzaWduaW5nIGFuZCB2ZXJpZmljYXRpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgSW1wbGVtZW50IFdlYkNyeXB0byBFQ0RT
QSBzdXBwb3J0IGZvciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgIGFyZSB1c2luZyBsaWJn
Y3J5cHQuCisKKyAgICAgICAgRm9yIHNpZ25pbmcsIHRoZSBwcm92aWRlZCBkYXRhIGlzIGZpcnN0
IGhhc2hlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgZGlnZXN0IGFsZ29yaXRobSBhbmQg
ZW1iZWRkZWQgaW50byBhIGRhdGEgcy1leHByZXNzaW9uLiBJdCdzIHRoZW4KKyAgICAgICAgcGFz
c2VkIHRvIGdjcnlfcGtfc2lnbigpIGFsb25nIHdpdGggdGhlIHByaXZhdGUga2V5LCByZXR1cm5p
bmcgYQorICAgICAgICBzaWctdmFsIHMtZXhwcmVzc2lvbi4gVGhlIHIgYW5kIHMgcGFyYW1ldGVy
cyBhcmUgdGhlbiByZXRyaWV2ZWQgZnJvbQorICAgICAgICB0aGF0IHNpZy12YWwgYW5kIHRoZWly
IGRhdGEgZXh0cmFjdGVkIGFuZCBjb25jYXRlbmF0ZWQgaW4gdGhlIG91dHB1dAorICAgICAgICBW
ZWN0b3I8Pi4KKworICAgICAgICBGb3IgdmVyaWZpY2F0aW9uLCB0aGUgZGF0YSBpcyBhZ2FpbiBo
YXNoZWQgYW5kIGVtYmVkZGVkIGludG8gYSBkYXRhCisgICAgICAgIHMtZXhwcmVzc2lvbi4gVGhl
IHIgYW5kIHMgcGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHBhc3NlZC1pbgorICAg
ICAgICBzaWduYXR1cmUgVmVjdG9yPD4gYW5kIGVtYmVkZGVkIGludG8gYSBzaWctdmFsIHMtZXhw
cmVzc2lvbi4gVGhlIGRhdGEKKyAgICAgICAgYW5kIHNpZy12YWwgcy1leHByZXNzaW9ucyBhcmUg
dGhlbiBwYXNzZWQgdG8gZ2NyeV9wa192ZXJpZnkoKSBhbG9uZworICAgICAgICB3aXRoIHRoZSBw
dWJsaWMga2V5LiBUaGUgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzIGlmIG5vIGVycm9yIGlzIHJldHVy
bmVkCisgICAgICAgIGFuZCBmYWlscyBpZiB0aGUgcmV0dXJuZWQgZXJyb3IgY29kZSBpcyBHUEdf
RVJSX0JBRF9TSUdOQVRVUkUuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUVDRFNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hDcnlwdG9EaWdlc3RB
bGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRobU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6bXBpRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWduKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6CisKIDIwMTctMDQtMjIgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRmlsZSBpbnB1dHMgb25seSBh
Y2NlcHQgVVRJIHR5cGVzIHRoYXQgY2FuIGJlIGluc2VydGVkIGludG8gY29udGVudGVkaXRhYmxl
IGFyZWFzIHdoZW4gZHJvcHBpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKaW5kZXggYWJhOTViMTI2
NDU2MGUxYzk0ZmVjZGFkMzVjZTU0ZTBlODg5ZDQyNy4uN2I2NTRlYzhhN2NlZmY0NThiMjA5ZTE3
NjM0YjYyZjAzNmFiOThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDE4ICszMCwyNjEgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FY2Rz
YVBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxw
YWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hh
bmRsZS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2ln
bihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0
b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gaGFzaENyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
NTY6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RT
QTo6cGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhf
dD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+
IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiAi
c2hhMSI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAg
ICAgICByZXR1cm4gInNoYTIyNCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gInNoYTI1NiI7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gInNoYTM4NCI7CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4g
InNoYTUxMiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4
cF90IHBhcmFtU2V4cCkKK3sKKyAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBp
biB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwg
R0NSWU1QSV9GTVRfVVNHKSk7CisgICAgaWYgKCFwYXJhbU1QSSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIC8vIFF1ZXJ5IHRoZSBkYXRhIGxlbmd0aCBmaXJzdCB0byBwcm9w
ZXJseSBwcmVwYXJlIHRoZSBidWZmZXIuCisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSAwOworICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgbnVs
bHB0ciwgMCwgJmRhdGFMZW5ndGgsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIEZpbmFsbHksIGNvcHkg
dGhlIE1QSSBkYXRhIGludG8gYSBwcm9wZXJseS1zaXplZCBidWZmZXIuCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG91dHB1dChkYXRhTGVuZ3RoKTsKKyAgICBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdD
UllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFy
YW1NUEkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorCisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQoreworICAgIC8vIFBlcmZvcm0g
ZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZl
biBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAgICB7CisgICAgICAgIGF1
dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAgICAgIGlmICghZGlnZXN0
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGRhdGFIYXNoID0gZGln
ZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0YSBz
LWV4cHJlc3Npb24gdGhhdCBjb250YWlucyByYXcgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5
cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNo
YUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0
YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyByYXcpKGhhc2ggJXMgJWIpKSIsCisgICAgICAg
ICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7Cisg
ICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHNpZ25pbmcsIHJl
dHJpZXZpbmcgYSBzaWctdmFsIHMtZXhwcmVzc2lvbiBvZiB0aGUgZm9sbG93aW5nIGZvcm06Cisg
ICAgLy8gKHNpZy12YWwKKyAgICAvLyAgIChkc2EKKyAgICAvLyAgICAgKHIgci1tcGkpCisgICAg
Ly8gICAgIChzIHMtbXBpKSkpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4g
c2lnbmF0dXJlU2V4cDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX3NpZ24oJnNp
Z25hdHVyZVNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIFJldHJpZXZlIE1QSSBk
YXRhIG9mIHRoZSByZXN1bHRpbmcgciBhbmQgcyBpbnRlZ2Vycy4gVGhleSBhcmUgY29uY2F0ZW5h
dGVkIGludG8KKyAgICAvLyBhIHNpbmdsZSBidWZmZXIgYWZ0ZXIgY2hlY2tpbmcgdGhhdCB0aGUg
ZGF0YSBsZW5ndGggbWF0Y2hlcyB0aGUga2V5IHNpemUuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNp
Z25hdHVyZTsKKyAgICB7CisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IHJTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJyIiwgMCkpOworICAg
ICAgICBpZiAoIXJTZXhwKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBhdXRvIHJEYXRhID0gbXBpRGF0YShyU2V4cCk7CisgICAgICAgIGlmICghckRhdGEgfHwg
ckRhdGEtPnNpemUoKSAhPSBrZXlTaXplSW5CeXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgc2lnbmF0dXJlLmFwcGVuZFZlY3RvcigqckRhdGEpOworICAg
IH0KKyAgICB7CisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhw
KGdjcnlfc2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOworICAgICAgICBp
ZiAoIXNTZXhwKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBh
dXRvIHNEYXRhID0gbXBpRGF0YShzU2V4cCk7CisgICAgICAgIGlmICghc0RhdGEgfHwgc0RhdGEt
PnNpemUoKSAhPSBrZXlTaXplSW5CeXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgc2lnbmF0dXJlLmFwcGVuZFZlY3Rvcigqc0RhdGEpOworICAgIH0KKwor
ICAgIHJldHVybiBzaWduYXR1cmU7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdj
cnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNp
Z25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCit7
CisgICAgLy8gQmFpbCBpZiB0aGUgc2lnbmF0dXJlIHNpemUgaXNuJ3QgZG91YmxlIHRoZSBrZXkg
c2l6ZSAoaS5lLiBjb25jYXRlbmF0ZWQgciBhbmQgcyBjb21wb25lbnRzKS4KKyAgICBpZiAoc2ln
bmF0dXJlLnNpemUoKSAhPSBrZXlTaXplSW5CeXRlcyAqIDIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQg
YWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFz
aDsKKyAgICB7CisgICAgICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2Vz
dEFsZ29yaXRobShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0
QWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7
CisgICAgICAgIGlmICghZGlnZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8v
IENvbnN0cnVjdCB0aGUgc2lnLXZhbCBzLWV4cHJlc3Npb24sIGV4dHJhY3RpbmcgdGhlIHIgYW5k
IHMgY29tcG9uZW50cyBmcm9tIHRoZSBzaWduYXR1cmUgdmVjdG9yLgorICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVy
cm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12YWwo
ZWNkc2EociAlYikocyAlYikpKSIsCisgICAgICAgIGtleVNpemVJbkJ5dGVzLCBzaWduYXR1cmUu
ZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVz
KTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlu
cyByYXcgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4g
ZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0
aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0
aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGVycm9yID0g
Z2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHJhdykoaGFz
aCAlcyAlYikpIiwKKyAgICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwg
ZGF0YUhhc2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9y
bSB0aGUgUEsgdmVyaWZpY2F0aW9uLiBXZSByZXBvcnQgc3VjY2VzcyBpZiB0aGVyZSdzIG5vIGVy
cm9yIHJldHVybmVkLCBmYWlsdXJlCisgICAgLy8gaWYgdGhlIHJldHVybmVkIGVycm9yIGlzIEdQ
R19FUlJfQkFEX1NJR05BVFVSRSwgb3IgYW4gT3BlcmF0aW9uRXJyb3Igb3RoZXJ3aXNlLgorICAg
IGVycm9yID0gZ2NyeV9wa192ZXJpZnkoc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHAp
OworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SICYmIGdjcnlfZXJyX2NvZGUoZXJy
b3IpICE9IEdQR19FUlJfQkFEX1NJR05BVFVSRSkgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IHJldHVybiBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SOworfQorCit2b2lkIENyeXB0b0FsZ29y
aXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtl
eSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7
CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtl
eSgpLCBkYXRhLCBlY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJp
dHMoKSAvIDgpOworICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5w
b3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAg
ICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
RUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250
ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdU
Rk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7
CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3Jt
S2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tl
eS5rZXlTaXplSW5CaXRzKCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTJmYzYwN2NkYjMyYjM1YzJiOGEwNjViZjI5MzNiOGJi
YjFkNGMyYi4uNGI0YzA3MjdmZGZmOWVjZjE3ZDk3NTA1MjNlYjU3MTVlOTU0MTAzYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTA0LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBFQ0RTQSBzaWduaW5nIGFuZCB2ZXJpZmljYXRp
b24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRoZSBwYXNz
aW5nIEVDRFNBIHRlc3RzIHVuZGVyCisgICAgICAgIGNyeXB0by9zdWJ0bGUvLiBUaGUgRUNEU0Eg
dGVzdHMgdGhhdCB1dGlsaXplIFBLQ1MgIzggYW5kIFNQS0kgcmVtYWluCisgICAgICAgIHNraXBw
ZWQgc2luY2Ugc3VwcG9ydCBmb3IgdGhhdCBoYXNuJ3QgbGFuZGVkIHlldC4KKwogMjAxNy0wNC0y
MSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjIwNTM3NCk6IDxsaT4gY29udGVudCBpbnNpZGUgPHVsPiBzaG91bGQgbWlkLXdvcmQgd3JhcCB3
aGVuIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQgaXMgcHJlc2VudC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODU1YmIzZTUwMmZiNzE2ZmQ3ZTE4OWIwMmRm
MGM3YTFjOTUxYzU2MS4uZWEzYTE4N2RmODU2ZGI2MTNlNTIzYWU0MTIyNTdlZjJhZDlkOWRkMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcyMyw2ICs3
MjMsMjEgQEAgQnVnKEdUSykgZWRpdGluZy9zZWN1cmUtaW5wdXQgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZSBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vd2Via2l0U3VidGxlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0
by93b3JrZXJzL3N1YnRsZSBbIFNraXAgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1l
eHBvcnQtandrLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRl
LWV4cG9ydC1rZXktcmF3Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJh
dGUta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUta2V5LXNp
Z24tdmVyaWZ5LXAyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0
ZS1rZXktc2lnbi12ZXJpZnktcDM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2Rz
YS1pbXBvcnQtandrLXB1YmxpYy1rZXktYWxnLTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3Vi
dGxlL2VjZHNhLWltcG9ydC1qd2stcHVibGljLWtleS1hbGctMzg0Lmh0bWwgWyBQYXNzIF0KK2Ny
eXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0LWp3ay1wdWJsaWMta2V5Lmh0bWwgWyBQYXNzIF0KK2Ny
eXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0LWtleS1zaWduLXAyNTYuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQta2V5LXNpZ24tcDM4NC5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL2VjZHNhLWltcG9ydC1rZXktdmVyaWZ5LXAyNTYuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQta2V5LXZlcmlmeS1wMzg0Lmh0bWwgWyBQYXNzIF0KK2Ny
eXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0LXJhdy1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1
YnRsZS9lY2RzYS12ZXJpZnktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5
cHRvL3N1YnRsZS9obWFjLWV4cG9ydC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBh
c3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTEuaHRt
bCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNo
YTIyNC5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308802</attachid>
            <date>2017-05-01 22:50:03 -0700</date>
            <delta_ts>2017-05-01 22:50:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171103-20170502075002.patch</filename>
            <type>text/plain</type>
            <size>16418</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlY2RjNGI2NzZiNWRj
ZjQ3ODM4MDY3ZjUwYzFlMDliYzIwZjJkMS4uODdiY2JkMjJlMWZjNDFmMWQzMzUxZDk5OWQ2MjI1
OWM1ZTczMWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA1LTAxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBFQ0RT
QSBzaWduaW5nIGFuZCB2ZXJpZmljYXRpb24gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgSW1wbGVtZW50IFdlYkNyeXB0byBFQ0RT
QSBzdXBwb3J0IGZvciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgIGFyZSB1c2luZyBsaWJn
Y3J5cHQuCisKKyAgICAgICAgRm9yIHNpZ25pbmcsIHRoZSBwcm92aWRlZCBkYXRhIGlzIGZpcnN0
IGhhc2hlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgZGlnZXN0IGFsZ29yaXRobSBhbmQg
ZW1iZWRkZWQgaW50byBhIGRhdGEgcy1leHByZXNzaW9uLiBJdCdzIHRoZW4KKyAgICAgICAgcGFz
c2VkIHRvIGdjcnlfcGtfc2lnbigpIGFsb25nIHdpdGggdGhlIHByaXZhdGUga2V5LCByZXR1cm5p
bmcgYQorICAgICAgICBzaWctdmFsIHMtZXhwcmVzc2lvbi4gVGhlIHIgYW5kIHMgcGFyYW1ldGVy
cyBhcmUgdGhlbiByZXRyaWV2ZWQgZnJvbQorICAgICAgICB0aGF0IHNpZy12YWwgYW5kIHRoZWly
IGRhdGEgZXh0cmFjdGVkIGFuZCBjb25jYXRlbmF0ZWQgaW4gdGhlIG91dHB1dAorICAgICAgICBW
ZWN0b3I8Pi4KKworICAgICAgICBGb3IgdmVyaWZpY2F0aW9uLCB0aGUgZGF0YSBpcyBhZ2FpbiBo
YXNoZWQgYW5kIGVtYmVkZGVkIGludG8gYSBkYXRhCisgICAgICAgIHMtZXhwcmVzc2lvbi4gVGhl
IHIgYW5kIHMgcGFyYW1ldGVycyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHBhc3NlZC1pbgorICAg
ICAgICBzaWduYXR1cmUgVmVjdG9yPD4gYW5kIGVtYmVkZGVkIGludG8gYSBzaWctdmFsIHMtZXhw
cmVzc2lvbi4gVGhlIGRhdGEKKyAgICAgICAgYW5kIHNpZy12YWwgcy1leHByZXNzaW9ucyBhcmUg
dGhlbiBwYXNzZWQgdG8gZ2NyeV9wa192ZXJpZnkoKSBhbG9uZworICAgICAgICB3aXRoIHRoZSBw
dWJsaWMga2V5LiBUaGUgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzIGlmIG5vIGVycm9yIGlzIHJldHVy
bmVkCisgICAgICAgIGFuZCBmYWlscyBpZiB0aGUgcmV0dXJuZWQgZXJyb3IgY29kZSBpcyBHUEdf
RVJSX0JBRF9TSUdOQVRVUkUuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUVDRFNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hDcnlwdG9EaWdlc3RB
bGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRobU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6bXBpRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWduKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6CisKIDIwMTctMDUtMDEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2Ugc2VuZHMgYSBibGFjayBmcmFtZSB3aGVuIGl0cyByZWxhdGVkIHNvdXJjZSBp
cyBtdXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAppbmRleCBhYmE5NWIxMjY0NTYwZTFjOTRmZWNk
YWQzNWNlNTRlMGU4ODlkNDI3Li5jNjExZDk0ZGM5ZjhhYmUzYmYzZjcwZDdiOTgyZjk3YjA4ODg4
ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApAQCAtMSw1ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTgg
KzMwLDI2MyBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zLmgiCisj
aW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5j
bHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0
b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
MjQ6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0
OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENy
eXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29sQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdv
cmtRdWV1ZSYpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRo
bU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgcmV0dXJuICJzaGExIjsKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgICAgIHJldHVybiAi
c2hhMjI0IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Cisg
ICAgICAgIHJldHVybiAic2hhMjU2IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8zODQ6CisgICAgICAgIHJldHVybiAic2hhMzg0IjsKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgIHJldHVybiAic2hhNTEyIjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhw
KQoreworICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJl
c3Npb246IChuYW1lIG1waS1kYXRhKQorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlf
dD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9V
U0cpKTsKKyAgICBpZiAoIXBhcmFtTVBJKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgLy8gUXVlcnkgdGhlIGRhdGEgbGVuZ3RoIGZpcnN0IHRvIHByb3Blcmx5IHByZXBhcmUg
dGhlIGJ1ZmZlci4KKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7CisgICAgZ2NyeV9lcnJvcl90
IGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0
YUxlbmd0aCwgcGFyYW1NUEkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gRmluYWxseSwgY29weSB0aGUgTVBJIGRhdGEg
aW50byBhIHByb3Blcmx5LXNpemVkIGJ1ZmZlci4KKyAgICBWZWN0b3I8dWludDhfdD4gb3V0cHV0
KGRhdGFMZW5ndGgpOworICAgIGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNH
LCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBudWxscHRyLCBwYXJhbU1QSSk7CisgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAg
ICByZXR1cm4gb3V0cHV0OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
LCBzaXplX3Qga2V5U2l6ZUluQnl0ZXMpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0
aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdv
cml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0
aGF0IGNvbnRhaW5zIHJhdyBoYXNoZWQgZGF0YS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfc2V4cF90PiBkYXRhU2V4cDsKKyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0g
aGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAo
IXNoYUFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAg
ICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0
ciwgIihkYXRhKGZsYWdzIHJhdykoaGFzaCAlcyAlYikpIiwKKyAgICAgICAgICAgICpzaGFBbGdv
cml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUgUEsgc2lnbmluZywgcmV0cmlldmluZyBhIHNp
Zy12YWwgcy1leHByZXNzaW9uIG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAvLyAoc2lnLXZh
bAorICAgIC8vICAgKGRzYQorICAgIC8vICAgICAociByLW1waSkKKyAgICAvLyAgICAgKHMgcy1t
cGkpKSkKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBzaWduYXR1cmVTZXhw
OworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJlU2V4cCwg
ZGF0YVNleHAsIGtleVNleHApOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIHJl
c3VsdGluZyByIGFuZCBzIGludGVnZXJzLiBUaGV5IGFyZSBjb25jYXRlbmF0ZWQgaW50bworICAg
IC8vIGEgc2luZ2xlIGJ1ZmZlciBhZnRlciBjaGVja2luZyB0aGF0IHRoZSBkYXRhIGxlbmd0aCBt
YXRjaGVzIHRoZSBrZXkgc2l6ZS4KKyAgICAvLyBGSVhNRTogQnV0IHIgYW5kIHMgaW50ZWdlcnMg
Y2FuIHN0aWxsIGJlIHZhbGlkIGV2ZW4gaWYgdGhleSdyZSBvZiBzaG9ydGVyIHNpemUuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTUzNQorICAgIFZl
Y3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisgICAgeworICAgICAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfc2V4cF90PiByU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihzaWduYXR1cmVTZXhw
LCAiciIsIDApKTsKKyAgICAgICAgaWYgKCFyU2V4cCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byByRGF0YSA9IG1waURhdGEoclNleHApOworICAgICAg
ICBpZiAoIXJEYXRhIHx8IHJEYXRhLT5zaXplKCkgIT0ga2V5U2l6ZUluQnl0ZXMpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHNpZ25hdHVyZS5hcHBlbmRWZWN0
b3IoKnJEYXRhKTsKKyAgICB9CisgICAgeworICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfc2V4cF90PiBzU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihzaWduYXR1cmVTZXhwLCAicyIs
IDApKTsKKyAgICAgICAgaWYgKCFzU2V4cCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgYXV0byBzRGF0YSA9IG1waURhdGEoc1NleHApOworICAgICAgICBpZiAo
IXNEYXRhIHx8IHNEYXRhLT5zaXplKCkgIT0ga2V5U2l6ZUluQnl0ZXMpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHNpZ25hdHVyZS5hcHBlbmRWZWN0b3IoKnNE
YXRhKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2lnbmF0dXJlOworfQorCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtl
eVNpemVJbkJ5dGVzKQoreworICAgIC8vIEJhaWwgaWYgdGhlIHNpZ25hdHVyZSBzaXplIGlzbid0
IGRvdWJsZSB0aGUga2V5IHNpemUgKGkuZS4gY29uY2F0ZW5hdGVkIHIgYW5kIHMgY29tcG9uZW50
cykuCisgICAgaWYgKHNpZ25hdHVyZS5zaXplKCkgIT0ga2V5U2l6ZUluQnl0ZXMgKiAyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0
aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YUhhc2g7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9
IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAg
ICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpk
aWdlc3RBbGdvcml0aG0pOworICAgICAgICBpZiAoIWRpZ2VzdCkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsK
KyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIHNpZy12YWwgcy1leHByZXNzaW9uLCBleHRy
YWN0aW5nIHRoZSByIGFuZCBzIGNvbXBvbmVudHMgZnJvbSB0aGUgc2lnbmF0dXJlIHZlY3Rvci4K
KyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBzaWduYXR1cmVTZXhwOworICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmc2lnbmF0dXJlU2V4cCwgbnVs
bHB0ciwgIihzaWctdmFsKGVjZHNhKHIgJWIpKHMgJWIpKSkiLAorICAgICAgICBrZXlTaXplSW5C
eXRlcywgc2lnbmF0dXJlLmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIHNpZ25hdHVyZS5kYXRhKCkg
KyBrZXlTaXplSW5CeXRlcyk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
KyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIGRhdGEgcy1leHByZXNz
aW9uIHRoYXQgY29udGFpbnMgcmF3IGhhc2hlZCBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOworICAgIHsKKyAgICAgICAgYXV0byBzaGFBbGdvcml0
aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAg
IGlmICghc2hhQWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0
YShmbGFncyByYXcpKGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBk
YXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHZlcmlmaWNhdGlvbi4gV2UgcmVwb3J0IHN1Y2Nlc3Mg
aWYgdGhlcmUncyBubyBlcnJvciByZXR1cm5lZCwgZmFpbHVyZQorICAgIC8vIGlmIHRoZSByZXR1
cm5lZCBlcnJvciBpcyBHUEdfRVJSX0JBRF9TSUdOQVRVUkUsIG9yIGFuIE9wZXJhdGlvbkVycm9y
IG90aGVyd2lzZS4KKyAgICBlcnJvciA9IGdjcnlfcGtfdmVyaWZ5KHNpZ25hdHVyZVNleHAsIGRh
dGFTZXhwLCBrZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUiAmJiBn
Y3J5X2Vycl9jb2RlKGVycm9yKSAhPSBHUEdfRVJSX0JBRF9TSUdOQVRVUkUpIHsKKyAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3IgPT0gR1BHX0VSUl9OT19FUlJPUjsKK30KKwor
dm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1
dG8mIGVjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7CisgICAgICAgICAg
ICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4oKnBhcmFtZXRlcnMpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24o
ZWNLZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBl
Y0tleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQorCit2b2lk
IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBC
b29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAg
ICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkp
LCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1
dG8mIGVjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7CisgICAgICAgICAg
ICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4oKnBhcmFtZXRlcnMpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlm
eShlY0tleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIGVjUGFyYW1ldGVycy5oYXNo
SWRlbnRpZmllciwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7CisgICAgICAgICAgICBpZiAo
IW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAg
ICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJy
b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91
dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2NmQ1MWYwYmVmZjMyMmUy
ZDAzOWNiN2QyMjM0OWI5ODczYzVlYTEuLmU2YTg3Njc4OGNjYjNlMjUxZjAzZDdmNWE3NzJlY2Ey
MmI3ZjhhMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNS0wMSAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gRUNEU0Egc2lnbmlu
ZyBhbmQgdmVyaWZpY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTEwMworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBH
YXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6
IEVuYWJsZSB0aGUgcGFzc2luZyBFQ0RTQSB0ZXN0cyB1bmRlcgorICAgICAgICBjcnlwdG8vc3Vi
dGxlLy4gVGhlIEVDRFNBIHRlc3RzIHRoYXQgdXRpbGl6ZSBQS0NTICM4IGFuZCBTUEtJIHJlbWFp
bgorICAgICAgICBza2lwcGVkIHNpbmNlIHN1cHBvcnQgZm9yIHRoYXQgaGFzbid0IGxhbmRlZCB5
ZXQuCisKIDIwMTctMDUtMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogTGF5b3V0VGVzdCB3b3JrZXJzL3dhc20taGFzaHNldC1tYW55Lmh0
bWwgaXMgYSBmbGFreSB0aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDhlYjRkOGZhM2EyZDI3ZDA5YzZlZjlkYWVhOGQzNTk0ZDFhOWQ1Y2QuLjBi
NWM3OWY4YjY4NTU4NzAxNzFlMWEyZWMwNjJiMTY4YmFlMTE3ZjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC03MjQsNiArNzI0LDIxIEBAIEJ1ZyhHVEsp
IGVkaXRpbmcvc2VjdXJlLWlucHV0IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNy
eXB0by9zdWJ0bGUgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dlYmtpdFN1
YnRsZSBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUg
WyBTa2lwIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0LWp3ay1rZXkuaHRt
bCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBvcnQta2V5LXJhdy5o
dG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRlLWtleS5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRlLWtleS1zaWduLXZlcmlmeS1wMjU2Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUta2V5LXNpZ24tdmVyaWZ5
LXAzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtandrLXByaXZh
dGUta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0LWp3ay1wdWJs
aWMta2V5LWFsZy0yNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQt
andrLXB1YmxpYy1rZXktYWxnLTM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1qd2stcHVibGljLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1rZXktc2lnbi1wMjU2Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2Et
aW1wb3J0LWtleS1zaWduLXAzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lY2RzYS1p
bXBvcnQta2V5LXZlcmlmeS1wMjU2Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2Et
aW1wb3J0LWtleS12ZXJpZnktcDM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1yYXcta2V5Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkc2EtdmVyaWZ5
LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvaG1hYy1l
eHBvcnQta2V5LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0
bGUvaG1hYy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGExLmh0bWwgWyBQYXNzIF0KIGNyeXB0
by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyMjQuaHRtbCBbIFBhc3Mg
XQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>