<?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>158350</bug_id>
          
          <creation_ts>2016-06-03 11:13:02 -0700</creation_ts>
          <short_desc>Proxy.ownKeys should no longer throw an exception when duplicate keys are returned and the target is non-extensible</short_desc>
          <delta_ts>2016-06-03 17:33:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198977</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-03 11:13:02 -0700</bug_when>
    <thetext>See:
https://github.com/tc39/ecma262/pull/594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198982</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-06-03 11:16:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/26626211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199038</commentid>
    <comment_count>2</comment_count>
      <attachid>280467</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-03 14:29:26 -0700</bug_when>
    <thetext>Created attachment 280467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199046</commentid>
    <comment_count>3</comment_count>
      <attachid>280467</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-03 14:40:54 -0700</bug_when>
    <thetext>Comment on attachment 280467
Patch

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

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:938
&gt; +            bool isContainedIn = false;
&gt; +            return isContainedIn;

Your definition of &quot;isContainedIn&quot; here differs from the one below.  Did you mean &quot;isNotContainedIn&quot; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199047</commentid>
    <comment_count>4</comment_count>
      <attachid>280467</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-03 14:41:03 -0700</bug_when>
    <thetext>Comment on attachment 280467
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:934
&gt;      auto removeIfContainedInUncheckedResultKeys = [&amp;] (UniquedStringImpl* impl) -&gt; bool {

This lambda&apos;s name should probably change to something without &quot;removeIf&quot;.

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:938
&gt; +            bool isContainedIn = false;
&gt; +            return isContainedIn;

Change this to &quot;return false&quot;.

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:943
&gt; +        bool isContainedIn = true;
&gt;          return isContainedIn;

Change this to &quot;return true&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199065</commentid>
    <comment_count>5</comment_count>
      <attachid>280467</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-03 15:13:58 -0700</bug_when>
    <thetext>Comment on attachment 280467
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:934
&gt;&gt;      auto removeIfContainedInUncheckedResultKeys = [&amp;] (UniquedStringImpl* impl) -&gt; bool {
&gt; 
&gt; This lambda&apos;s name should probably change to something without &quot;removeIf&quot;.

I think this would be more confusing. The function conditionally removes a key from the HashSet and the name of this lambda indicates that.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:938
&gt;&gt;&gt; +            return isContainedIn;
&gt;&gt; 
&gt;&gt; Your definition of &quot;isContainedIn&quot; here differs from the one below.  Did you mean &quot;isNotContainedIn&quot; instead?
&gt; 
&gt; Change this to &quot;return false&quot;.

I&apos;m going with an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199069</commentid>
    <comment_count>6</comment_count>
      <attachid>280471</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-03 15:17:26 -0700</bug_when>
    <thetext>Created attachment 280471
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199141</commentid>
    <comment_count>7</comment_count>
      <attachid>280471</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 17:33:06 -0700</bug_when>
    <thetext>Comment on attachment 280471
Patch for landing

Clearing flags on attachment: 280471

Committed r201672: &lt;http://trac.webkit.org/changeset/201672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199142</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 17:33:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280467</attachid>
            <date>2016-06-03 14:29:26 -0700</date>
            <delta_ts>2016-06-03 15:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>9083</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNjU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTA2LTAzICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFByb3h5Lm93bktleXMgc2hvdWxkIG5vIGxvbmdlciB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBk
dXBsaWNhdGUga2V5cyBhcmUgcmV0dXJuZWQgYW5kIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2li
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY2MjYyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNwZWMgd2FzIHJlY2VudGx5IGNoYW5n
ZXMgaW4gUHJveHkgW1tPd25Qcm9wZXJ0eUtleXNdXQorICAgICAgICB0byBhbGxvdyBmb3IgZHVw
bGljYXRlIHByb3BlcnR5IG5hbWVzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KKyAgICAg
ICAgVGhpcyBwYXRjaCBmaXhlcyBvdXIgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlIHNwZWMu
CisgICAgICAgIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTI2Mi9wdWxsLzU5NAor
CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL3Byb3h5LW93bi1rZXlzLmpzOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgIChvd25L
ZXlzKToKKyAgICAgICAgKGFzc2VydCk6CisKIDIwMTYtMDYtMDMgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgbW9yZSBJTkZJTklUSS0+
SU5GSU5JVFkgdHlwb3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIwMTY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYxLDcgKzg2MSw3
IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIG93bktleXNN
ZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtl
SWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgQVNDSUlMaXRlcmFsKCInb3duS2V5cycgcHJvcGVy
dHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKG93
bktleXNNZXRob2QuaXNVbmRlZmluZWQoKSkgewpAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEpTVmFsdWUg
YXJyYXlMaWtlT2JqZWN0ID0gY2FsbChleGVjLCBvd25LZXlzTWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUHJvcGVy
dHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlID0gdHJhcFJlc3VsdC5tb2RlKCk7CkBAIC04OTAs
OCArODkwLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogICAg
IH0KICAgICBBU1NFUlQocmVzdWx0RmlsdGVyKTsKICAgICBSdW50aW1lVHlwZU1hc2sgZG9udFRo
cm93QW5FeGNlcHRpb25UeXBlRmlsdGVyID0gVHlwZVN0cmluZyB8IFR5cGVTeW1ib2w7Ci0gICAg
SGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkPiB1bmNoZWNrZWRSZXN1bHRLZXlz
OwotICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IDA7CisgICAgSGFzaFNldDxVbmlxdWVkU3RyaW5n
SW1wbCo+IHVuY2hlY2tlZFJlc3VsdEtleXM7CiAKICAgICBhdXRvIGFkZFByb3BOYW1lID0gWyZd
IChKU1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSB0eXBlKSAtPiBib29sIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgZG9FeGl0RWFybHkgPSB0cnVlOwpAQCAtOTAxLDMzICs5MDAsMzAgQEAg
dm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogICAgICAgICAgICAgcmV0
dXJuIGRvbnRFeGl0RWFybHk7CiAKICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IHZhbHVlLnRv
UHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGRvRXhpdEVhcmx5
OwogCi0gICAgICAgICsrdW5jaGVja2VkUmVzdWx0S2V5cy5hZGQoaWRlbnQuaW1wbCgpLCAwKS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICsrdG90YWxTaXplOwotCisgICAgICAgIHVuY2hlY2tl
ZFJlc3VsdEtleXMuYWRkKGlkZW50LmltcGwoKSk7CiAgICAgICAgIHRyYXBSZXN1bHQuYWRkVW5j
aGVja2VkKGlkZW50LmltcGwoKSk7Ci0KICAgICAgICAgcmV0dXJuIGRvbnRFeGl0RWFybHk7CiAg
ICAgfTsKIAogICAgIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGV4ZWMsIGFycmF5TGlrZU9iamVj
dCwgZG9udFRocm93QW5FeGNlcHRpb25UeXBlRmlsdGVyLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhh
bmRsZXIncyAnb3duS2V5cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIGFycmF5LWxpa2Ugb2JqZWN0
IGNvbnRhaW5pbmcgb25seSBTdHJpbmdzIGFuZCBTeW1ib2xzIiksIGFkZFByb3BOYW1lKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBib29sIHRhcmdldElzRXhlbnNpYmxlID0gdGFyZ2V0LT5pc0V4
dGVuc2libGUoZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSB0YXJnZXRLZXlzKCZ2bSwg
cHJvcGVydHlOYW1lTW9kZSk7CiAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXModGFyZ2V0LCBleGVjLCB0YXJnZXRLZXlzLCBlbnVtZXJhdGlvbk1vZGUpOwot
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBWZWN0b3I8VW5pcXVlZFN0cmluZ0ltcGwqPiB0YXJnZXRDb25m
aWd1cmFibGVLZXlzOwogICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbCo+IHRhcmdldE5vbkNv
bmZpZ3VyYWJsZUtleXM7CiAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCA6IHRhcmdl
dEtleXMpIHsKICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgICAg
IGJvb2wgaXNQcm9wZXJ0eURlZmluZWQgPSB0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBpZGVudC5pbXBsKCksIGRlc2NyaXB0b3IpOyAKLSAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChpc1Byb3BlcnR5RGVmaW5lZCAmJiAhZGVzY3JpcHRvci5jb25m
aWd1cmFibGUoKSkKICAgICAgICAgICAgIHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMuYXBwZW5k
KGlkZW50LmltcGwoKSk7CkBAIC05MzYsMTkgKzkzMiwxNCBAQCB2b2lkIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtR2V0T3duUHJvcGVydHlOCiAgICAgfQogCiAgICAgYXV0byByZW1vdmVJZkNvbnRhaW5l
ZEluVW5jaGVja2VkUmVzdWx0S2V5cyA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpIC0+
IGJvb2wgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0NvbnRhaW5lZEluID0gdHJ1ZTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNOb3RDb250YWluZWRJbiA9IGZhbHNlOwotCiAg
ICAgICAgIGF1dG8gaXRlciA9IHVuY2hlY2tlZFJlc3VsdEtleXMuZmluZChpbXBsKTsKLSAgICAg
ICAgaWYgKGl0ZXIgPT0gdW5jaGVja2VkUmVzdWx0S2V5cy5lbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBpc05vdENvbnRhaW5lZEluOwotCi0gICAgICAgIHVuc2lnbmVkJiBjb3VudCA9IGl0ZXIt
PnZhbHVlOwotICAgICAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBpc05v
dENvbnRhaW5lZEluOworICAgICAgICBpZiAoaXRlciA9PSB1bmNoZWNrZWRSZXN1bHRLZXlzLmVu
ZCgpKSB7CisgICAgICAgICAgICBib29sIGlzQ29udGFpbmVkSW4gPSBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiBpc0NvbnRhaW5lZEluOworICAgICAgICB9CiAKLSAgICAgICAgLS1jb3VudDsK
LSAgICAgICAgLS10b3RhbFNpemU7CisgICAgICAgIHVuY2hlY2tlZFJlc3VsdEtleXMucmVtb3Zl
KGl0ZXIpOworICAgICAgICBib29sIGlzQ29udGFpbmVkSW4gPSB0cnVlOwogICAgICAgICByZXR1
cm4gaXNDb250YWluZWRJbjsKICAgICB9OwogCkBAIC05NzEsMTUgKzk2Miw4IEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICAgICAgfQogICAgIH0KIAotI2lm
bmRlZiBOREVCVUcKLSAgICB1bnNpZ25lZCBzdW0gPSAwOwotICAgIGZvciAodW5zaWduZWQga2V5
Q291bnQgOiB1bmNoZWNrZWRSZXN1bHRLZXlzLnZhbHVlcygpKQotICAgICAgICBzdW0gKz0ga2V5
Q291bnQ7Ci0gICAgQVNTRVJUKHN1bSA9PSB0b3RhbFNpemUpOwotI2VuZGlmCi0KLSAgICBpZiAo
dG90YWxTaXplKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBhIGtleSB0aGF0IHdh
cyBub3QgcHJlc2VudCBpbiBpdHMgdGFyZ2V0IG9yIGl0IHJldHVybmVkIGR1cGxpY2F0ZSBrZXlz
IikpOworICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgeworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlz
JyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1l
eHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktb3duLWtleXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1vd24ta2V5
cy5qcwkocmV2aXNpb24gMjAxNjUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wcm94eS1vd24ta2V5cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBA
IGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm94eSk7CiAg
ICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgaGFuZGxlcidzICdv
d25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRz
IHRhcmdldCBvciBpdCByZXR1cm5lZCBkdXBsaWNhdGUga2V5cyIpOworICAgICAgICAgICAgYXNz
ZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgaGFuZGxlcidzICdvd25LZXlz
JyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1l
eHRlbnNpYmxlIHRhcmdldCIpOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydCh0aHJldyk7CiAg
ICAgICAgIGFzc2VydChjYWxsZWQpOwpAQCAtMTY5LDYgKzE2OSw3NSBAQCBmdW5jdGlvbiBhc3Nl
cnQoYikgewogfQogCiB7CisgICAgbGV0IHRhcmdldCA9IHt9OworICAgIGxldCBjYWxsZWQxID0g
ZmFsc2U7CisgICAgbGV0IGNhbGxlZDIgPSBmYWxzZTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkodGFyZ2V0LCAnYScsIHsgdmFsdWU6IDQyLCBjb25maWd1cmFibGU6IGZhbHNlIH0pOworICAg
IGxldCBwMSA9IG5ldyBQcm94eSh0YXJnZXQsIHsKKyAgICAgICAgb3duS2V5cygpIHsKKyAgICAg
ICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFsnYScsICdhJ107Cisg
ICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgcDIgPSBuZXcgUHJveHkocDEsIHsKKyAgICAgICAg
b3duS2V5cygpIHsKKyAgICAgICAgICAgIGNhbGxlZDIgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIFsnYSddOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDUwMDsgaSsrKSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBtYXkgdXBkYXRlIHRoZSBzcGVjIHRv
IG1ha2UgdGhpcyB0ZXN0IG5vdCB0aHJvdy4KKyAgICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1
Yi5jb20vdGMzOS9lY21hMjYyL3B1bGwvNTk0CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgUmVmbGVjdC5vd25LZXlzKHAyKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVy
cm9yOiBQcm94eSBvYmplY3QncyAndGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydHkgJ2EnIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0
cmFwIik7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNz
ZXJ0KHRocmV3KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZDEpOworICAgICAgICBhc3NlcnQoY2Fs
bGVkMik7CisgICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9IHt9OworICAgIGxldCBjYWxs
ZWQxID0gZmFsc2U7CisgICAgbGV0IGNhbGxlZDIgPSBmYWxzZTsKKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGFyZ2V0LCAnYScsIHsgdmFsdWU6IDQyLCBjb25maWd1cmFibGU6IHRydWUgfSk7
CisgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7CisgICAgbGV0IHAxID0gbmV3
IFByb3h5KHRhcmdldCwgeworICAgICAgICBvd25LZXlzKCkgeworICAgICAgICAgICAgY2FsbGVk
MSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWydhJywgJ2EnXTsKKyAgICAgICAgfQorICAg
IH0pOworICAgIGxldCBwMiA9IG5ldyBQcm94eShwMSwgeworICAgICAgICBvd25LZXlzKCkgewor
ICAgICAgICAgICAgY2FsbGVkMiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWydhJ107Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsK
KyAgICAgICAgLy8gRklYTUU6IHdlIG1heSB1cGRhdGUgdGhlIHNwZWMgdG8gbWFrZSB0aGlzIHRl
c3Qgbm90IHRocm93LgorICAgICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2Vj
bWEyNjIvcHVsbC81OTQKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBSZWZsZWN0Lm93bktleXMocDIpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IFByb3h5IG9i
amVjdCdzIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIGhhcyBjb25maWd1cmFibGUgcHJvcGVydHkg
J2EnIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIik7
CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRo
cmV3KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZDEpOworICAgICAgICBhc3NlcnQoY2FsbGVkMik7
CisgICAgfQorfQorCit7CiAgICAgbGV0IHRhcmdldCA9IHsgfTsKICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGFyZ2V0LCAieCIsIHsKICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLApAQCAt
MTg2LDE0ICsyNTUsNyBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogCiAgICAgbGV0IHByb3h5ID0g
bmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7
IGkrKykgewotICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgIE9iamVjdC5rZXlzKHByb3h5KTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAg
ICAgICB0aHJldyA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAi
VHlwZUVycm9yOiBQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBhIGtl
eSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgdGFyZ2V0IG9yIGl0IHJldHVybmVkIGR1cGxp
Y2F0ZSBrZXlzIik7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAg
T2JqZWN0LmtleXMocHJveHkpOwogICAgICAgICBhc3NlcnQoY2FsbGVkKTsKICAgICAgICAgY2Fs
bGVkID0gZmFsc2U7CiAgICAgfQo=
</data>
<flag name="review"
          id="304407"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280471</attachid>
            <date>2016-06-03 15:17:26 -0700</date>
            <delta_ts>2016-06-03 17:33:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>10121</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNjU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTA2LTAzICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFByb3h5Lm93bktleXMgc2hvdWxkIG5vIGxvbmdlciB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBk
dXBsaWNhdGUga2V5cyBhcmUgcmV0dXJuZWQgYW5kIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2li
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM1
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY2MjYyMTE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAgICAgVGhlIHNwZWMgd2FzIHJlY2VudGx5IGNoYW5n
ZXMgaW4gUHJveHkgW1tPd25Qcm9wZXJ0eUtleXNdXQorICAgICAgICB0byBhbGxvdyBmb3IgZHVw
bGljYXRlIHByb3BlcnR5IG5hbWVzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KKyAgICAg
ICAgVGhpcyBwYXRjaCBmaXhlcyBvdXIgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2ggdGhlIHNwZWMu
CisgICAgICAgIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTI2Mi9wdWxsLzU5NAor
CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL3Byb3h5LW93bi1rZXlzLmpzOgorICAgICAgICAoaS5jYXRjaCk6CisgICAgICAgIChvd25L
ZXlzKToKKyAgICAgICAgKGFzc2VydCk6CisKIDIwMTYtMDYtMDMgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgbW9yZSBJTkZJTklUSS0+
SU5GSU5JVFkgdHlwb3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIwMTY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYxLDcgKzg2MSw3
IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIG93bktleXNN
ZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtl
SWRlbnRpZmllcih2bSwgIm93bktleXMiKSwgQVNDSUlMaXRlcmFsKCInb3duS2V5cycgcHJvcGVy
dHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKG93
bktleXNNZXRob2QuaXNVbmRlZmluZWQoKSkgewpAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgUHJv
eHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEpTVmFsdWUg
YXJyYXlMaWtlT2JqZWN0ID0gY2FsbChleGVjLCBvd25LZXlzTWV0aG9kLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUHJvcGVy
dHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlID0gdHJhcFJlc3VsdC5tb2RlKCk7CkBAIC04OTAs
OCArODkwLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogICAg
IH0KICAgICBBU1NFUlQocmVzdWx0RmlsdGVyKTsKICAgICBSdW50aW1lVHlwZU1hc2sgZG9udFRo
cm93QW5FeGNlcHRpb25UeXBlRmlsdGVyID0gVHlwZVN0cmluZyB8IFR5cGVTeW1ib2w7Ci0gICAg
SGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkPiB1bmNoZWNrZWRSZXN1bHRLZXlz
OwotICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IDA7CisgICAgSGFzaFNldDxVbmlxdWVkU3RyaW5n
SW1wbCo+IHVuY2hlY2tlZFJlc3VsdEtleXM7CiAKICAgICBhdXRvIGFkZFByb3BOYW1lID0gWyZd
IChKU1ZhbHVlIHZhbHVlLCBSdW50aW1lVHlwZSB0eXBlKSAtPiBib29sIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgZG9FeGl0RWFybHkgPSB0cnVlOwpAQCAtOTAxLDMzICs5MDAsMzAgQEAg
dm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogICAgICAgICAgICAgcmV0
dXJuIGRvbnRFeGl0RWFybHk7CiAKICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IHZhbHVlLnRv
UHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGRvRXhpdEVhcmx5
OwogCi0gICAgICAgICsrdW5jaGVja2VkUmVzdWx0S2V5cy5hZGQoaWRlbnQuaW1wbCgpLCAwKS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICsrdG90YWxTaXplOwotCisgICAgICAgIHVuY2hlY2tl
ZFJlc3VsdEtleXMuYWRkKGlkZW50LmltcGwoKSk7CiAgICAgICAgIHRyYXBSZXN1bHQuYWRkVW5j
aGVja2VkKGlkZW50LmltcGwoKSk7Ci0KICAgICAgICAgcmV0dXJuIGRvbnRFeGl0RWFybHk7CiAg
ICAgfTsKIAogICAgIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKGV4ZWMsIGFycmF5TGlrZU9iamVj
dCwgZG9udFRocm93QW5FeGNlcHRpb25UeXBlRmlsdGVyLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhh
bmRsZXIncyAnb3duS2V5cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIGFycmF5LWxpa2Ugb2JqZWN0
IGNvbnRhaW5pbmcgb25seSBTdHJpbmdzIGFuZCBTeW1ib2xzIiksIGFkZFByb3BOYW1lKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBib29sIHRhcmdldElzRXhlbnNpYmxlID0gdGFyZ2V0LT5pc0V4
dGVuc2libGUoZXhlYyk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSB0YXJnZXRLZXlzKCZ2bSwg
cHJvcGVydHlOYW1lTW9kZSk7CiAgICAgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5TmFtZXModGFyZ2V0LCBleGVjLCB0YXJnZXRLZXlzLCBlbnVtZXJhdGlvbk1vZGUpOwot
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBWZWN0b3I8VW5pcXVlZFN0cmluZ0ltcGwqPiB0YXJnZXRDb25m
aWd1cmFibGVLZXlzOwogICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbCo+IHRhcmdldE5vbkNv
bmZpZ3VyYWJsZUtleXM7CiAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCA6IHRhcmdl
dEtleXMpIHsKICAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgICAg
IGJvb2wgaXNQcm9wZXJ0eURlZmluZWQgPSB0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBpZGVudC5pbXBsKCksIGRlc2NyaXB0b3IpOyAKLSAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChpc1Byb3BlcnR5RGVmaW5lZCAmJiAhZGVzY3JpcHRvci5jb25m
aWd1cmFibGUoKSkKICAgICAgICAgICAgIHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMuYXBwZW5k
KGlkZW50LmltcGwoKSk7CkBAIC05MzUsMjYgKzkzMSwxOCBAQCB2b2lkIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtR2V0T3duUHJvcGVydHlOCiAgICAgICAgICAgICB0YXJnZXRDb25maWd1cmFibGVLZXlz
LmFwcGVuZChpZGVudC5pbXBsKCkpOwogICAgIH0KIAotICAgIGF1dG8gcmVtb3ZlSWZDb250YWlu
ZWRJblVuY2hlY2tlZFJlc3VsdEtleXMgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKSAt
PiBib29sIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNDb250YWluZWRJbiA9IHRydWU7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzTm90Q29udGFpbmVkSW4gPSBmYWxzZTsKLQor
ICAgIGVudW0gQ29udGFpbmVkSW4geyBJc0NvbnRhaW5lZEluLCBJc05vdENvbnRhaW5lZEluIH07
CisgICAgYXV0byByZW1vdmVJZkNvbnRhaW5lZEluVW5jaGVja2VkUmVzdWx0S2V5cyA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpIC0+IENvbnRhaW5lZEluIHsKICAgICAgICAgYXV0byBp
dGVyID0gdW5jaGVja2VkUmVzdWx0S2V5cy5maW5kKGltcGwpOwogICAgICAgICBpZiAoaXRlciA9
PSB1bmNoZWNrZWRSZXN1bHRLZXlzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGlzTm90Q29u
dGFpbmVkSW47CisgICAgICAgICAgICByZXR1cm4gSXNOb3RDb250YWluZWRJbjsKIAotICAgICAg
ICB1bnNpZ25lZCYgY291bnQgPSBpdGVyLT52YWx1ZTsKLSAgICAgICAgaWYgKGNvdW50ID09IDAp
Ci0gICAgICAgICAgICByZXR1cm4gaXNOb3RDb250YWluZWRJbjsKLQotICAgICAgICAtLWNvdW50
OwotICAgICAgICAtLXRvdGFsU2l6ZTsKLSAgICAgICAgcmV0dXJuIGlzQ29udGFpbmVkSW47Cisg
ICAgICAgIHVuY2hlY2tlZFJlc3VsdEtleXMucmVtb3ZlKGl0ZXIpOworICAgICAgICByZXR1cm4g
SXNDb250YWluZWRJbjsKICAgICB9OwogCiAgICAgZm9yIChVbmlxdWVkU3RyaW5nSW1wbCogaW1w
bCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMpIHsKLSAgICAgICAgYm9vbCBjb250YWlucyA9
IHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpOwotICAgICAgICBp
ZiAoIWNvbnRhaW5zKSB7CisgICAgICAgIGlmIChyZW1vdmVJZkNvbnRhaW5lZEluVW5jaGVja2Vk
UmVzdWx0S2V5cyhpbXBsKSA9PSBJc05vdENvbnRhaW5lZEluKSB7CiAgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIlByb3h5IG9iamVjdCdzICd0YXJnZXQnIGhh
cyB0aGUgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAnIiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0
IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAnb3duS2V5cycgdHJhcCIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTY0LDIyICs5NTIsMTQgQEAgdm9pZCBQcm94
eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxlS2V5cykgewot
ICAgICAgICBib29sIGNvbnRhaW5zID0gcmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3Vs
dEtleXMoaW1wbCk7Ci0gICAgICAgIGlmICghY29udGFpbnMpIHsKKyAgICAgICAgaWYgKHJlbW92
ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90Q29udGFpbmVk
SW4pIHsKICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiUHJv
eHkgb2JqZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eSAnIiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9t
IHRoZSAnb3duS2V5cycgdHJhcCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICB1bnNpZ25lZCBzdW0gPSAwOwotICAgIGZvciAo
dW5zaWduZWQga2V5Q291bnQgOiB1bmNoZWNrZWRSZXN1bHRLZXlzLnZhbHVlcygpKQotICAgICAg
ICBzdW0gKz0ga2V5Q291bnQ7Ci0gICAgQVNTRVJUKHN1bSA9PSB0b3RhbFNpemUpOwotI2VuZGlm
Ci0KLSAgICBpZiAodG90YWxTaXplKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBh
IGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgdGFyZ2V0IG9yIGl0IHJldHVybmVkIGR1
cGxpY2F0ZSBrZXlzIikpOworICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxl
cidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQg
aW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktb3duLWtl
eXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9w
cm94eS1vd24ta2V5cy5qcwkocmV2aXNpb24gMjAxNjUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1vd24ta2V5cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYw
LDcgKzE2MCw3IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgICAgICBPYmplY3Qua2V5
cyhwcm94eSk7CiAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgdGhyZXcgPSB0cnVl
OwotICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkg
aGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHBy
ZXNlbnQgaW4gaXRzIHRhcmdldCBvciBpdCByZXR1cm5lZCBkdXBsaWNhdGUga2V5cyIpOworICAg
ICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgaGFuZGxl
cidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQg
aW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIpOwogICAgICAgICB9CiAgICAgICAgIGFzc2Vy
dCh0aHJldyk7CiAgICAgICAgIGFzc2VydChjYWxsZWQpOwpAQCAtMTY5LDYgKzE2OSw3NSBAQCBm
dW5jdGlvbiBhc3NlcnQoYikgewogfQogCiB7CisgICAgbGV0IHRhcmdldCA9IHt9OworICAgIGxl
dCBjYWxsZWQxID0gZmFsc2U7CisgICAgbGV0IGNhbGxlZDIgPSBmYWxzZTsKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnYScsIHsgdmFsdWU6IDQyLCBjb25maWd1cmFibGU6IGZh
bHNlIH0pOworICAgIGxldCBwMSA9IG5ldyBQcm94eSh0YXJnZXQsIHsKKyAgICAgICAgb3duS2V5
cygpIHsKKyAgICAgICAgICAgIGNhbGxlZDEgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFsn
YScsICdhJ107CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgcDIgPSBuZXcgUHJveHkocDEs
IHsKKyAgICAgICAgb3duS2V5cygpIHsKKyAgICAgICAgICAgIGNhbGxlZDIgPSB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuIFsnYSddOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBtYXkgdXBkYXRl
IHRoZSBzcGVjIHRvIG1ha2UgdGhpcyB0ZXN0IG5vdCB0aHJvdy4KKyAgICAgICAgLy8gc2VlOiBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hMjYyL3B1bGwvNTk0CisgICAgICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgUmVmbGVjdC5vd25LZXlzKHAy
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygp
ID09PSAiVHlwZUVycm9yOiBQcm94eSBvYmplY3QncyAndGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25m
aWd1cmFibGUgcHJvcGVydHkgJ2EnIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhl
ICdvd25LZXlzJyB0cmFwIik7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZDEpOworICAgICAg
ICBhc3NlcnQoY2FsbGVkMik7CisgICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9IHt9Owor
ICAgIGxldCBjYWxsZWQxID0gZmFsc2U7CisgICAgbGV0IGNhbGxlZDIgPSBmYWxzZTsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnYScsIHsgdmFsdWU6IDQyLCBjb25maWd1cmFi
bGU6IHRydWUgfSk7CisgICAgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7CisgICAg
bGV0IHAxID0gbmV3IFByb3h5KHRhcmdldCwgeworICAgICAgICBvd25LZXlzKCkgeworICAgICAg
ICAgICAgY2FsbGVkMSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWydhJywgJ2EnXTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIGxldCBwMiA9IG5ldyBQcm94eShwMSwgeworICAgICAgICBv
d25LZXlzKCkgeworICAgICAgICAgICAgY2FsbGVkMiA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm4gWydhJ107CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
NTAwOyBpKyspIHsKKyAgICAgICAgLy8gRklYTUU6IHdlIG1heSB1cGRhdGUgdGhlIHNwZWMgdG8g
bWFrZSB0aGlzIHRlc3Qgbm90IHRocm93LgorICAgICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS90YzM5L2VjbWEyNjIvcHVsbC81OTQKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZWZsZWN0Lm93bktleXMocDIpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJy
b3I6IFByb3h5IG9iamVjdCdzIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIGhhcyBjb25maWd1cmFi
bGUgcHJvcGVydHkgJ2EnIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25L
ZXlzJyB0cmFwIik7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZDEpOworICAgICAgICBhc3Nl
cnQoY2FsbGVkMik7CisgICAgfQorfQorCit7CiAgICAgbGV0IHRhcmdldCA9IHsgfTsKICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAieCIsIHsKICAgICAgICAgY29uZmlndXJhYmxl
OiB0cnVlLApAQCAtMTg2LDE0ICsyNTUsNyBAQCBmdW5jdGlvbiBhc3NlcnQoYikgewogCiAgICAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CiAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDA7IGkrKykgewotICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3h5KTsKLSAgICAgICAgfSBjYXRjaChl
KSB7Ci0gICAgICAgICAgICB0aHJldyA9IHRydWU7Ci0gICAgICAgICAgICBhc3NlcnQoZS50b1N0
cmluZygpID09PSAiVHlwZUVycm9yOiBQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCBy
ZXR1cm5lZCBhIGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgdGFyZ2V0IG9yIGl0IHJl
dHVybmVkIGR1cGxpY2F0ZSBrZXlzIik7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KHRocmV3
KTsKKyAgICAgICAgT2JqZWN0LmtleXMocHJveHkpOwogICAgICAgICBhc3NlcnQoY2FsbGVkKTsK
ICAgICAgICAgY2FsbGVkID0gZmFsc2U7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>