<?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>70572</bug_id>
          
          <creation_ts>2011-10-20 19:14:23 -0700</creation_ts>
          <short_desc>Refactor OptionsObject.cpp</short_desc>
          <delta_ts>2011-12-22 02:30:51 -0800</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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>488085</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-20 19:14:23 -0700</bug_when>
    <thetext>For example, OptionsObject::getKeyBool() is an alias of OptionsObject::getKeyValue(const String&amp; key, bool&amp; value). We should remove OptionsObject::getKeyXXXX() (XXXX is some specific type) and unify them into OptionsObject::getKeyValue(const String&amp; key, XXXX&amp; value).

c.f. Corresponding JSC methods are unified into JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue, XXXX&amp;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488102</commentid>
    <comment_count>1</comment_count>
      <attachid>111890</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-20 19:45:45 -0700</bug_when>
    <thetext>Created attachment 111890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490940</commentid>
    <comment_count>2</comment_count>
      <attachid>111890</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-26 09:45:11 -0700</bug_when>
    <thetext>Comment on attachment 111890
Patch

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

&gt; Source/WebCore/bindings/v8/OptionsObject.h:54
&gt; +    bool getKeyValue(const String&amp;, bool&amp;) const;
&gt; +    bool getKeyValue(const String&amp;, int32_t&amp;) const;
&gt; +    bool getKeyValue(const String&amp;, double&amp;) const;
&gt; +    bool getKeyValue(const String&amp;, String&amp;) const;
&gt; +    bool getKeyValue(const String&amp;, ScriptValue&amp;) const;

Why not just call these functions &quot;get&quot; ?

&gt; Source/WebCore/bindings/v8/OptionsObject.h:61
&gt; +    bool getKeyValueWithUndefinedOrNullCheck(const String&amp;, String&amp;) const;

getWithUndefinedOrNullCheck ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491298</commentid>
    <comment_count>3</comment_count>
      <attachid>112624</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-26 17:38:14 -0700</bug_when>
    <thetext>Created attachment 112624
patch for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491301</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-26 17:39:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111890 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111890&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/OptionsObject.h:54
&gt; &gt; +    bool getKeyValue(const String&amp;, bool&amp;) const;
&gt; &gt; +    bool getKeyValue(const String&amp;, int32_t&amp;) const;
&gt; &gt; +    bool getKeyValue(const String&amp;, double&amp;) const;
&gt; &gt; +    bool getKeyValue(const String&amp;, String&amp;) const;
&gt; &gt; +    bool getKeyValue(const String&amp;, ScriptValue&amp;) const;
&gt; 
&gt; Why not just call these functions &quot;get&quot; ?
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/OptionsObject.h:61
&gt; &gt; +    bool getKeyValueWithUndefinedOrNullCheck(const String&amp;, String&amp;) const;
&gt; 
&gt; getWithUndefinedOrNullCheck ?

Done and committed. Thanks!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491568</commentid>
    <comment_count>5</comment_count>
      <attachid>112624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 07:52:07 -0700</bug_when>
    <thetext>Comment on attachment 112624
patch for commit

Clearing flags on attachment: 112624

Committed r98572: &lt;http://trac.webkit.org/changeset/98572&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525580</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 14:24:59 -0800</bug_when>
    <thetext>Attachment 111890 was posted by a committer and has review+, assigning to Kentaro Hara for commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111890</attachid>
            <date>2011-10-20 19:45:45 -0700</date>
            <delta_ts>2011-12-22 02:30:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70572-20111021114543.patch</filename>
            <type>text/plain</type>
            <size>11823</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgwNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMzY4ZjA1NmQwMGM0OWVl
NmIzYmYzY2MyYTM2MmNkZTQ2ZjNhY2Q4Li5lMzg5YmYwZTliYzNkNTAwNTdhZjFiY2FlZTAwMzdl
OWNjMzZkYTBjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTAtMjAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIE9wdGlv
bnNPYmplY3QuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDU3MgorCisgICAgICAgIEZvciBleGFtcGxlLCBPcHRpb25zT2JqZWN0OjpnZXRLZXlC
b29sKCkgaXMgYW4gYWxpYXMgb2YKKyAgICAgICAgT3B0aW9uc09iamVjdDo6Z2V0S2V5VmFsdWUo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKS4KKyAgICAgICAgV2Ugc2hvdWxkIHJlbW92
ZSBPcHRpb25zT2JqZWN0OjpnZXRLZXlYWFhYKCkgKFhYWFggaXMgc29tZSBzcGVjaWZpYyB0eXBl
KQorICAgICAgICBhbmQgdW5pZnkgdGhlbSBpbnRvIE9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
KGNvbnN0IFN0cmluZyYga2V5LCBYWFhYJiB2YWx1ZSkuCisgICAgICAgIGMuZi4gQ29ycmVzcG9u
ZGluZyBKU0MgbWV0aG9kcyBhcmUgdW5pZmllZCBpbnRvCisgICAgICAgIEpTRGljdGlvbmFyeTo6
Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBYWFhYJikuCisKKyAg
ICAgICAgVGhlIHJlc3VsdCBvZiBnaXQgZGlmZiBpcyB3ZWlyZCwgYnV0IHRoaXMgcGF0Y2ggaXMg
bWFraW5nIGp1c3QgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorICAgICAgICAtIFJlcGxhY2VkIGdl
dEtleUJvb2woKSwgZ2V0S2V5SW50MzIoKSwgZ2V0S2V5RG91YmxlKCkgYW5kIGdldEtleVN0cmlu
ZygpIHdpdGggZ2V0S2V5VmFsdWUoKS4KKyAgICAgICAgLSBSZW5hbWVkIGdldEtleVN0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjaygpIHRvIGdldEtleVZhbHVlV2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKCkuCisgICAgICAgIC0gUmVtb3ZlZCBnZXRLZXlET01TdHJpbmdMaXN0KCkgYW5kIGdl
dEtleUtleVJhbmdlKCksIHNpbmNlIHRoZXNlIGFyZSBub3QgdXNlZC4KKyAgICAgICAgLSBNb3Zl
IGRlZmluaXRpb25zIG9mIGdldEtleVZhbHVlKCkgZnJvbSAuaCB0byAuY3BwLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGlu
Z3MvdjgvT3B0aW9uc09iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25zT2JqZWN0
OjpnZXRLZXkpOiBObyBjaGFuZ2UgdG8gdGhpcyBtZXRob2QuIGdpdCBkaWZmIHNlZW1zIHRvIG1p
c3VuZGVyc3RhbmQgYXMgaWYgaXQgaXMgbW9kaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpPcHRp
b25zT2JqZWN0OjpnZXRLZXlET01TdHJpbmdMaXN0KTogUmVtb3ZlZCwgc2luY2Ugbm8gb25lIGlz
IHVzaW5nIGl0LgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uc09iamVjdDo6Z2V0S2V5S2V5UmFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVlV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKTogTm8gY2hhbmdlIHRvIHRoaXMgbWV0aG9kLiBnaXQgZGlmZiBzZWVt
cyB0byBtaXN1bmRlcnN0YW5kIGFzIGlmIGl0IGlzIG1vZGlmaWVkLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuaDogTW92ZWQgZGVmaW5pdGlvbnMgb2YgZ2V0S2V5VmFsdWUo
KSB0byBPcHRpb25zT2JqZWN0LmNwcAorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKTogUmVw
bGFjZWQgZ2V0S2V5WFhYWCgpIHRvIGdldEtleVZhbHVlKCk7CisgICAgICAgICogc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOiBEaXR0by4KKwogMjAxMS0xMC0yMCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSb3V0ZSBvblN3YXBCdWZmZXJzQ29tcGxldGUg
ZnJvbSBMYXllclJlbmRlcmVyIHRvIENDU2NoZWR1bGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcAppbmRleCBmZjJmMDM1MzcxYTNjY2FjYmVjMzNjYTE2
ZWI0MTU1ZmVlZDUyZmUwLi40ODY0NjU1NzY5ODA0OWViNzZmNzJiMmFhYjE0N2RhYzExNjk2MDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcApAQCAt
NjUsNyArNjUsMjMgQEAgYm9vbCBPcHRpb25zT2JqZWN0Ojppc1VuZGVmaW5lZE9yTnVsbCgpIGNv
bnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OmlzVW5kZWZpbmVkT3JOdWxsKG1fb3B0aW9ucyk7CiB9
CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCYgdmFsdWUpIGNvbnN0Citib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleShjb25zdCBTdHJpbmcm
IGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mIHZhbHVlKSBjb25zdAoreworICAgIGlmIChpc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IG9wdGlvbnMgPSBtX29wdGlvbnMtPlRvT2JqZWN0KCk7CisgICAgQVNTRVJUKCFv
cHRpb25zLklzRW1wdHkoKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4S2V5ID0g
djhTdHJpbmcoa2V5KTsKKyAgICBpZiAoIW9wdGlvbnMtPkhhcyh2OEtleSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IG9wdGlvbnMtPkdldCh2OEtleSk7CisgICAgaWYgKHZh
bHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sJiB2YWx1ZSkgY29uc3QKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOwog
ICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCkBAIC03OCw3ICs5NCw3IEBAIGJvb2wgT3B0
aW9uc09iamVjdDo6Z2V0S2V5Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFsdWUpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5SW50
MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmIHZhbHVlKSBjb25zdAorYm9vbCBPcHRpb25z
T2JqZWN0OjpnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNv
bnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdldEtl
eShrZXksIHY4VmFsdWUpKQpAQCAtOTEsNyArMTA3LDcgQEAgYm9vbCBPcHRpb25zT2JqZWN0Ojpn
ZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAorYm9vbCBPcHRpb25zT2JqZWN0Ojpn
ZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOwogICAgIGlmICghZ2V0S2V5KGtleSwgdjhW
YWx1ZSkpCkBAIC0xMDQsNyArMTIwLDcgQEAgYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlEb3Vi
bGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlWYWx1
ZShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2OFZhbHVlOwogICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCkBA
IC0xMTgsNjcgKzEzNCwxMyBAQCBib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVN0cmluZyhjb25z
dCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2soY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKLSAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpIHx8
IHY4VmFsdWUtPklzTnVsbCgpIHx8IHY4VmFsdWUtPklzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBJdCBpcyBwb3NzaWJsZSBmb3IgdGhpcyB0byB0
aHJvdyBpbiB3aGljaCBjYXNlIHdlJ2QgYmUgZ2V0dGluZyBiYWNrCi0gICAgLy8gICAgICAgIGFu
IGVtcHR5IHN0cmluZyBhbmQgcmV0dXJuaW5nIHRydWUgd2hlbiB3ZSBzaG91bGQgYmUgcmV0dXJu
aW5nIGZhbHNlLgotICAgIC8vICAgICAgICBTZWUgZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzIGZvciBhIHNpbWlsYXIKLSAgICAvLyAgICAgICAgZXhh
bXBsZS4KLSAgICB2YWx1ZSA9IFdlYkNvcmU6OmlzVW5kZWZpbmVkT3JOdWxsKHY4VmFsdWUpID8g
U3RyaW5nKCkgOiB2OFZhbHVlVG9XZWJDb3JlU3RyaW5nKHY4VmFsdWUpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IE9wdGlvbnNPYmplY3Q6OmdldEtl
eURPTVN0cmluZ0xpc3QoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Citib29sIE9wdGlvbnNPYmpl
Y3Q6OmdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpIGNv
bnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdldEtl
eShrZXksIHY4VmFsdWUpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghdjhWYWx1ZS0+
SXNBcnJheSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiByZXQgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2ODo6SW50ZWdl
cjo6TmV3KGkpKTsKLSAgICAgICAgcmV0LT5hcHBlbmQodjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhp
bmRleGVkVmFsdWUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7Ci19Ci0KLSNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gT3B0
aW9uc09iamVjdDo6Z2V0S2V5S2V5UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17Ci0g
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKLSAgICBpZiAoIWdldEtleShrZXksIHY4
VmFsdWUpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghVjhJREJLZXlSYW5nZTo6SGFz
SW5zdGFuY2UodjhWYWx1ZSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIFY4SURC
S2V5UmFuZ2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkp
OwotfQotCi0jZW5kaWYKLQotYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXkoY29uc3QgU3RyaW5n
JiBrZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JiB2YWx1ZSkgY29uc3QKLXsKLSAgICBpZiAoaXNV
bmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBvcHRpb25zID0gbV9vcHRpb25zLT5Ub09iamVjdCgpOwotICAgIEFTU0VSVCgh
b3B0aW9ucy5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OEtleSA9
IHY4U3RyaW5nKGtleSk7Ci0gICAgaWYgKCFvcHRpb25zLT5IYXModjhLZXkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgdmFsdWUgPSBvcHRpb25zLT5HZXQodjhLZXkpOwotICAgIGlmICh2
YWx1ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IFNjcmlw
dFZhbHVlKHY4VmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTEsNCArMjEzLDE4
IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIE1l
c3NhZ2VQb3J0QXJyYXkmIHZhbHVlKSBjb25zCiAgICAgcmV0dXJuIGdldE1lc3NhZ2VQb3J0QXJy
YXkodjhWYWx1ZSwgdmFsdWUpOwogfQogCitib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHZhbHVl
KSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAgaWYgKCFn
ZXRLZXkoa2V5LCB2OFZhbHVlKSB8fCB2OFZhbHVlLT5Jc051bGwoKSB8fCB2OFZhbHVlLT5Jc1Vu
ZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSXQgaXMg
cG9zc2libGUgZm9yIHRoaXMgdG8gdGhyb3cgaW4gd2hpY2ggY2FzZSB3ZSdkIGJlIGdldHRpbmcg
YmFjaworICAgIC8vICAgICAgICBhbiBlbXB0eSBzdHJpbmcgYW5kIHJldHVybmluZyB0cnVlIHdo
ZW4gd2Ugc2hvdWxkIGJlIHJldHVybmluZyBmYWxzZS4KKyAgICAvLyAgICAgICAgU2VlIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qcyBmb3IgYSBzaW1p
bGFyCisgICAgLy8gICAgICAgIGV4YW1wbGUuCisgICAgdmFsdWUgPSBXZWJDb3JlOjppc1VuZGVm
aW5lZE9yTnVsbCh2OFZhbHVlKSA/IFN0cmluZygpIDogdjhWYWx1ZVRvV2ViQ29yZVN0cmluZyh2
OFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCmluZGV4IGFkM2YxNzlh
MTIwOThhZjcxYWUzMjg5YWQ2MzM1ZTVmYjNkZDc5YWYuLjBmOWNmMzFiYTk1ZGI1YjBhZGY1ODhj
YzQzYjg0YmJlYjk4Njc2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L09wdGlvbnNPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25z
T2JqZWN0LmgKQEAgLTQ2LDQ0ICs0NiwxOSBAQCBwdWJsaWM6CiAgICAgT3B0aW9uc09iamVjdCYg
b3BlcmF0b3I9KGNvbnN0IE9wdGlvbnNPYmplY3QmKTsKIAogICAgIGJvb2wgaXNVbmRlZmluZWRP
ck51bGwoKSBjb25zdDsKLSAgICBib29sIGdldEtleUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wmIHZhbHVlKSBjb25zdDsKLSAgICBib29sIGdldEtleUludDMyKGNvbnN0IFN0cmluZyYga2V5
LCBpbnQzMl90JiB2YWx1ZSkgY29uc3Q7Ci0gICAgYm9vbCBnZXRLZXlEb3VibGUoY29uc3QgU3Ry
aW5nJiBrZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0OwotICAgIGJvb2wgZ2V0S2V5U3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKLSAgICBib29sIGdldEtleVN0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2
YWx1ZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRLZXlET01TdHJp
bmdMaXN0KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBnZXRLZXlLZXlSYW5nZShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAKLSAgICBib29s
IGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB2YWx1ZSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBnZXRLZXlCb29sKGtleSwgdmFsdWUpOwotICAgIH0KLSAgICBib29s
IGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBnZXRLZXlJbnQzMihrZXksIHZhbHVlKTsKLSAgICB9Ci0gICAg
Ym9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBnZXRLZXlEb3VibGUoa2V5LCB2YWx1ZSk7Ci0gICAgfQot
ICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZ2V0S2V5U3RyaW5nKGtleSwgdmFsdWUpOwotICAg
IH0KLSAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBTY3JpcHRWYWx1ZSYg
dmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVl
OwotICAgICAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIHZhbHVlID0gU2NyaXB0VmFsdWUodjhWYWx1ZSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYs
IGJvb2wmKSBjb25zdDsKKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYsIGludDMy
X3QmKSBjb25zdDsKKyAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSYp
IGNvbnN0OworICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiwgU3RyaW5nJikgY29u
c3Q7CisgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmLCBTY3JpcHRWYWx1ZSYpIGNv
bnN0OwogICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQm
KSBjb25zdDsKICAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkJikg
Y29uc3Q7CiAgICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25n
IGxvbmcmKSBjb25zdDsKLSAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBS
ZWZQdHI8RE9NV2luZG93PiYgdmFsdWUpIGNvbnN0OwotICAgIGJvb2wgZ2V0S2V5VmFsdWUoY29u
c3QgU3RyaW5nJiBrZXksIE1lc3NhZ2VQb3J0QXJyYXkmIHZhbHVlKSBjb25zdDsKKyAgICBib29s
IGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYsIFJlZlB0cjxET01XaW5kb3c+JikgY29uc3Q7Cisg
ICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmLCBNZXNzYWdlUG9ydEFycmF5JikgY29u
c3Q7CisKKyAgICBib29sIGdldEtleVZhbHVlV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0
IFN0cmluZyYsIFN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgZ2V0S2V5KGNv
bnN0IFN0cmluZyYga2V5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCA3Yzk5ZDk3OWFjOGYzOTZiN2Y3ZThiMWY5
M2IyYzY4OGVjZDY0YzI2Li5iOWE4Yjg5MDcxNjJkZjI0ZDBkZTAyZjcyMWNjNTdjM2UwMmFiYjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtODEsMTQgKzgxLDE0
IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAgfQogCiAgICAgU3RyaW5nIGtleVBhdGg7
Ci0gICAgYm9vbCBrZXlQYXRoRXhpc3RzID0gb3B0aW9ucy5nZXRLZXlTdHJpbmdXaXRoVW5kZWZp
bmVkT3JOdWxsQ2hlY2soImtleVBhdGgiLCBrZXlQYXRoKTsKKyAgICBib29sIGtleVBhdGhFeGlz
dHMgPSBvcHRpb25zLmdldEtleVZhbHVlV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJrZXlQYXRo
Iiwga2V5UGF0aCk7CiAgICAgaWYgKGtleVBhdGhFeGlzdHMgJiYgIUlEQklzVmFsaWRLZXlQYXRo
KGtleVBhdGgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PTl9UUkFO
U0lFTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBib29sIGF1dG9JbmNy
ZW1lbnQgPSBmYWxzZTsKLSAgICBvcHRpb25zLmdldEtleUJvb2woImF1dG9JbmNyZW1lbnQiLCBh
dXRvSW5jcmVtZW50KTsKKyAgICBvcHRpb25zLmdldEtleVZhbHVlKCJhdXRvSW5jcmVtZW50Iiwg
YXV0b0luY3JlbWVudCk7CiAgICAgLy8gRklYTUU6IExvb2sgdXAgZXZpY3RhYmxlIGFuZCBwYXNz
IHRoYXQgb24gYXMgd2VsbC4KIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IG9iamVjdFN0b3JlID0gbV9iYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBtX3NldFZlcnNpb25UcmFuc2FjdGlvbi0+YmFja2VuZCgp
LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDM3
NzhiYzgxYWU3ZmMzOWZiY2ZiYTBlZjk0YjMyMGE5ZDdiNmJjNGMuLmRlYTAwMDBhYzBkNTJhOTVk
MjViM2Y2Y2U2MGRlMTFjY2U2M2RiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW4K
ICAgICB9CiAKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwotICAgIG9wdGlvbnMuZ2V0S2V5Qm9v
bCgidW5pcXVlIiwgdW5pcXVlKTsKKyAgICBvcHRpb25zLmdldEtleVZhbHVlKCJ1bmlxdWUiLCB1
bmlxdWUpOwogCiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBt
X29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIEFTU0VSVCghaW5kZXggIT0gIWVjKTsgLy8gSWYg
d2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2VwdGlv
biBjb2RlLiBBbmQgdmljZSB2ZXJzYS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112624</attachid>
            <date>2011-10-26 17:38:14 -0700</date>
            <delta_ts>2011-10-27 07:52:07 -0700</delta_ts>
            <desc>patch for commit</desc>
            <filename>bug-70572-20111027093812.patch</filename>
            <type>text/plain</type>
            <size>16382</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg1MjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MmMzMDJjZjAyYjExMTJk
MzYyYmZlNTM3ZTgxYTI1ZmFjZjdiOTlmLi45ZWJiYzk0YjAzZjUzMjAwNjA2NGQyNWU4ZWZmZTlj
NTU0NmNiZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMTAtMjYgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9yIE9wdGlv
bnNPYmplY3QuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
Rm9yIGV4YW1wbGUsIE9wdGlvbnNPYmplY3Q6OmdldEtleUJvb2woKSBpcyBhbiBhbGlhcyBvZgor
ICAgICAgICBPcHRpb25zT2JqZWN0OjpnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCYgdmFsdWUpLgorICAgICAgICBXZSBzaG91bGQgcmVtb3ZlIE9wdGlvbnNPYmplY3Q6OmdldEtl
eVhYWFgoKSAoWFhYWCBpcyBzb21lIHNwZWNpZmljIHR5cGUpCisgICAgICAgIGFuZCB1bmlmeSB0
aGVtIGludG8gT3B0aW9uc09iamVjdDo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBYWFhYJiB2YWx1
ZSkuCisgICAgICAgIGMuZi4gQ29ycmVzcG9uZGluZyBKU0MgbWV0aG9kcyBhcmUgdW5pZmllZCBp
bnRvCisgICAgICAgIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBYWFhYJikuCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiBnaXQgZGlmZiBp
cyB3ZWlyZCwgYnV0IHRoaXMgcGF0Y2ggaXMgbWFraW5nIGp1c3QgdGhlIGZvbGxvd2luZyBjaGFu
Z2VzOgorICAgICAgICAtIFJlcGxhY2VkIGdldEtleUJvb2woKSwgZ2V0S2V5SW50MzIoKSwgZ2V0
S2V5RG91YmxlKCkgYW5kIGdldEtleVN0cmluZygpIHdpdGggZ2V0KCkuCisgICAgICAgIC0gUmVu
YW1lZCBnZXRLZXlTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soKSB0byBnZXRXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soKS4KKyAgICAgICAgLSBSZW1vdmVkIGdldEtleURPTVN0cmluZ0xp
c3QoKSBhbmQgZ2V0S2V5S2V5UmFuZ2UoKSwgc2luY2UgdGhlc2UgYXJlIG5vdCB1c2VkLgorICAg
ICAgICAtIE1vdmUgZGVmaW5pdGlvbnMgb2YgZ2V0KCkgZnJvbSAuaCB0byAuY3BwLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmlu
ZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25zT2Jq
ZWN0OjpnZXQpOiBSZW5hbWVkIGZyb20gZ2V0S2V5VmFsdWUoKS4KKyAgICAgICAgKFdlYkNvcmU6
Ok9wdGlvbnNPYmplY3Q6OmdldEtleSk6IE5vIGNoYW5nZSB0byB0aGlzIG1ldGhvZC4gZ2l0IGRp
ZmYgc2VlbXMgdG8gbWlzdW5kZXJzdGFuZCBhcyBpZiBpdCBpcyBtb2RpZmllZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok9wdGlvbnNPYmplY3Q6OmdldEtleURPTVN0cmluZ0xpc3QpOiBSZW1vdmVkLCBz
aW5jZSBubyBvbmUgaXMgdXNpbmcgaXQuCisgICAgICAgIChXZWJDb3JlOjpPcHRpb25zT2JqZWN0
OjpnZXRLZXlLZXlSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uc09iamVj
dDo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKTogTm8gY2hhbmdlIHRvIHRoaXMgbWV0aG9k
LiBnaXQgZGlmZiBzZWVtcyB0byBtaXN1bmRlcnN0YW5kIGFzIGlmIGl0IGlzIG1vZGlmaWVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaDogTW92ZWQgZGVmaW5pdGlvbnMg
b2YgZ2V0KCkgdG8gT3B0aW9uc09iamVjdC5jcHAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmVDYWxsYmFjayk6IFJlcGxhY2VkIGdldEtl
eVhYWFgoKSB0byBnZXQoKTsKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6IERpdHRvLgor
ICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KTogRGl0dG8uCisKIDIwMTEtMTAtMjYgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAz
NTA3NzU+IFJFR1JFU1NJT04gKHI5NzAzMik6IFNsaWRlciB0aHVtYiBpcyBub3QgZHJhd24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHAKaW5kZXggZmYyZjAz
NTM3MWEzY2NhY2JlYzMzY2ExNmViNDE1NWZlZWQ1MmZlMC4uYWE4NTI4NGI1N2ZlYmQ1ODM4NDI4
NDA0NzkzZTQzNzNkMjU4MjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvT3B0aW9uc09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0
aW9uc09iamVjdC5jcHAKQEAgLTY1LDcgKzY1LDIzIEBAIGJvb2wgT3B0aW9uc09iamVjdDo6aXNV
bmRlZmluZWRPck51bGwoKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjppc1VuZGVmaW5lZE9y
TnVsbChtX29wdGlvbnMpOwogfQogCi1ib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleUJvb2woY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdAorYm9vbCBPcHRpb25zT2JqZWN0Ojpn
ZXRLZXkoY29uc3QgU3RyaW5nJiBrZXksIHY4OjpMb2NhbDx2ODo6VmFsdWU+JiB2YWx1ZSkgY29u
c3QKK3sKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvcHRpb25zID0gbV9vcHRpb25zLT5Ub09iamVj
dCgpOworICAgIEFTU0VSVCghb3B0aW9ucy5Jc0VtcHR5KCkpOworCisgICAgdjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiB2OEtleSA9IHY4U3RyaW5nKGtleSk7CisgICAgaWYgKCFvcHRpb25zLT5IYXMo
djhLZXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFsdWUgPSBvcHRpb25zLT5HZXQo
djhLZXkpOworICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBPcHRpb25zT2JqZWN0OjpnZXQoY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wmIHZhbHVlKSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHY4VmFsdWU7CiAgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKQEAgLTc4LDcgKzk0LDcg
QEAgYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29s
JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBPcHRpb25zT2JqZWN0
OjpnZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0Citi
b29sIE9wdGlvbnNPYmplY3Q6OmdldChjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUp
IGNvbnN0CiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdl
dEtleShrZXksIHY4VmFsdWUpKQpAQCAtOTEsNyArMTA3LDcgQEAgYm9vbCBPcHRpb25zT2JqZWN0
OjpnZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAorYm9vbCBPcHRpb25zT2JqZWN0
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiB7CiAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUp
KQpAQCAtMTA0LDcgKzEyMCw3IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5RG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0KGNvbnN0IFN0cmlu
ZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHY4VmFsdWU7CiAgICAgaWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKQEAgLTExOCw3MSArMTM0
LDE3IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5
LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE9wdGlv
bnNPYmplY3Q6OmdldEtleVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJp
bmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKLXsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2OFZhbHVlOwotICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkgfHwgdjhWYWx1ZS0+SXNO
dWxsKCkgfHwgdjhWYWx1ZS0+SXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRklYTUU6IEl0IGlzIHBvc3NpYmxlIGZvciB0aGlzIHRvIHRocm93IGluIHdoaWNo
IGNhc2Ugd2UnZCBiZSBnZXR0aW5nIGJhY2sKLSAgICAvLyAgICAgICAgYW4gZW1wdHkgc3RyaW5n
IGFuZCByZXR1cm5pbmcgdHJ1ZSB3aGVuIHdlIHNob3VsZCBiZSByZXR1cm5pbmcgZmFsc2UuCi0g
ICAgLy8gICAgICAgIFNlZSBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvYXJndW1l
bnQtdHlwZXMuanMgZm9yIGEgc2ltaWxhcgotICAgIC8vICAgICAgICBleGFtcGxlLgotICAgIHZh
bHVlID0gV2ViQ29yZTo6aXNVbmRlZmluZWRPck51bGwodjhWYWx1ZSkgPyBTdHJpbmcoKSA6IHY4
VmFsdWVUb1dlYkNvcmVTdHJpbmcodjhWYWx1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gT3B0aW9uc09iamVjdDo6Z2V0S2V5RE9NU3RyaW5nTGlz
dChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0KGNvbnN0
IFN0cmluZyYga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpIGNvbnN0CiB7CiAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmICghdjhWYWx1ZS0+SXNBcnJheSgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiByZXQgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2Fs
PHY4OjpBcnJheT46OkNhc3QodjhWYWx1ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
OEFycmF5LT5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGlu
ZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKTsKLSAgICAgICAg
cmV0LT5hcHBlbmQodjhWYWx1ZVRvV2ViQ29yZVN0cmluZyhpbmRleGVkVmFsdWUpKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7Ci19Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKLQotUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gT3B0aW9uc09iamVjdDo6Z2V0S2V5S2V5
UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhWYWx1ZTsKLSAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIGlmICghVjhJREJLZXlSYW5nZTo6SGFzSW5zdGFuY2UodjhWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIFY4SURCS2V5UmFuZ2U6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwotfQotCi0jZW5kaWYKLQotYm9v
bCBPcHRpb25zT2JqZWN0OjpnZXRLZXkoY29uc3QgU3RyaW5nJiBrZXksIHY4OjpMb2NhbDx2ODo6
VmFsdWU+JiB2YWx1ZSkgY29uc3QKLXsKLSAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvcHRpb25zID0g
bV9vcHRpb25zLT5Ub09iamVjdCgpOwotICAgIEFTU0VSVCghb3B0aW9ucy5Jc0VtcHR5KCkpOwog
Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OEtleSA9IHY4U3RyaW5nKGtleSk7Ci0gICAg
aWYgKCFvcHRpb25zLT5IYXModjhLZXkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdmFs
dWUgPSBvcHRpb25zLT5HZXQodjhLZXkpOwotICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IFNjcmlwdFZhbHVlKHY4VmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVlKGNvbnN0
IFN0cmluZyYga2V5LCB1bnNpZ25lZCBzaG9ydCYgdmFsdWUpIGNvbnN0Citib29sIE9wdGlvbnNP
YmplY3Q6OmdldChjb25zdCBTdHJpbmcmIGtleSwgdW5zaWduZWQgc2hvcnQmIHZhbHVlKSBjb25z
dAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CiAgICAgaWYgKCFnZXRLZXko
a2V5LCB2OFZhbHVlKSkKQEAgLTE5NSw3ICsxNTcsNyBAQCBib29sIE9wdGlvbnNPYmplY3Q6Omdl
dEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBzaG9ydCYgdmFsdWUpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5VmFsdWUo
Y29uc3QgU3RyaW5nJiBrZXksIHVuc2lnbmVkJiB2YWx1ZSkgY29uc3QKK2Jvb2wgT3B0aW9uc09i
amVjdDo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCYgdmFsdWUpIGNvbnN0CiB7CiAg
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKICAgICBpZiAoIWdldEtleShrZXksIHY4
VmFsdWUpKQpAQCAtMjA4LDcgKzE3MCw3IEBAIGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5VmFs
dWUoY29uc3QgU3RyaW5nJiBrZXksIHVuc2lnbmVkJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcm
IGtleSwgdW5zaWduZWQgbG9uZyBsb25nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgT3B0aW9uc09iamVj
dDo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKSBjb25z
dAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CiAgICAgaWYgKCFnZXRLZXko
a2V5LCB2OFZhbHVlKSkKQEAgLTIyNSw3ICsxODcsNyBAQCBib29sIE9wdGlvbnNPYmplY3Q6Omdl
dEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKSBj
bwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE9wdGlvbnNPYmplY3Q6OmdldEtleVZhbHVl
KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RE9NV2luZG93PiYgdmFsdWUpIGNvbnN0Citib29s
IE9wdGlvbnNPYmplY3Q6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4m
IHZhbHVlKSBjb25zdAogewogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CiAgICAg
aWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKQEAgLTI0Miw3ICsyMDQsNyBAQCBib29sIE9wdGlv
bnNPYmplY3Q6OmdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RE9NV2luZG93
PiYgdmFsdWUpIGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE9wdGlvbnNPYmplY3Q6
OmdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBNZXNzYWdlUG9ydEFycmF5JiB2YWx1ZSkg
Y29uc3QKK2Jvb2wgT3B0aW9uc09iamVjdDo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBNZXNzYWdl
UG9ydEFycmF5JiB2YWx1ZSkgY29uc3QKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZh
bHVlOwogICAgIGlmICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCkBAIC0yNTEsNCArMjEzLDE4IEBA
IGJvb2wgT3B0aW9uc09iamVjdDo6Z2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIE1lc3Nh
Z2VQb3J0QXJyYXkmIHZhbHVlKSBjb25zCiAgICAgcmV0dXJuIGdldE1lc3NhZ2VQb3J0QXJyYXko
djhWYWx1ZSwgdmFsdWUpOwogfQogCitib29sIE9wdGlvbnNPYmplY3Q6OmdldFdpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sK
KyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOworICAgIGlmICghZ2V0S2V5KGtleSwg
djhWYWx1ZSkgfHwgdjhWYWx1ZS0+SXNOdWxsKCkgfHwgdjhWYWx1ZS0+SXNVbmRlZmluZWQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEl0IGlzIHBvc3NpYmxlIGZv
ciB0aGlzIHRvIHRocm93IGluIHdoaWNoIGNhc2Ugd2UnZCBiZSBnZXR0aW5nIGJhY2sKKyAgICAv
LyAgICAgICAgYW4gZW1wdHkgc3RyaW5nIGFuZCByZXR1cm5pbmcgdHJ1ZSB3aGVuIHdlIHNob3Vs
ZCBiZSByZXR1cm5pbmcgZmFsc2UuCisgICAgLy8gICAgICAgIFNlZSBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMgZm9yIGEgc2ltaWxhcgorICAgIC8v
ICAgICAgICBleGFtcGxlLgorICAgIHZhbHVlID0gV2ViQ29yZTo6aXNVbmRlZmluZWRPck51bGwo
djhWYWx1ZSkgPyBTdHJpbmcoKSA6IHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcodjhWYWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaAppbmRleCBhZDNmMTc5YTEyMDk4YWY3MWFl
MzI4OWFkNjMzNWU1ZmIzZGQ3OWFmLi5jZDRjMmZkOGVmZjk3NTczOTM2YzY4YmI0MDAxZTRkMmFl
ODA1NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCkBA
IC00Niw0NCArNDYsMTkgQEAgcHVibGljOgogICAgIE9wdGlvbnNPYmplY3QmIG9wZXJhdG9yPShj
b25zdCBPcHRpb25zT2JqZWN0Jik7CiAKICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29u
c3Q7Ci0gICAgYm9vbCBnZXRLZXlCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB2YWx1ZSkg
Y29uc3Q7Ci0gICAgYm9vbCBnZXRLZXlJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYg
dmFsdWUpIGNvbnN0OwotICAgIGJvb2wgZ2V0S2V5RG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBk
b3VibGUmIHZhbHVlKSBjb25zdDsKLSAgICBib29sIGdldEtleVN0cmluZyhjb25zdCBTdHJpbmcm
IGtleSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7Ci0gICAgYm9vbCBnZXRLZXlTdHJpbmdXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdmFsdWUpIGNvbnN0
OwotICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0S2V5RE9NU3RyaW5nTGlzdChjb25z
dCBTdHJpbmcmIGtleSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gZ2V0S2V5
S2V5UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gICAgYm9vbCBnZXRLZXlWYWx1
ZShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gZ2V0S2V5Qm9vbChrZXksIHZhbHVlKTsKLSAgICB9Ci0gICAgYm9vbCBnZXRLZXlWYWx1
ZShjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZ2V0S2V5SW50MzIoa2V5LCB2YWx1ZSk7Ci0gICAgfQotICAgIGJvb2wgZ2V0S2V5
VmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gZ2V0S2V5RG91YmxlKGtleSwgdmFsdWUpOwotICAgIH0KLSAgICBib29sIGdl
dEtleVZhbHVlKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHZhbHVlKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGdldEtleVN0cmluZyhrZXksIHZhbHVlKTsKLSAgICB9Ci0gICAgYm9v
bCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlKSBjb25z
dAotICAgIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKLSAgICAgICAg
aWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBib29sIGdldChjb25zdCBTdHJpbmcmLCBib29sJikgY29uc3Q7CisgICAgYm9vbCBnZXQoY29u
c3QgU3RyaW5nJiwgaW50MzJfdCYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYs
IGRvdWJsZSYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIGNv
bnN0OworICAgIGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFNjcmlwdFZhbHVlJikgY29uc3Q7Cisg
ICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQmKSBjb25zdDsKKyAgICBi
b29sIGdldChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0OworICAgIGJvb2wgZ2V0KGNv
bnN0IFN0cmluZyYsIFJlZlB0cjxET01XaW5kb3c+JikgY29uc3Q7CisgICAgYm9vbCBnZXQoY29u
c3QgU3RyaW5nJiwgTWVzc2FnZVBvcnRBcnJheSYpIGNvbnN0OwogCi0gICAgICAgIHZhbHVlID0g
U2NyaXB0VmFsdWUodjhWYWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBi
b29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0JikgY29uc3Q7Ci0g
ICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCYpIGNvbnN0OwotICAg
IGJvb2wgZ2V0S2V5VmFsdWUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZyBsb25nJikgY29u
c3Q7Ci0gICAgYm9vbCBnZXRLZXlWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdp
bmRvdz4mIHZhbHVlKSBjb25zdDsKLSAgICBib29sIGdldEtleVZhbHVlKGNvbnN0IFN0cmluZyYg
a2V5LCBNZXNzYWdlUG9ydEFycmF5JiB2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBnZXRXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgU3RyaW5nJiwgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBnZXRLZXkoY29uc3QgU3RyaW5nJiBrZXksIHY4OjpMb2NhbDx2ODo6VmFs
dWU+JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMWQxNTQwMzFmOGUzYzgyZDhmZGVk
MGNkZDUxOTdjODZiNjU0NzljZS4uOTNkYmQ0M2ViOTFiY2EwYjMyNjQ2NzBlM2VhYzFiNDcyNmNi
Y2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZl
bnRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0VjhFdmVudChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzLCBib29sICgqCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2RlZmluZSBGSUxMX1BST1BF
UlRZKHByb3BlcnR5TmFtZSkgXAotICAgIG9wdGlvbnMuZ2V0S2V5VmFsdWUoI3Byb3BlcnR5TmFt
ZSwgZXZlbnRJbml0LnByb3BlcnR5TmFtZSk7IC8vIFRoaXMgY2FuIGZhaWwgYnV0IGl0IGlzIE9L
LgorICAgIG9wdGlvbnMuZ2V0KCNwcm9wZXJ0eU5hbWUsIGV2ZW50SW5pdC5wcm9wZXJ0eU5hbWUp
OyAvLyBUaGlzIGNhbiBmYWlsIGJ1dCBpdCBpcyBPSy4KIAogSU5TVEFOVElBVEVfSU5JVElBTEla
SU5HX0NPTlNUUlVDVE9SX0ZPUl9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VO
RCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkKIElOU1RBTlRJQVRFX0lO
SVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfQ1VTVE9NX0VWRU5UKERJQ1RJT05BUllfU1RBUlQs
IERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0TXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzZWYxMWFkM2JkNWU3
Yjg2NDRjNmMxZjFhZDMzYTAzM2IyMjBhYmM0Li5lZjUzZWFmMjdlZjEwNTNjZTcwZWFkZTlkNGM3
NzNjYjQzYzM0ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApA
QCAtOTAsMTcgKzkwLDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXI6Om9ic2VydmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lCiAgICAgT3B0aW9uc09i
amVjdCBvcHRpb25zT2JqZWN0KGFyZ3NbMV0pOwogICAgIHVuc2lnbmVkIG9wdGlvbnMgPSAwOwog
ICAgIGJvb2wgb3B0aW9uOwotICAgIGlmIChvcHRpb25zT2JqZWN0LmdldEtleVZhbHVlKCJjaGls
ZExpc3QiLCBvcHRpb24pICYmIG9wdGlvbikKKyAgICBpZiAob3B0aW9uc09iamVjdC5nZXQoImNo
aWxkTGlzdCIsIG9wdGlvbikgJiYgb3B0aW9uKQogICAgICAgICBvcHRpb25zIHw9IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdDsKLSAgICBpZiAob3B0aW9uc09iamVjdC5nZXRLZXlW
YWx1ZSgiYXR0cmlidXRlcyIsIG9wdGlvbikgJiYgb3B0aW9uKQorICAgIGlmIChvcHRpb25zT2Jq
ZWN0LmdldCgiYXR0cmlidXRlcyIsIG9wdGlvbikgJiYgb3B0aW9uKQogICAgICAgICBvcHRpb25z
IHw9IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXM7Ci0gICAgaWYgKG9wdGlvbnNP
YmplY3QuZ2V0S2V5VmFsdWUoImNoYXJhY3RlckRhdGEiLCBvcHRpb24pICYmIG9wdGlvbikKKyAg
ICBpZiAob3B0aW9uc09iamVjdC5nZXQoImNoYXJhY3RlckRhdGEiLCBvcHRpb24pICYmIG9wdGlv
bikKICAgICAgICAgb3B0aW9ucyB8PSBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhOwotICAgIGlmIChvcHRpb25zT2JqZWN0LmdldEtleVZhbHVlKCJzdWJ0cmVlIiwgb3B0aW9u
KSAmJiBvcHRpb24pCisgICAgaWYgKG9wdGlvbnNPYmplY3QuZ2V0KCJzdWJ0cmVlIiwgb3B0aW9u
KSAmJiBvcHRpb24pCiAgICAgICAgIG9wdGlvbnMgfD0gV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6
U3VidHJlZTsKLSAgICBpZiAob3B0aW9uc09iamVjdC5nZXRLZXlWYWx1ZSgiYXR0cmlidXRlT2xk
VmFsdWUiLCBvcHRpb24pICYmIG9wdGlvbikKKyAgICBpZiAob3B0aW9uc09iamVjdC5nZXQoImF0
dHJpYnV0ZU9sZFZhbHVlIiwgb3B0aW9uKSAmJiBvcHRpb24pCiAgICAgICAgIG9wdGlvbnMgfD0g
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYgKG9wdGlv
bnNPYmplY3QuZ2V0S2V5VmFsdWUoImNoYXJhY3RlckRhdGFPbGRWYWx1ZSIsIG9wdGlvbikgJiYg
b3B0aW9uKQorICAgIGlmIChvcHRpb25zT2JqZWN0LmdldCgiY2hhcmFjdGVyRGF0YU9sZFZhbHVl
Iiwgb3B0aW9uKSAmJiBvcHRpb24pCiAgICAgICAgIG9wdGlvbnMgfD0gV2ViS2l0TXV0YXRpb25P
YnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlOwogCiAgICAgaW1wLT5vYnNlcnZlKHRhcmdl
dCwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDdj
YmFmNWJmNTNjMmU0MmU3ZjMzZGNiNjZhMWJlYjE5MGYyNjEyNzMuLjBlOGUzOTIzOTI2NTRiZTdh
ODlhZWNkYmMwZGIxMmNjYzg3YmFiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwCkBAIC04MSwxNCArODEsMTQgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICB9
CiAKICAgICBTdHJpbmcga2V5UGF0aDsKLSAgICBib29sIGtleVBhdGhFeGlzdHMgPSBvcHRpb25z
LmdldEtleVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygia2V5UGF0aCIsIGtleVBhdGgp
OworICAgIGJvb2wga2V5UGF0aEV4aXN0cyA9IG9wdGlvbnMuZ2V0V2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKCJrZXlQYXRoIiwga2V5UGF0aCk7CiAgICAgaWYgKGtleVBhdGhFeGlzdHMgJiYgIUlE
QklzVmFsaWRLZXlQYXRoKGtleVBhdGgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAg
ICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKLSAgICBvcHRpb25zLmdldEtleUJvb2woImF1
dG9JbmNyZW1lbnQiLCBhdXRvSW5jcmVtZW50KTsKKyAgICBvcHRpb25zLmdldCgiYXV0b0luY3Jl
bWVudCIsIGF1dG9JbmNyZW1lbnQpOwogICAgIC8vIEZJWE1FOiBMb29rIHVwIGV2aWN0YWJsZSBh
bmQgcGFzcyB0aGF0IG9uIGFzIHdlbGwuCiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUo
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcApp
bmRleCBiOTA4NTZkODQ1NzM0NTg4YTVkOWQwMjY4MzkzYzM1ZTkxMDJlZjBiLi5hZjQ1ZWQ0YjFk
YzA3YjAyOTEzZGVjNzkxMDg1OTA4OTQzNjJjMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluCiAgICAgfQogCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKLSAgICBvcHRpb25zLmdl
dEtleUJvb2woInVuaXF1ZSIsIHVuaXF1ZSk7CisgICAgb3B0aW9ucy5nZXQoInVuaXF1ZSIsIHVu
aXF1ZSk7CiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1f
b2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgQVNTRVJUKCFpbmRleCAhPSAhZWMpOyAvLyBJZiB3
ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9u
IGNvZGUuIEFuZCB2aWNlIHZlcnNhLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>