<?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>155313</bug_id>
          
          <creation_ts>2016-03-10 11:56:50 -0800</creation_ts>
          <short_desc>[ES6] Make ToPropertyDescriptor spec compliant</short_desc>
          <delta_ts>2016-03-10 15:10:04 -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>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></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>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173221</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 11:56:50 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173248</commentid>
    <comment_count>1</comment_count>
      <attachid>273598</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 12:27:54 -0800</bug_when>
    <thetext>Created attachment 273598
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173265</commentid>
    <comment_count>2</comment_count>
      <attachid>273598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 12:51:21 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        This isn&apos;t valid according to the spec and it user observable

typo: it ==&gt; it&apos;s

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt; +        if (vm.exception())
&gt;              return false;

Can remove this since we have an exception check immediately after.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:334
&gt; +        if (vm.exception())
&gt;              return false;

Ditto.  Not needed.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:343
&gt; +        if (vm.exception())
&gt;              return false;

Ditto.  Not needed.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:351
&gt; +        if (vm.exception())
&gt;              return false;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173270</commentid>
    <comment_count>3</comment_count>
      <attachid>273598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 12:55:05 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

r=me assuming there&apos;s no perf implications to this.  Can you confirm with benchmark run please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173350</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 14:33:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 273598 [details]
&gt; patch
&gt; 
&gt; r=me assuming there&apos;s no perf implications to this.  Can you confirm with
&gt; benchmark run please?

Perf is OK.

VMs tested:
&quot;og&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197945)
&quot;change&quot; at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197945)

Collected 8 samples per benchmark/VM, with 8 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                    og                      change                                      
Octane:
   encrypt                                   0.21076+-0.00311    ?     0.21264+-0.00068       ?
   decrypt                                   3.79795+-0.05058    ?     3.81588+-0.04735       ?
   deltablue                        x2       0.17981+-0.00319          0.17929+-0.00302       
   earley                                    0.38653+-0.02030          0.37536+-0.00203         might be 1.0298x faster
   boyer                                     6.59598+-0.04493          6.57618+-0.02533       
   navier-stokes                    x2       6.52300+-0.00486    ?     6.52359+-0.00630       ?
   raytrace                         x2       1.16464+-0.03107    ?     1.18363+-0.03186       ? might be 1.0163x slower
   richards                         x2       0.10962+-0.00227          0.10883+-0.00103       
   splay                            x2       0.46213+-0.00191    ?     0.46575+-0.00646       ?
   regexp                           x2      25.99609+-0.46590    ?    26.03778+-0.28351       ?
   pdfjs                            x2      49.85612+-0.56007    ?    50.28483+-0.91745       ?
   mandreel                         x2      56.94099+-0.18768    ?    57.21665+-0.31544       ?
   gbemu                            x2      34.34817+-0.24418    ?    34.42325+-0.22974       ?
   closure                                   0.75193+-0.00376          0.75027+-0.00271       
   jquery                                    9.99679+-0.06307          9.94433+-0.07370       
   box2d                            x2      12.82058+-0.09195    ?    12.86507+-0.07055       ?
   zlib                             x2     485.29024+-12.12829   ?   491.49192+-3.04964       ? might be 1.0128x slower
   typescript                       x2     830.33755+-11.79711   ?   832.41931+-5.72747       ?

   &lt;geometric&gt;                               6.86439+-0.02715    ?     6.88181+-0.02244       ? might be 1.0025x slower

                                                    og                      change                                      
Kraken:
   ai-astar                                  114.786+-1.527      ?     115.641+-2.524         ?
   audio-beat-detection                       56.605+-0.377             56.344+-0.212         
   audio-dft                                 126.449+-0.622      ?     127.194+-0.356         ?
   audio-fft                                  42.420+-0.123             42.287+-0.117         
   audio-oscillator                           62.574+-0.304      ?      62.855+-0.341         ?
   imaging-darkroom                           76.973+-0.328      ?      77.087+-0.636         ?
   imaging-desaturate                         59.357+-1.117      ?      59.705+-2.017         ?
   imaging-gaussian-blur                      81.656+-5.394      ?      85.990+-5.076         ? might be 1.0531x slower
   json-parse-financial                       48.904+-0.380      ?      48.940+-0.510         ?
   json-stringify-tinderbox                   30.908+-0.618      ?      31.099+-0.449         ?
   stanford-crypto-aes                        53.128+-0.448      ?      53.232+-0.402         ?
   stanford-crypto-ccm                        46.954+-1.822      ?      47.051+-1.395         ?
   stanford-crypto-pbkdf2                    133.163+-0.537      ?     134.064+-1.485         ?
   stanford-crypto-sha256-iterative           51.134+-0.258             51.034+-0.165         

   &lt;arithmetic&gt;                               70.358+-0.379      ?      70.894+-0.508         ? might be 1.0076x slower

                                                    og                      change                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           21.9764+-0.0880     ?     22.0878+-0.0856        ? might be 1.0051x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173351</commentid>
    <comment_count>5</comment_count>
      <attachid>273598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 14:38:53 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

Cancelling commit for now.  I presume you didn&apos;t see my other comments.  Can you address them please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173360</commentid>
    <comment_count>6</comment_count>
      <attachid>273598</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 14:49:45 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt;&gt;              return false;
&gt; 
&gt; Can remove this since we have an exception check immediately after.

This code is bad. It should really read:
```
JSValue v = description-&gt;get(..)
if (vm.exception())
    retur false;
desc.setEnumerable(...).
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173362</commentid>
    <comment_count>7</comment_count>
      <attachid>273598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 14:51:15 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt;&gt;&gt;              return false;
&gt;&gt; 
&gt;&gt; Can remove this since we have an exception check immediately after.
&gt; 
&gt; This code is bad. It should really read:
&gt; ```
&gt; JSValue v = description-&gt;get(..)
&gt; if (vm.exception())
&gt;     retur false;
&gt; desc.setEnumerable(...).
&gt; ```

Should description-&gt;hasProperty() return true if it throws an exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173366</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 14:56:37 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 273598 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273598&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt; &gt;&gt;&gt;              return false;
&gt; &gt;&gt; 
&gt; &gt;&gt; Can remove this since we have an exception check immediately after.
&gt; &gt; 
&gt; &gt; This code is bad. It should really read:
&gt; &gt; ```
&gt; &gt; JSValue v = description-&gt;get(..)
&gt; &gt; if (vm.exception())
&gt; &gt;     retur false;
&gt; &gt; desc.setEnumerable(...).
&gt; &gt; ```
&gt; 
&gt; Should description-&gt;hasProperty() return true if it throws an exception?

Never. It should return false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173372</commentid>
    <comment_count>9</comment_count>
      <attachid>273598</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 15:00:04 -0800</bug_when>
    <thetext>Comment on attachment 273598
patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:326
&gt;&gt;&gt;&gt;&gt;              return false;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Can remove this since we have an exception check immediately after.
&gt;&gt;&gt; 
&gt;&gt;&gt; This code is bad. It should really read:
&gt;&gt;&gt; ```
&gt;&gt;&gt; JSValue v = description-&gt;get(..)
&gt;&gt;&gt; if (vm.exception())
&gt;&gt;&gt;     retur false;
&gt;&gt;&gt; desc.setEnumerable(...).
&gt;&gt;&gt; ```
&gt;&gt; 
&gt;&gt; Should description-&gt;hasProperty() return true if it throws an exception?
&gt; 
&gt; Never. It should return false.

Sorry, I missed the point that the exception check after get is needed so that we don&apos;t call setEnumerable() (and friends below).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173381</commentid>
    <comment_count>10</comment_count>
      <attachid>273631</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 15:09:10 -0800</bug_when>
    <thetext>Created attachment 273631
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173383</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-10 15:10:04 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/197960</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273598</attachid>
            <date>2016-03-10 12:27:54 -0800</date>
            <delta_ts>2016-03-10 15:09:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11809</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE2LTAzLTEwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIE1ha2UgVG9Qcm9wZXJ0eURlc2NyaXB0b3Igc3BlYyBjb21wbGlhbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgcGVyZm9ybWlu
ZyBIYXNQcm9wZXJ0eSguKSBhbmQgR2V0KC4pIGluIHRoZSBzYW1lIG9wZXJhdGlvbi4KKyAgICAg
ICAgVGhpcyBpc24ndCB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMgYW5kIGl0IHVzZXIgb2Jz
ZXJ2YWJsZQorICAgICAgICBiZWhhdmlvciB3aXRoIFByb3h5LiBUaGlzIHBhdGNoIGZpeGVzIFRv
UHJvcGVydHlEZXNjcmlwdG9yIHRvIHVzZQorICAgICAgICB0d28gZGlzdGluY3Qgb3BlcmF0aW9u
cyBmb3IgSGFzUHJvcGVydHkoLikgYW5kIEdldCguKS4KKworICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL3RvLXByb3BlcnR5LWtleS1jb3JyZWN0bmVzcy5qczog
QWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0
LmxldC5oYW5kbGVyLmhhcyk6CisgICAgICAgIChhcnJheUVxKToKKyAgICAgICAgKGxldC5oYW5k
bGVyLmhhcyk6CisgICAgICAgIChsZXQudGFyZ2V0KToKKyAgICAgICAgKHNldCBnZXQgbGV0KToK
KwogMjAxNi0wMy0xMCAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBc3NpZ25tZW50IHRvIG5ldy50YXJnZXQgc2hvdWxkIGJlIGFuIGVhcmx5IGVycm9yCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxOTc5NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw4NCArMzA5LDky
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFt
ZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRl
KSk7CiB9CiAKLS8vIEVTNSA4LjEwLjUgVG9Qcm9wZXJ0eURlc2NyaXB0b3IKKy8vIEVTNiA2LjIu
NC41IFRvUHJvcGVydHlEZXNjcmlwdG9yCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy10b3Byb3BlcnR5ZGVzY3JpcHRvcgogYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmICghaW4uaXNPYmplY3QoKSkgewotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIp
KSk7CisgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIp
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0
aW9uID0gYXNPYmplY3QoaW4pOwogCi0gICAgUHJvcGVydHlTbG90IGVudW1lcmFibGVTbG90KGRl
c2NyaXB0aW9uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkp
OwotICAgIGlmIChkZXNjcmlwdGlvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5lbnVtZXJhYmxlLCBlbnVtZXJhYmxlU2xvdCkpIHsKLSAgICAgICAgZGVzYy5z
ZXRFbnVtZXJhYmxlKGVudW1lcmFibGVTbG90LmdldFZhbHVlKGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5lbnVtZXJhYmxlKS50b0Jvb2xlYW4oZXhlYykpOwotICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKGRlc2NyaXB0aW9uLT5oYXNQcm9wZXJ0eShleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSkpIHsKKyAgICAgICAgZGVzYy5zZXRFbnVt
ZXJhYmxlKGRlc2NyaXB0aW9uLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmVudW1l
cmFibGUpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQcm9wZXJ0eVNsb3QgY29uZmlndXJhYmxlU2xv
dChkZXNjcmlwdGlvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3Bl
cnR5KTsKLSAgICBpZiAoZGVzY3JpcHRpb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCBjb25maWd1cmFibGVTbG90KSkgewotICAgICAg
ICBkZXNjLnNldENvbmZpZ3VyYWJsZShjb25maWd1cmFibGVTbG90LmdldFZhbHVlKGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUpLnRvQm9vbGVhbihleGVjKSk7Ci0gICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24tPmhhc1By
b3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUpKSB7CisgICAg
ICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGRlc2NyaXB0aW9uLT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmNvbmZpZ3VyYWJsZSkudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEpTVmFsdWUg
dmFsdWU7Ci0gICAgUHJvcGVydHlTbG90IHZhbHVlU2xvdChkZXNjcmlwdGlvbiwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKLSAgICBpZiAoZGVzY3JpcHRp
b24tPmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZh
bHVlU2xvdCkpIHsKLSAgICAgICAgZGVzYy5zZXRWYWx1ZSh2YWx1ZVNsb3QuZ2V0VmFsdWUoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlKSk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZSkpIHsKKyAgICAgICAgZGVzYy5zZXRWYWx1ZShkZXNjcmlw
dGlvbi0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZSkpOworICAgICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAg
IGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUHJvcGVy
dHlTbG90IHdyaXRhYmxlU2xvdChkZXNjcmlwdGlvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKLSAgICBpZiAoZGVzY3JpcHRpb24tPmdldFByb3BlcnR5
U2xvdChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHdyaXRhYmxlU2xvdCkp
IHsKLSAgICAgICAgZGVzYy5zZXRXcml0YWJsZSh3cml0YWJsZVNsb3QuZ2V0VmFsdWUoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxlKS50b0Jvb2xlYW4oZXhlYykpOwotICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKGRlc2NyaXB0aW9uLT5oYXNQcm9w
ZXJ0eShleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUpKSB7CisgICAgICAgIGRl
c2Muc2V0V3JpdGFibGUoZGVzY3JpcHRpb24tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkud3JpdGFibGUpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdChk
ZXNjcmlwdGlvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5
KTsKLSAgICBpZiAoZGVzY3JpcHRpb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2V0LCBnZXRTbG90KSkgewotICAgICAgICBKU1ZhbHVlIGdldCA9IGdldFNs
b3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldCk7Ci0gICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24tPmhhc1Byb3BlcnR5
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXQpKSB7CisgICAgICAgIEpTVmFsdWUgZ2V0
ID0gZGVzY3JpcHRpb24tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0KTsKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxs
VHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUg
YSBmdW5jdGlvbi4iKSkpOworICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVu
Y3Rpb24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgZGVzYy5zZXRHZXR0ZXIoZ2V0KTsKICAgICB9CisgICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQcm9wZXJ0eVNs
b3Qgc2V0U2xvdChkZXNjcmlwdGlvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
Okhhc1Byb3BlcnR5KTsKLSAgICBpZiAoZGVzY3JpcHRpb24tPmdldFByb3BlcnR5U2xvdChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc2V0LCBzZXRTbG90KSkgewotICAgICAgICBKU1ZhbHVl
IHNldCA9IHNldFNsb3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCk7
Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24t
Pmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQpKSB7CisgICAgICAg
IEpTVmFsdWUgc2V0ID0gZGVzY3JpcHRpb24tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuc2V0KTsKKyAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxE
YXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2V0
dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkpOworICAgICAgICAgICAgICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBt
dXN0IGJlIGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVzYy5zZXRTZXR0ZXIoc2V0KTsKICAg
ICB9CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIWRlc2MuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBpZiAoZGVzYy52YWx1ZSgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBw
cm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0
ZXIuIikpKTsKKyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBv
biBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChkZXNjLndyaXRhYmxlUHJlc2VudCgpKSB7Ci0gICAgICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpKTsKKyAgICAgICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9w
ZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0
ZXIuIikpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5Nzk0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkod29ya2luZyBjb3B5KQpA
QCAtMTAxNyw3ICsxMDE3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxs
c19Ub1ByaW1pdGl2ZS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94
eV9pbnRlcm5hbF9nZXRfY2FsbHNfVG9Qcm9wZXJ0eURlc2NyaXB0b3IuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJu
YWxfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yX2NhbGxzX1tbU2V0XV0uanMKICAgY21kOiBydW5F
UzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldE93blByb3BlcnR5RGVzY3Jp
cHRvcl9jYWxsc19GdW5jdGlvbi5wcm90b3R5cGUuYmluZC5qcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by1wcm9wZXJ0eS1rZXktY29ycmVjdG5lc3MuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by1wcm9wZXJ0
eS1rZXktY29ycmVjdG5lc3MuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3RvLXByb3BlcnR5LWtleS1jb3JyZWN0bmVzcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzMCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOworfQorCitmdW5jdGlv
biB0ZXN0KGYpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICBm
KCk7Cit9IAorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBlcnJvciA9IG51bGw7CisgICAg
bGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wZXJ0
eSkgeworICAgICAgICAgICAgYXNzZXJ0KGVycm9yID09PSBudWxsKTsgLy8gTWFrZSBzdXJlIHdl
IGRvbid0IGNhbGwgaW50byBoYXMgbW9yZSB0aGFuIG9uY2UuIE1ha2Ugc3VyZSB3ZSB0aHJvdyBv
biB0aGUgZmlzdCBlcnJvci4KKyAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yOworICAgICAg
ICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBwcm94eSA9IG5l
dyBQcm94eSh7fSwgaGFuZGxlcik7CisgICAgbGV0IGZvbyA9IHt9OworCisgICAgbGV0IHRocmV3
ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywg
ImZvbyIsIHByb3h5KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgICAgICBhc3NlcnQoZSA9PT0gZXJyb3IpOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOwor
fSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IGVycm9yID0gbnVsbDsKKyAgICBsZXQg
aGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BlcnR5KSB7
CisgICAgICAgICAgICBhc3NlcnQoZXJyb3IgPT09IG51bGwpOyAvLyBNYWtlIHN1cmUgd2UgZG9u
J3QgY2FsbCBpbnRvIGhhcyBtb3JlIHRoYW4gb25jZS4gTWFrZSBzdXJlIHdlIHRocm93IG9uIHRo
ZSBmaXN0IGVycm9yLgorICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09PSAic2V0IikgeworICAg
ICAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yOworICAgICAgICAgICAgICAgIHRocm93IGVy
cm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRoZVRh
cmdldCwgcHJvcGVydHkpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcg
UHJveHkoe30sIGhhbmRsZXIpOworICAgIGxldCBmb28gPSB7fTsKKworICAgIGxldCB0aHJldyA9
IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJm
b28iLCBwcm94eSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAg
ICAgICAgYXNzZXJ0KGUgPT09IGVycm9yKTsKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KTsKK30p
OworCitmdW5jdGlvbiBhcnJheUVxKGEsIGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT09IGIubGVu
Z3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKKworfQordGVzdChmdW5jdGlvbigp
IHsKKyAgICBsZXQgZXJyb3IgPSBudWxsOworICAgIGxldCBoYXNBcnJheSA9IFtdOworICAgIGxl
dCBnZXRBcnJheSA9IFtdOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0
aW9uKHRoZVRhcmdldCwgcHJvcGVydHkpIHsKKyAgICAgICAgICAgIGhhc0FycmF5LnB1c2gocHJv
cGVydHkpOworICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRoZVRhcmdldCwgcHJvcGVy
dHkpOworICAgICAgICB9LAorICAgICAgICBnZXQ6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcGVy
dHksIHJlY2VpdmVyKSB7CisgICAgICAgICAgICBnZXRBcnJheS5wdXNoKHByb3BlcnR5KTsKKyAg
ICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0aGVUYXJnZXQsIHByb3BlcnR5LCByZWNlaXZl
cik7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHRhcmdldCA9IHsKKyAgICAgICAgZW51
bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICB2YWx1
ZTogNDUKKyAgICB9OworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIp
OworICAgIGxldCBmb28gPSB7fTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAiZm9v
IiwgcHJveHkpOworICAgIGFzc2VydChhcnJheUVxKGhhc0FycmF5LCBbImVudW1lcmFibGUiLCAi
Y29uZmlndXJhYmxlIiwgInZhbHVlIiwgIndyaXRhYmxlIiwgImdldCIsICJzZXQiXSkpOworICAg
IGFzc2VydChhcnJheUVxKGdldEFycmF5LCBbImVudW1lcmFibGUiLCAiY29uZmlndXJhYmxlIiwg
InZhbHVlIl0pKTsKKyAgICBhc3NlcnQoZm9vLmZvbyA9PT0gNDUpOworfSk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgbGV0IGVycm9yID0gbnVsbDsKKyAgICBsZXQgaGFzQXJyYXkgPSBbXTsK
KyAgICBsZXQgZ2V0QXJyYXkgPSBbXTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFz
OiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BlcnR5KSB7CisgICAgICAgICAgICBoYXNBcnJheS5w
dXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0aGVUYXJnZXQs
IHByb3BlcnR5KTsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0OiBmdW5jdGlvbih0aGVUYXJnZXQs
IHByb3BlcnR5LCByZWNlaXZlcikgeworICAgICAgICAgICAgZ2V0QXJyYXkucHVzaChwcm9wZXJ0
eSk7CisgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGhlVGFyZ2V0LCBwcm9wZXJ0eSwg
cmVjZWl2ZXIpOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCB0YXJnZXQgPSB7CisgICAg
ICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAg
ICAgdmFsdWU6IDQ1LAorICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgZ2V0OiBmdW5j
dGlvbigpe30sCisgICAgICAgIHNldDogZnVuY3Rpb24oKXt9CisgICAgfTsKKyAgICBsZXQgcHJv
eHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBsZXQgZm9vID0ge307CisgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGZvbywgImZvbyIsIHByb3h5KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGhyZXcg
PSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFzc2VydChhcnJheUVxKGhh
c0FycmF5LCBbImVudW1lcmFibGUiLCAiY29uZmlndXJhYmxlIiwgInZhbHVlIiwgIndyaXRhYmxl
IiwgImdldCIsICJzZXQiXSkpOworICAgIGFzc2VydChhcnJheUVxKGhhc0FycmF5LCBnZXRBcnJh
eSkpOworfSk7Cg==
</data>
<flag name="review"
          id="298178"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="298194"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273631</attachid>
            <date>2016-03-10 15:09:10 -0800</date>
            <delta_ts>2016-03-10 15:09:10 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12074</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE2LTAzLTEwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIE1ha2UgVG9Qcm9wZXJ0eURlc2NyaXB0b3Igc3BlYyBjb21wbGlhbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTMxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgIFdlIHdlcmUgcGVyZm9ybWluZyBIYXNQ
cm9wZXJ0eSguKSBhbmQgR2V0KC4pIGluIHRoZSBzYW1lIG9wZXJhdGlvbi4KKyAgICAgICAgVGhp
cyBpc24ndCB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMgYW5kIGl0J3MgdXNlciBvYnNlcnZh
YmxlCisgICAgICAgIGJlaGF2aW9yIHdpdGggUHJveHkuIFRoaXMgcGF0Y2ggZml4ZXMgVG9Qcm9w
ZXJ0eURlc2NyaXB0b3IgdG8gdXNlCisgICAgICAgIHR3byBkaXN0aW5jdCBvcGVyYXRpb25zIGZv
ciBIYXNQcm9wZXJ0eSguKSBhbmQgR2V0KC4pLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om93bkVudW1lcmFibGVQcm9wZXJ0eUtleXMp
OgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogdGVzdHMv
ZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3RvLXByb3BlcnR5LWtleS1jb3JyZWN0
bmVzcy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICh0ZXN0LmxldC5oYW5kbGVyLmhhcyk6CisgICAgICAgIChhcnJheUVxKToKKyAgICAgICAg
KGxldC5oYW5kbGVyLmhhcyk6CisgICAgICAgIChsZXQudGFyZ2V0KToKKyAgICAgICAgKHNldCBn
ZXQgbGV0KToKKwogMjAxNi0wMy0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXBvcnQgdGhlIHVuZGVybHlpbmcgcGFyc2VyIGVycm9y
IG1lc3NhZ2Ugd2hlbiBKU09OIHBhcnNpbmcgZmFpbHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE5
Nzk0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDg0ICszMDksOTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvd25FbnVtZXJhYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3du
UHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5
bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKTsKIH0KIAotLy8gRVM1IDgu
MTAuNSBUb1Byb3BlcnR5RGVzY3JpcHRvcgorLy8gRVM2IDYuMi40LjUgVG9Qcm9wZXJ0eURlc2Ny
aXB0b3IKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlk
ZXNjcmlwdG9yCiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJv
cGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpKTsKKyAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJv
cGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7
CiAKLSAgICBQcm9wZXJ0eVNsb3QgZW51bWVyYWJsZVNsb3QoZGVzY3JpcHRpb24sIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Ci0gICAgaWYgKGRlc2NyaXB0
aW9uLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmVudW1lcmFi
bGUsIGVudW1lcmFibGVTbG90KSkgewotICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoZW51bWVy
YWJsZVNsb3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUp
LnRvQm9vbGVhbihleGVjKSk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICBpZiAoZGVzY3JpcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5lbnVtZXJhYmxlKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZGVzY3JpcHRpb24tPmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSk7CisgICAgICAgIGlmICh2
bS5leGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAg
IGRlc2Muc2V0RW51bWVyYWJsZSh2YWx1ZS50b0Jvb2xlYW4oZXhlYykpOworICAgIH0gZWxzZSBp
ZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFByb3BlcnR5
U2xvdCBjb25maWd1cmFibGVTbG90KGRlc2NyaXB0aW9uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwotICAgIGlmIChkZXNjcmlwdGlvbi0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUsIGNvbmZpZ3Vy
YWJsZVNsb3QpKSB7Ci0gICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3VyYWJsZVNs
b3QuZ2V0VmFsdWUoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbmZpZ3VyYWJsZSkudG9C
b29sZWFuKGV4ZWMpKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlm
IChkZXNjcmlwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNv
bmZpZ3VyYWJsZSkpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGRlc2NyaXB0aW9uLT5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbmZpZ3VyYWJsZSk7CisgICAgICAgIGlmICh2
bS5leGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAg
IGRlc2Muc2V0Q29uZmlndXJhYmxlKHZhbHVlLnRvQm9vbGVhbihleGVjKSk7CisgICAgfSBlbHNl
IGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZTsKLSAgICBQcm9wZXJ0eVNsb3QgdmFsdWVTbG90KGRlc2NyaXB0aW9uLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwotICAgIGlmIChkZXNjcmlw
dGlvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZSwg
dmFsdWVTbG90KSkgewotICAgICAgICBkZXNjLnNldFZhbHVlKHZhbHVlU2xvdC5nZXRWYWx1ZShl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgIGlmIChkZXNjcmlwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnZhbHVlKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZGVz
Y3JpcHRpb24tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWUpOworICAgICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgICAgICBkZXNjLnNldFZhbHVlKHZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKHZtLmV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgd3JpdGFibGVT
bG90KGRlc2NyaXB0aW9uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJv
cGVydHkpOwotICAgIGlmIChkZXNjcmlwdGlvbi0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgd3JpdGFibGVTbG90KSkgewotICAgICAgICBkZXNj
LnNldFdyaXRhYmxlKHdyaXRhYmxlU2xvdC5nZXRWYWx1ZShleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkud3JpdGFibGUpLnRvQm9vbGVhbihleGVjKSk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS53cml0YWJsZSkpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGRl
c2NyaXB0aW9uLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLndyaXRhYmxlKTsKKyAg
ICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KKyAgICAgICAgZGVzYy5zZXRXcml0YWJsZSh2YWx1ZS50b0Jvb2xlYW4oZXhlYykpOworICAg
IH0gZWxzZSBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFByb3BlcnR5U2xvdCBnZXRTbG90KGRlc2NyaXB0aW9uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwotICAgIGlmIChkZXNjcmlwdGlvbi0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXQsIGdldFNsb3QpKSB7Ci0gICAg
ICAgIEpTVmFsdWUgZ2V0ID0gZ2V0U2xvdC5nZXRWYWx1ZShleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2V0KTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChk
ZXNjcmlwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldCkp
IHsKKyAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5nZXQpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghZ2V0LmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICAgICAgaWYgKGdldENhbGxEYXRh
KGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKSk7CisgICAgICAgICAgICAgICAg
dm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBkZXNjLnNldEdldHRl
cihnZXQpOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc2V0U2xvdChkZXNjcmlwdGlvbiwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKLSAgICBpZiAoZGVz
Y3JpcHRpb24tPmdldFByb3BlcnR5U2xvdChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc2V0
LCBzZXRTbG90KSkgewotICAgICAgICBKU1ZhbHVlIHNldCA9IHNldFNsb3QuZ2V0VmFsdWUoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICBpZiAoZGVzY3JpcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5zZXQpKSB7CisgICAgICAgIEpTVmFsdWUgc2V0ID0gZGVzY3JpcHRpb24t
PmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc2V0KTsKKyAgICAgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIXNldC5p
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAg
ICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewot
ICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSkp
OworICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgZGVzYy5zZXRTZXR0ZXIoc2V0KTsKLSAgICB9CisgICAgfSBlbHNlIGlmICh2bS5leGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFkZXNjLmlzQWNjZXNz
b3JEZXNjcmlwdG9yKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGRlc2MudmFs
dWUoKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHBy
ZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CisgICAgICAgIHZt
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0
ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
cHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Ig
c2V0dGVyLiIpKSk7CisgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHBy
ZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTc5NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNyArMTAxNyw3IEBA
CiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfVG9QcmltaXRpdmUuanMKICAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxz
X1RvUHJvcGVydHlEZXNjcmlwdG9yLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldE93blByb3BlcnR5RGVz
Y3JpcHRvcl9jYWxsc19bW1NldF1dLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9Qcm94eV9pbnRlcm5hbF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JfY2FsbHNfRnVuY3Rpb24u
cHJvdG90eXBlLmJpbmQuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvdG8tcHJvcGVydHkta2V5LWNvcnJlY3RuZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG8tcHJvcGVydHkta2V5LWNvcnJlY3RuZXNzLmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90by1w
cm9wZXJ0eS1rZXktY29ycmVjdG5lc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzAg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKK30KKworZnVuY3Rpb24gdGVzdChmKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykKKyAgICAgICAgZigpOworfSAKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBsZXQgZXJyb3IgPSBudWxsOworICAgIGxldCBoYW5kbGVyID0geworICAg
ICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcGVydHkpIHsKKyAgICAgICAgICAgIGFz
c2VydChlcnJvciA9PT0gbnVsbCk7IC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGludG8gaGFz
IG1vcmUgdGhhbiBvbmNlLiBNYWtlIHN1cmUgd2UgdGhyb3cgb24gdGhlIGZpc3QgZXJyb3IuCisg
ICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcjsKKyAgICAgICAgICAgIHRocm93IGVycm9yOwor
ICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoe30sIGhhbmRsZXIp
OworICAgIGxldCBmb28gPSB7fTsKKworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJmb28iLCBwcm94eSk7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgYXNzZXJ0KGUgPT09
IGVycm9yKTsKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KTsKK30pOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGxldCBlcnJvciA9IG51bGw7CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAg
IGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wZXJ0eSkgeworICAgICAgICAgICAgYXNzZXJ0
KGVycm9yID09PSBudWxsKTsgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaW50byBoYXMgbW9y
ZSB0aGFuIG9uY2UuIE1ha2Ugc3VyZSB3ZSB0aHJvdyBvbiB0aGUgZmlzdCBlcnJvci4KKyAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gInNldCIpIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9
IG5ldyBFcnJvcjsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0aGVUYXJnZXQsIHByb3BlcnR5KTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHt9LCBoYW5kbGVyKTsK
KyAgICBsZXQgZm9vID0ge307CisKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAiZm9vIiwgcHJveHkpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIGFzc2VydChlID09PSBl
cnJvcik7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9KTsKKworZnVuY3Rpb24gYXJyYXlF
cShhLCBiKSB7CisgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAoYVtpXSAhPT0gYltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7CisKK30KK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IGVycm9yID0g
bnVsbDsKKyAgICBsZXQgaGFzQXJyYXkgPSBbXTsKKyAgICBsZXQgZ2V0QXJyYXkgPSBbXTsKKyAg
ICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3Bl
cnR5KSB7CisgICAgICAgICAgICBoYXNBcnJheS5wdXNoKHByb3BlcnR5KTsKKyAgICAgICAgICAg
IHJldHVybiBSZWZsZWN0Lmhhcyh0aGVUYXJnZXQsIHByb3BlcnR5KTsKKyAgICAgICAgfSwKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbih0aGVUYXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcikgeworICAg
ICAgICAgICAgZ2V0QXJyYXkucHVzaChwcm9wZXJ0eSk7CisgICAgICAgICAgICByZXR1cm4gUmVm
bGVjdC5nZXQodGhlVGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpOworICAgICAgICB9CisgICAg
fTsKKworICAgIGxldCB0YXJnZXQgPSB7CisgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAg
ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgdmFsdWU6IDQ1CisgICAgfTsKKyAgICBs
ZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBsZXQgZm9vID0ge307
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgImZvbyIsIHByb3h5KTsKKyAgICBhc3Nl
cnQoYXJyYXlFcShoYXNBcnJheSwgWyJlbnVtZXJhYmxlIiwgImNvbmZpZ3VyYWJsZSIsICJ2YWx1
ZSIsICJ3cml0YWJsZSIsICJnZXQiLCAic2V0Il0pKTsKKyAgICBhc3NlcnQoYXJyYXlFcShnZXRB
cnJheSwgWyJlbnVtZXJhYmxlIiwgImNvbmZpZ3VyYWJsZSIsICJ2YWx1ZSJdKSk7CisgICAgYXNz
ZXJ0KGZvby5mb28gPT09IDQ1KTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBl
cnJvciA9IG51bGw7CisgICAgbGV0IGhhc0FycmF5ID0gW107CisgICAgbGV0IGdldEFycmF5ID0g
W107CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0
LCBwcm9wZXJ0eSkgeworICAgICAgICAgICAgaGFzQXJyYXkucHVzaChwcm9wZXJ0eSk7CisgICAg
ICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGhlVGFyZ2V0LCBwcm9wZXJ0eSk7CisgICAgICAg
IH0sCisgICAgICAgIGdldDogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIp
IHsKKyAgICAgICAgICAgIGdldEFycmF5LnB1c2gocHJvcGVydHkpOworICAgICAgICAgICAgcmV0
dXJuIFJlZmxlY3QuZ2V0KHRoZVRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBsZXQgdGFyZ2V0ID0geworICAgICAgICBlbnVtZXJhYmxlOiB0cnVl
LAorICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgIHZhbHVlOiA0NSwKKyAgICAg
ICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgIGdldDogZnVuY3Rpb24oKXt9LAorICAgICAgICBz
ZXQ6IGZ1bmN0aW9uKCl7fQorICAgIH07CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdl
dCwgaGFuZGxlcik7CisgICAgbGV0IGZvbyA9IHt9OworICAgIGxldCB0aHJldyA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJmb28iLCBwcm94
eSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICB9CisgICAg
YXNzZXJ0KHRocmV3KTsKKyAgICBhc3NlcnQoYXJyYXlFcShoYXNBcnJheSwgWyJlbnVtZXJhYmxl
IiwgImNvbmZpZ3VyYWJsZSIsICJ2YWx1ZSIsICJ3cml0YWJsZSIsICJnZXQiLCAic2V0Il0pKTsK
KyAgICBhc3NlcnQoYXJyYXlFcShoYXNBcnJheSwgZ2V0QXJyYXkpKTsKK30pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>