<?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>148462</bug_id>
          
          <creation_ts>2015-08-25 21:03:26 -0700</creation_ts>
          <short_desc>Node::origin should always be set, and the dead zone due to SSA Phis can just use exitOK=false</short_desc>
          <delta_ts>2015-08-27 00:16:59 -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 Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>145204</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120828</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-25 21:03:26 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121154</commentid>
    <comment_count>1</comment_count>
      <attachid>260017</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-26 18:50:34 -0700</bug_when>
    <thetext>Created attachment 260017
might work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121180</commentid>
    <comment_count>2</comment_count>
      <attachid>260025</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-26 20:37:19 -0700</bug_when>
    <thetext>Created attachment 260025
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121207</commentid>
    <comment_count>3</comment_count>
      <attachid>260025</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-26 22:36:29 -0700</bug_when>
    <thetext>Comment on attachment 260025
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121240</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-27 00:15:09 -0700</bug_when>
    <thetext>Performance is OK:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r189012)
&quot;NoNodeOrigin&quot; at /Volumes/Data/tertiary/OpenSource/WebKitBuild/Release/jsc (r189012)

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.

                                                        TipOfTree                NoNodeOrigin                                   
SunSpider:
   3d-cube                                            4.6794+-0.1323            4.5962+-0.2955          might be 1.0181x faster
   3d-morph                                           5.3793+-0.2726     ?      5.5924+-0.4573        ? might be 1.0396x slower
   3d-raytrace                                        5.1822+-0.2319            5.1545+-0.1471        
   access-binary-trees                                2.0711+-0.1741            2.0618+-0.1077        
   access-fannkuch                                    5.4459+-0.4455            5.2766+-0.1396          might be 1.0321x faster
   access-nbody                                       2.4387+-0.0684            2.4337+-0.0548        
   access-nsieve                                      2.9786+-0.0427     ?      3.1227+-0.1693        ? might be 1.0484x slower
   bitops-3bit-bits-in-byte                           1.5152+-0.1201            1.4579+-0.0393          might be 1.0393x faster
   bitops-bits-in-byte                                3.2697+-0.1376     ?      3.2997+-0.1605        ?
   bitops-bitwise-and                                 2.0578+-0.1746            1.9965+-0.0837          might be 1.0307x faster
   bitops-nsieve-bits                                 3.0386+-0.0905            2.9222+-0.0493          might be 1.0398x faster
   controlflow-recursive                              2.1255+-0.2003            1.9648+-0.0749          might be 1.0818x faster
   crypto-aes                                         3.8695+-0.1745            3.7790+-0.0667          might be 1.0239x faster
   crypto-md5                                         2.3214+-0.0440     ?      2.3915+-0.0887        ? might be 1.0302x slower
   crypto-sha1                                        2.2811+-0.1017     ?      2.2979+-0.1950        ?
   date-format-tofte                                  6.4568+-0.0730     ?      6.5995+-0.2515        ? might be 1.0221x slower
   date-format-xparb                                  5.0601+-0.2508            4.8618+-0.0536          might be 1.0408x faster
   math-cordic                                        2.7868+-0.0814            2.6982+-0.0209          might be 1.0328x faster
   math-partial-sums                                  4.9469+-0.0790     ?      5.0953+-0.1122        ? might be 1.0300x slower
   math-spectral-norm                                 1.7939+-0.0595            1.7597+-0.0481          might be 1.0194x faster
   regexp-dna                                         6.4049+-0.1899     ?      6.6976+-0.3376        ? might be 1.0457x slower
   string-base64                                      4.2753+-0.1664     ?      4.3001+-0.0872        ?
   string-fasta                                       5.7730+-0.1753     ?      5.7891+-0.1749        ?
   string-tagcloud                                    8.1211+-0.4274            7.9401+-0.1871          might be 1.0228x faster
   string-unpack-code                                19.0245+-1.0087           18.3645+-0.4535          might be 1.0359x faster
   string-validate-input                              4.5081+-0.0893            4.4911+-0.0946        

   &lt;arithmetic&gt;                                       4.5310+-0.0356            4.4979+-0.0303          might be 1.0074x faster

                                                        TipOfTree                NoNodeOrigin                                   
LongSpider:
   3d-cube                                          803.5301+-3.2922     ?    806.4021+-4.8075        ?
   3d-morph                                        1501.9940+-5.2656     ?   1509.9182+-10.7513       ?
   3d-raytrace                                      602.6727+-3.2723          601.7507+-2.3972        
   access-binary-trees                              799.7159+-7.9031          790.5589+-3.3046          might be 1.0116x faster
   access-fannkuch                                  277.3934+-5.6821     ?    277.6053+-4.9477        ?
   access-nbody                                     509.1027+-2.0994          506.2899+-2.4741        
   access-nsieve                                    358.4807+-5.6662     ?    359.3809+-4.6273        ?
   bitops-3bit-bits-in-byte                          38.9466+-1.2837     ?     39.1065+-1.0642        ?
   bitops-bits-in-byte                               77.1776+-1.3905     ?     77.2132+-2.4739        ?
   bitops-nsieve-bits                               403.2912+-3.5324     ?    403.7985+-3.2218        ?
   controlflow-recursive                            426.3341+-8.4594     ?    426.5973+-6.8442        ?
   crypto-aes                                       562.9920+-7.4309     ?    570.4654+-8.8150        ? might be 1.0133x slower
   crypto-md5                                       496.1452+-7.7571          495.5186+-10.4935       
   crypto-sha1                                      643.7859+-10.5668         641.0887+-11.7078       
   date-format-tofte                                499.1522+-10.7351    ?    506.4026+-13.7834       ? might be 1.0145x slower
   date-format-xparb                                752.2688+-4.7595          751.2425+-9.6271        
   hash-map                                         149.3645+-1.7671          148.9160+-2.2637        
   math-cordic                                      481.5306+-2.3219          481.2979+-4.2805        
   math-partial-sums                                465.2191+-1.0559     ?    468.1835+-3.2393        ?
   math-spectral-norm                               552.7722+-2.7851          548.2884+-1.9835        
   string-base64                                    345.1600+-3.9051     ?    352.8507+-4.3831        ? might be 1.0223x slower
   string-fasta                                     362.4300+-2.5077     ?    364.4427+-2.4176        ?
   string-tagcloud                                  179.1880+-1.4720     ?    179.7883+-1.6908        ?

   &lt;geometric&gt;                                      391.3236+-0.7588     ?    392.1036+-1.0405        ? might be 1.0020x slower

                                                        TipOfTree                NoNodeOrigin                                   
V8Spider:
   crypto                                            48.8109+-1.0613     ?     49.0560+-2.0427        ?
   deltablue                                         83.6685+-1.8546     ?     85.7609+-3.1486        ? might be 1.0250x slower
   earley-boyer                                      40.3833+-0.7905           39.9295+-1.1781          might be 1.0114x faster
   raytrace                                          31.7851+-0.5257     ?     32.0613+-2.1201        ?
   regexp                                            62.6458+-0.8824     ?     63.5476+-1.6148        ? might be 1.0144x slower
   richards                                          65.2001+-1.8552     ?     66.3842+-2.2548        ? might be 1.0182x slower
   splay                                             35.2682+-2.2571           35.2442+-1.6427        

   &lt;geometric&gt;                                       49.7316+-0.5380     ?     50.1363+-1.0821        ? might be 1.0081x slower

                                                        TipOfTree                NoNodeOrigin                                   
Octane:
   encrypt                                           0.16718+-0.00376    ?     0.16855+-0.00333       ?
   decrypt                                           3.30359+-0.02592          3.24092+-0.07480         might be 1.0193x faster
   deltablue                                x2       0.15762+-0.00241          0.15753+-0.00154       
   earley                                            0.27585+-0.00228    ?     0.27629+-0.00273       ?
   boyer                                             4.20135+-0.11277          4.12591+-0.01832         might be 1.0183x faster
   navier-stokes                            x2       4.85394+-0.02239          4.84894+-0.02564       
   raytrace                                 x2       1.02362+-0.05013          1.01050+-0.04995         might be 1.0130x faster
   richards                                 x2       0.10996+-0.00228          0.10832+-0.00149         might be 1.0151x faster
   splay                                    x2       0.33918+-0.01695          0.33136+-0.00258         might be 1.0236x faster
   regexp                                   x2      24.78264+-0.23668         24.59859+-0.16696       
   pdfjs                                    x2      36.71201+-0.26081    ?    37.13218+-0.30865       ? might be 1.0114x slower
   mandreel                                 x2      44.36942+-0.61960         44.22512+-0.77455       
   gbemu                                    x2      34.66072+-1.46590         34.11912+-1.19788         might be 1.0159x faster
   closure                                           0.56316+-0.00408    ?     0.56725+-0.00781       ?
   jquery                                            7.18196+-0.05992          7.15132+-0.04853       
   box2d                                    x2       9.89058+-0.06709    ?     9.96390+-0.11373       ?
   zlib                                     x2     380.00187+-13.12698   ?   388.93339+-5.62601       ? might be 1.0235x slower
   typescript                               x2     650.99841+-13.58687       649.71191+-10.95196      

   &lt;geometric&gt;                                       5.58381+-0.03089          5.56559+-0.02325         might be 1.0033x faster

                                                        TipOfTree                NoNodeOrigin                                   
Kraken:
   ai-astar                                          228.158+-8.176            226.199+-9.255         
   audio-beat-detection                               50.187+-0.315      ?      50.205+-0.371         ?
   audio-dft                                          96.802+-1.838             96.757+-2.063         
   audio-fft                                          35.134+-0.632             34.939+-0.252         
   audio-oscillator                                   59.540+-0.866      ?      59.576+-0.848         ?
   imaging-darkroom                                   61.233+-0.554      ?      61.770+-1.477         ?
   imaging-desaturate                                 49.750+-1.543      ?      51.105+-2.492         ? might be 1.0273x slower
   imaging-gaussian-blur                              84.195+-0.688      ?      84.836+-1.178         ?
   json-parse-financial                               38.576+-0.826      ?      39.561+-1.877         ? might be 1.0255x slower
   json-stringify-tinderbox                           22.754+-0.906      ?      22.943+-0.417         ?
   stanford-crypto-aes                                41.910+-1.279             41.280+-1.665           might be 1.0153x faster
   stanford-crypto-ccm                                35.623+-1.225      ?      35.942+-1.345         ?
   stanford-crypto-pbkdf2                             94.749+-1.817      ?      94.821+-1.406         ?
   stanford-crypto-sha256-iterative                   36.787+-0.716      ?      37.981+-1.117         ? might be 1.0324x slower

   &lt;arithmetic&gt;                                       66.814+-0.660      ?      66.994+-0.713         ? might be 1.0027x slower

                                                        TipOfTree                NoNodeOrigin                                   
JSRegress:
   abc-forward-loop-equal                            29.6070+-0.6430     ?     29.8476+-0.9257        ?
   abc-postfix-backward-loop                         29.8482+-0.9886     ?     32.8968+-6.7605        ? might be 1.1021x slower
   abc-simple-backward-loop                          29.3280+-0.6257     ?     29.6093+-0.7196        ?
   abc-simple-forward-loop                           29.4671+-0.4416     ?     29.7804+-0.9745        ? might be 1.0106x slower
   abc-skippy-loop                                   21.3751+-0.5196           21.2205+-0.5261        
   abs-boolean                                        2.4240+-0.0793     ?      2.4479+-0.0891        ?
   adapt-to-double-divide                            16.7830+-0.7817           16.2782+-0.2401          might be 1.0310x faster
   aliased-arguments-getbyval                         1.2203+-0.2043            1.1670+-0.0477          might be 1.0457x faster
   allocate-big-object                                2.4182+-0.2045     ?      2.6093+-0.2561        ? might be 1.0790x slower
   arguments-named-and-reflective                    10.9957+-0.3870           10.6978+-0.2181          might be 1.0278x faster
   arguments-out-of-bounds                            9.4843+-0.4034            9.1628+-0.1765          might be 1.0351x faster
   arguments-strict-mode                             10.0328+-0.6815            9.9953+-0.2705        
   arguments                                          8.5188+-0.3080     ?      8.7689+-1.0293        ? might be 1.0294x slower
   arity-mismatch-inlining                            0.8040+-0.0730            0.7909+-0.0474          might be 1.0166x faster
   array-access-polymorphic-structure                 5.8282+-0.2175            5.7580+-0.1832          might be 1.0122x faster
   array-nonarray-polymorhpic-access                 24.7659+-0.5714     ?     25.0244+-0.6578        ? might be 1.0104x slower
   array-prototype-every                             75.6863+-1.3967     ?     79.1820+-9.4280        ? might be 1.0462x slower
   array-prototype-forEach                           74.8092+-1.1958           73.9714+-1.4057          might be 1.0113x faster
   array-prototype-map                               82.5968+-1.3502           80.7401+-0.8968          might be 1.0230x faster
   array-prototype-reduce                            73.4212+-1.7164     ^     70.4773+-0.9822        ^ definitely 1.0418x faster
   array-prototype-reduceRight                       71.9084+-1.6263           69.9461+-1.0638          might be 1.0281x faster
   array-prototype-some                              76.2335+-2.2311     ?     76.9380+-2.8913        ?
   array-splice-contiguous                           21.6190+-0.6171           21.3220+-0.4806          might be 1.0139x faster
   array-with-double-add                              3.3820+-0.1221     ?      3.4181+-0.1418        ? might be 1.0107x slower
   array-with-double-increment                        3.1499+-0.1381            3.0483+-0.0554          might be 1.0333x faster
   array-with-double-mul-add                          4.1244+-0.0378     ?      4.2190+-0.0579        ? might be 1.0229x slower
   array-with-double-sum                              3.1777+-0.0728     ?      3.2820+-0.2967        ? might be 1.0328x slower
   array-with-int32-add-sub                           5.8596+-0.1216            5.8297+-0.0808        
   array-with-int32-or-double-sum                     3.2187+-0.0922     ?      3.2969+-0.1346        ? might be 1.0243x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     26.4073+-1.1732           25.6812+-0.6526          might be 1.0283x faster
   ArrayBuffer-DataView-alloc-long-lived             11.6722+-0.2523     ?     12.1423+-0.5221        ? might be 1.0403x slower
   ArrayBuffer-Int32Array-byteOffset                  3.6591+-0.1661            3.6433+-0.1837        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     30.3715+-0.9911           29.4517+-0.3349          might be 1.0312x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.3241+-0.6037     ?     21.0233+-1.3626        ? might be 1.0344x slower
   ArrayBuffer-Int8Array-alloc-long-lived            12.7828+-0.9750           12.3936+-0.3736          might be 1.0314x faster
   ArrayBuffer-Int8Array-alloc                        9.7658+-0.4328            9.5136+-0.3157          might be 1.0265x faster
   arrowfunction-call                                 9.8089+-0.1350     ?     10.0693+-0.2667        ? might be 1.0265x slower
   asmjs_bool_bug                                     6.9634+-0.3251            6.8797+-0.1523          might be 1.0122x faster
   assign-custom-setter-polymorphic                   2.3051+-0.0474     ?      2.3261+-0.0676        ?
   assign-custom-setter                               3.2773+-0.5182     ?      3.3637+-0.3229        ? might be 1.0264x slower
   basic-set                                          8.3791+-0.3259            8.1307+-0.2298          might be 1.0305x faster
   big-int-mul                                        3.5279+-0.0857            3.5214+-0.1270        
   boolean-test                                       2.9450+-0.1215            2.8826+-0.0831          might be 1.0216x faster
   branch-fold                                        3.5564+-0.0777     ?      3.5746+-0.0538        ?
   branch-on-string-as-boolean                       16.9589+-0.5971     ?     17.3522+-0.8019        ? might be 1.0232x slower
   by-val-generic                                     2.3294+-0.1520            2.3273+-0.0422        
   call-spread-apply                                 26.7056+-1.7913     ?     26.8429+-0.8008        ?
   call-spread-call                                  21.3490+-0.8312           20.9962+-0.3475          might be 1.0168x faster
   captured-assignments                               0.4394+-0.0247            0.4242+-0.0121          might be 1.0359x faster
   cast-int-to-double                                 5.0722+-0.1511            5.0240+-0.0913        
   cell-argument                                      6.6402+-0.5488            6.4725+-0.3618          might be 1.0259x faster
   cfg-simplify                                       2.6432+-0.0232            2.6393+-0.0352        
   chain-getter-access                                8.4361+-0.2004            8.2900+-0.1398          might be 1.0176x faster
   cmpeq-obj-to-obj-other                            11.8652+-0.8788           11.7689+-0.9863        
   constant-test                                      4.7629+-0.1083     ?      4.8954+-0.3134        ? might be 1.0278x slower
   create-lots-of-functions                           9.8169+-0.4367     ?     10.0084+-0.9957        ? might be 1.0195x slower
   cse-new-array-buffer                               2.2389+-0.0986     ?      2.3007+-0.2366        ? might be 1.0276x slower
   cse-new-array                                      2.3267+-0.1175            2.1802+-0.0894          might be 1.0672x faster
   DataView-custom-properties                        32.0317+-1.4939           30.8316+-0.9604          might be 1.0389x faster
   delay-tear-off-arguments-strictmode               12.5740+-0.4289           12.4094+-1.1701          might be 1.0133x faster
   deltablue-varargs                                159.7712+-2.1143          159.6151+-1.7025        
   destructuring-arguments                          162.2704+-2.6731     ?    166.2545+-18.2616       ? might be 1.0246x slower
   destructuring-parameters-overridden-by-function   
                                                      0.4352+-0.0286     ?      0.4776+-0.0875        ? might be 1.0975x slower
   destructuring-swap                                 4.6232+-0.0747     ?      4.7577+-0.2064        ? might be 1.0291x slower
   direct-arguments-getbyval                          1.1688+-0.0817     ?      1.2458+-0.0596        ? might be 1.0659x slower
   div-boolean-double                                 5.2139+-0.0654     ?      5.2472+-0.0838        ?
   div-boolean                                        8.3245+-0.3741            8.1050+-0.1012          might be 1.0271x faster
   double-get-by-val-out-of-bounds                    4.1608+-0.4189            4.0586+-0.2516          might be 1.0252x faster
   double-pollution-getbyval                          8.9834+-0.3813            8.6010+-0.0655          might be 1.0445x faster
   double-pollution-putbyoffset                       3.7615+-0.0808            3.7579+-0.0746        
   double-real-use                                   26.8789+-4.8146           23.8937+-0.4672          might be 1.1249x faster
   double-to-int32-typed-array-no-inline              1.9634+-0.0376            1.9438+-0.0162          might be 1.0101x faster
   double-to-int32-typed-array                        1.8819+-0.3774            1.7574+-0.0846          might be 1.0708x faster
   double-to-uint32-typed-array-no-inline             1.9853+-0.0542     ?      2.0835+-0.1806        ? might be 1.0495x slower
   double-to-uint32-typed-array                       1.9174+-0.1875            1.8582+-0.0651          might be 1.0319x faster
   elidable-new-object-dag                           34.5348+-0.9163           34.1463+-0.7702          might be 1.0114x faster
   elidable-new-object-roflcopter                    33.9501+-0.9739           33.3851+-0.6963          might be 1.0169x faster
   elidable-new-object-then-call                     31.7182+-0.8802     ?     31.7291+-0.6379        ?
   elidable-new-object-tree                          38.0622+-1.0115           37.2784+-0.5885          might be 1.0210x faster
   empty-string-plus-int                              4.7603+-0.1695     ?      4.9435+-0.4793        ? might be 1.0385x slower
   emscripten-cube2hash                              26.3828+-1.0865     ?     27.1181+-0.8491        ? might be 1.0279x slower
   exit-length-on-plain-object                       12.0484+-0.3708     ?     12.2123+-0.7140        ? might be 1.0136x slower
   external-arguments-getbyval                        1.2283+-0.0765            1.1914+-0.0898          might be 1.0310x faster
   external-arguments-putbyval                        2.1756+-0.1524     ?      2.2387+-0.1721        ? might be 1.0290x slower
   fixed-typed-array-storage-var-index                1.1231+-0.0252     ?      1.1515+-0.0383        ? might be 1.0253x slower
   fixed-typed-array-storage                          0.8854+-0.0370     ?      0.9248+-0.1161        ? might be 1.0444x slower
   Float32Array-matrix-mult                           3.7756+-0.0421     ?      3.8170+-0.0650        ? might be 1.0110x slower
   Float32Array-to-Float64Array-set                  47.4726+-1.1317           47.0862+-0.8699        
   Float64Array-alloc-long-lived                     68.8211+-1.3461     ?     70.0944+-3.1128        ? might be 1.0185x slower
   Float64Array-to-Int16Array-set                    57.4059+-0.9044           56.8813+-1.2764        
   fold-double-to-int                                12.3727+-0.8934           11.7390+-0.1827          might be 1.0540x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.9862+-0.4875     ?     11.4888+-0.7944        ? might be 1.0457x slower
   fold-get-by-id-to-multi-get-by-offset             10.3602+-1.0312           10.0239+-0.3940          might be 1.0335x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.6291+-1.6338     ?      9.0103+-1.1141        ? might be 1.0442x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      6.9525+-1.2983     ?      9.2119+-1.5791        ? might be 1.3250x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.2534+-1.2585            7.8163+-0.9659          might be 1.0559x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      3.7184+-0.1684     ?      4.4398+-1.2892        ? might be 1.1940x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.2043+-0.4054     ?      8.2845+-0.2595        ?
   fold-put-by-id-to-multi-put-by-offset              9.3578+-0.7001     ?     10.6084+-1.4331        ? might be 1.1336x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                      9.4323+-0.6616     ?      9.8925+-1.4750        ? might be 1.0488x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     11.0242+-1.8940           10.1950+-1.7303          might be 1.0813x faster
   fold-put-structure                                 4.1858+-0.4109     ?      4.2740+-0.3520        ? might be 1.0211x slower
   for-of-iterate-array-entries                      10.9941+-0.2743     ?     11.0309+-0.3364        ?
   for-of-iterate-array-keys                          3.3555+-0.1674     ?      3.4877+-0.2029        ? might be 1.0394x slower
   for-of-iterate-array-values                        3.4557+-0.2852            3.4061+-0.1484          might be 1.0146x faster
   fround                                            17.7252+-0.5642     ?     17.8402+-0.6368        ?
   ftl-library-inlining-dataview                     55.5808+-0.9674     ?     55.8421+-0.8230        ?
   ftl-library-inlining                             107.2755+-1.6303     ?    107.6884+-1.3216        ?
   function-call                                     10.1909+-0.7422     ?     10.2264+-0.4502        ?
   function-dot-apply                                 2.0224+-0.2133            1.9898+-0.1931          might be 1.0164x faster
   function-test                                      2.6554+-0.0818     ?      2.7610+-0.0790        ? might be 1.0398x slower
   function-with-eval                               101.4095+-2.8322           98.3595+-1.5169          might be 1.0310x faster
   gcse-poly-get-less-obvious                        14.2504+-0.1843     ?     14.3232+-0.4020        ?
   gcse-poly-get                                     15.8685+-0.2039     ?     16.0019+-0.4081        ?
   gcse                                               3.8624+-0.1800     ?      4.0827+-0.3899        ? might be 1.0570x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6162+-0.0821            2.5608+-0.0286          might be 1.0216x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.6784+-0.0855            5.6691+-0.0694        
   get-by-id-chain-from-try-block                     5.5547+-0.1647     ?      5.5640+-0.2018        ?
   get-by-id-check-structure-elimination              4.3783+-0.0616     ?      4.5468+-0.4001        ? might be 1.0385x slower
   get-by-id-proto-or-self                           14.8834+-0.7915     ?     15.1708+-0.6573        ? might be 1.0193x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9969+-0.2405            2.8420+-0.0720          might be 1.0545x faster
   get-by-id-self-or-proto                           14.8563+-0.4374     ?     15.1852+-0.3214        ? might be 1.0221x slower
   get-by-val-out-of-bounds                           3.6429+-0.0580     ?      3.8009+-0.1577        ? might be 1.0434x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.8145+-0.0850            2.8105+-0.0973        
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.0366+-0.1351     ?      6.0392+-0.2463        ?
   get-by-val-with-string-chain-from-try-block   
                                                      5.4675+-0.0657     ?      5.6478+-0.3767        ? might be 1.0330x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.0977+-0.0619     ?      5.2261+-0.2364        ? might be 1.0252x slower
   get-by-val-with-string-proto-or-self              14.7343+-0.2784     ?     15.2182+-0.7248        ? might be 1.0328x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.2585+-0.2292            3.1394+-0.0596          might be 1.0379x faster
   get-by-val-with-string-self-or-proto              15.5246+-0.6510           15.3442+-0.6192          might be 1.0118x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.1478+-0.2425            3.0980+-0.1801          might be 1.0161x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     13.4844+-2.9313           12.3034+-0.2029          might be 1.0960x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      5.5621+-0.2471     ?      5.6708+-0.3023        ? might be 1.0195x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.1374+-0.3436           11.0139+-0.1748          might be 1.0112x faster
   get-by-val-with-symbol-proto-or-self              14.8997+-0.1567     ?     14.9010+-0.5814        ?
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9233+-0.2357            3.8784+-0.0407          might be 1.0116x faster
   get-by-val-with-symbol-self-or-proto              15.4724+-0.6411           15.3258+-0.6960        
   get_callee_monomorphic                             2.3221+-0.2039            2.2644+-0.1513          might be 1.0255x faster
   get_callee_polymorphic                             3.3560+-0.3155     ?      3.3644+-0.1424        ?
   getter-no-activation                               4.9260+-0.3915            4.7412+-0.1654          might be 1.0390x faster
   getter-prototype                                   8.7890+-0.2198     ?      9.0590+-0.4439        ? might be 1.0307x slower
   getter-richards                                  121.5017+-4.5739          120.2883+-4.5126          might be 1.0101x faster
   getter                                             5.2575+-0.3504     ?      5.4686+-0.5332        ? might be 1.0402x slower
   global-object-access-with-mutating-structure   
                                                      5.6884+-0.1536            5.6295+-0.0964          might be 1.0105x faster
   global-var-const-infer-fire-from-opt               0.8192+-0.0588            0.8056+-0.0679          might be 1.0169x faster
   global-var-const-infer                             0.5955+-0.0348            0.5847+-0.0380          might be 1.0184x faster
   hard-overflow-check-equal                         33.3530+-0.8465           32.9853+-0.6785          might be 1.0111x faster
   hard-overflow-check                               33.4759+-1.1332           33.4134+-1.3399        
   HashMap-put-get-iterate-keys                      26.2295+-1.6782           24.5681+-1.5838          might be 1.0676x faster
   HashMap-put-get-iterate                           27.3549+-0.9283     ?     28.0659+-0.9898        ? might be 1.0260x slower
   HashMap-string-put-get-iterate                    24.4368+-1.4013     ?     25.1899+-1.3963        ? might be 1.0308x slower
   hoist-make-rope                                    8.8313+-1.0646            8.3982+-0.6588          might be 1.0516x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.1764+-0.2270            4.0856+-0.1019          might be 1.0222x faster
   hoist-poly-check-structure                         3.6805+-0.9506            3.2497+-0.1144          might be 1.1326x faster
   imul-double-only                                   7.3382+-0.1138     ?      7.6854+-0.8691        ? might be 1.0473x slower
   imul-int-only                                      8.9595+-0.6621            8.2999+-1.0081          might be 1.0795x faster
   imul-mixed                                         7.8018+-1.2897            6.7607+-0.3152          might be 1.1540x faster
   in-four-cases                                     17.4014+-0.3215           17.2351+-0.5287        
   in-one-case-false                                  9.8413+-0.8573     ?      9.8757+-0.5386        ?
   in-one-case-true                                   9.8509+-0.5816            9.7289+-0.4915          might be 1.0125x faster
   in-two-cases                                       9.9008+-0.4574     ?     10.0263+-0.7347        ? might be 1.0127x slower
   indexed-properties-in-objects                      2.6714+-0.0308     ?      2.7484+-0.0752        ? might be 1.0288x slower
   infer-closure-const-then-mov-no-inline             2.8635+-0.0443     ?      2.8893+-0.0598        ?
   infer-closure-const-then-mov                      18.3895+-0.4034           18.1324+-0.3293          might be 1.0142x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.0176+-0.1869            9.9943+-0.2704        
   infer-closure-const-then-put-to-scope             21.6039+-0.5497     ?     21.8366+-1.4844        ? might be 1.0108x slower
   infer-closure-const-then-reenter-no-inline   
                                                     48.2400+-1.6100           47.5172+-0.6531          might be 1.0152x faster
   infer-closure-const-then-reenter                  22.5488+-0.5329     ?     22.5790+-0.6349        ?
   infer-constant-global-property                     3.4191+-0.0631            3.4062+-0.0916        
   infer-constant-property                            2.6460+-0.1328            2.6019+-0.0503          might be 1.0170x faster
   infer-one-time-closure-ten-vars                    7.7501+-0.4427            7.7362+-0.3336        
   infer-one-time-closure-two-vars                    7.2895+-0.3565            7.1628+-0.1886          might be 1.0177x faster
   infer-one-time-closure                             7.3682+-0.3629            7.2603+-0.1004          might be 1.0149x faster
   infer-one-time-deep-closure                       11.1173+-0.6008           11.0869+-0.4469        
   inline-arguments-access                            3.6334+-0.1890     ?      3.6861+-0.2157        ? might be 1.0145x slower
   inline-arguments-aliased-access                    3.6587+-0.3514            3.6321+-0.2259        
   inline-arguments-local-escape                      3.9130+-0.3876            3.8216+-0.4749          might be 1.0239x faster
   inline-get-scoped-var                              4.4972+-0.1047     ?      4.5539+-0.1521        ? might be 1.0126x slower
   inlined-put-by-id-transition                       9.9254+-0.5450     ?     10.3827+-0.7607        ? might be 1.0461x slower
   inlined-put-by-val-with-string-transition   
                                                     71.4300+-1.5805     ?     72.2233+-1.4116        ? might be 1.0111x slower
   inlined-put-by-val-with-symbol-transition   
                                                     70.9810+-2.0159           70.4823+-0.5266        
   int-or-other-abs-then-get-by-val                   4.7963+-0.0886            4.7512+-0.0746        
   int-or-other-abs-zero-then-get-by-val             15.7974+-0.4544     ?     15.8205+-0.4568        ?
   int-or-other-add-then-get-by-val                   4.0219+-0.0982            4.0034+-0.1190        
   int-or-other-add                                   4.8499+-0.1515     ?      4.8550+-0.1468        ?
   int-or-other-div-then-get-by-val                   3.8411+-0.1212            3.7581+-0.0683          might be 1.0221x faster
   int-or-other-max-then-get-by-val                   3.8943+-0.1908     ?      3.9142+-0.2186        ?
   int-or-other-min-then-get-by-val                   3.8227+-0.0306     ?      3.9306+-0.1197        ? might be 1.0282x slower
   int-or-other-mod-then-get-by-val                   3.5503+-0.0953            3.5153+-0.0540        
   int-or-other-mul-then-get-by-val                   3.5963+-0.0574     ?      4.5147+-1.7888        ? might be 1.2554x slower
   int-or-other-neg-then-get-by-val                   4.5613+-0.4609            4.4377+-0.0889          might be 1.0278x faster
   int-or-other-neg-zero-then-get-by-val             15.7955+-0.3858     ?     15.9191+-0.3604        ?
   int-or-other-sub-then-get-by-val                   3.9717+-0.0342     ?      3.9817+-0.0670        ?
   int-or-other-sub                                   3.4413+-0.1180            3.4353+-0.2127        
   int-overflow-local                                 4.0796+-0.0495     ?      4.1402+-0.0935        ? might be 1.0149x slower
   Int16Array-alloc-long-lived                       45.9109+-0.7245     ?     46.4771+-1.0187        ? might be 1.0123x slower
   Int16Array-bubble-sort-with-byteLength            17.5196+-0.4450     ?     17.6229+-0.4409        ?
   Int16Array-bubble-sort                            17.3886+-0.5191     ?     17.4294+-0.4282        ?
   Int16Array-load-int-mul                            1.5414+-0.3478            1.4796+-0.1866          might be 1.0417x faster
   Int16Array-to-Int32Array-set                      52.3156+-10.1717          49.4672+-5.0861          might be 1.0576x faster
   Int32Array-alloc-large                            12.2816+-0.3623     ?     12.9398+-0.3275        ? might be 1.0536x slower
   Int32Array-alloc-long-lived                       59.6191+-7.8898           55.5221+-1.4893          might be 1.0738x faster
   Int32Array-alloc                                   2.7325+-0.1712     ?      2.7375+-0.1331        ?
   Int32Array-Int8Array-view-alloc                    6.1482+-0.3383            5.8683+-0.1233          might be 1.0477x faster
   int52-spill                                        4.5013+-0.0468     ?      4.5467+-0.1158        ? might be 1.0101x slower
   Int8Array-alloc-long-lived                        41.4268+-1.0138           41.2665+-1.2144        
   Int8Array-load-with-byteLength                     3.5173+-0.3859            3.3675+-0.0616          might be 1.0445x faster
   Int8Array-load                                     3.4094+-0.0916            3.3410+-0.0294          might be 1.0205x faster
   integer-divide                                    10.1003+-0.2932     ?     10.1042+-0.1943        ?
   integer-modulo                                     1.5343+-0.0793            1.4752+-0.0137          might be 1.0401x faster
   is-boolean-fold-tricky                             3.9145+-0.1852            3.7990+-0.1286          might be 1.0304x faster
   is-boolean-fold                                    2.6283+-0.0670     ?      2.6541+-0.0811        ?
   is-function-fold-tricky-internal-function   
                                                      9.4781+-0.1078     ?     10.0127+-0.5246        ? might be 1.0564x slower
   is-function-fold-tricky                            4.2518+-0.3999            4.1373+-0.0804          might be 1.0277x faster
   is-function-fold                                   2.7005+-0.0796            2.6427+-0.0614          might be 1.0219x faster
   is-number-fold-tricky                              4.0410+-0.0958     ?      4.0676+-0.1656        ?
   is-number-fold                                     2.6510+-0.0975     ?      2.6782+-0.1072        ? might be 1.0102x slower
   is-object-or-null-fold-functions                   2.6186+-0.0115     ?      2.6884+-0.1563        ? might be 1.0266x slower
   is-object-or-null-fold-less-tricky                 4.0648+-0.0395     ?      4.1146+-0.0660        ? might be 1.0123x slower
   is-object-or-null-fold-tricky                      5.1987+-0.2937     ?      5.2095+-0.1420        ?
   is-object-or-null-fold                             2.7314+-0.1478            2.6753+-0.1113          might be 1.0210x faster
   is-object-or-null-trickier-function                4.1107+-0.0553     ?      4.1449+-0.1032        ?
   is-object-or-null-trickier-internal-function   
                                                     10.6203+-0.1853           10.3491+-0.2468          might be 1.0262x faster
   is-object-or-null-tricky-function                  4.0921+-0.0441     ?      4.1852+-0.0996        ? might be 1.0227x slower
   is-object-or-null-tricky-internal-function   
                                                      7.8589+-0.4459            7.7256+-0.2629          might be 1.0173x faster
   is-string-fold-tricky                              4.0409+-0.0834            4.0033+-0.0598        
   is-string-fold                                     2.7332+-0.3303            2.6507+-0.0494          might be 1.0311x faster
   is-undefined-fold-tricky                           3.3701+-0.1118            3.2976+-0.0774          might be 1.0220x faster
   is-undefined-fold                                  2.6564+-0.0793            2.6104+-0.0292          might be 1.0176x faster
   JSONP-negative-0                                   0.2469+-0.0086     ?      0.2534+-0.0116        ? might be 1.0266x slower
   large-int-captured                                 3.8489+-0.1969            3.7465+-0.1031          might be 1.0274x faster
   large-int-neg                                     13.7312+-0.2018     ?     13.9030+-0.4601        ? might be 1.0125x slower
   large-int                                         12.7635+-0.3485           12.5618+-0.2211          might be 1.0161x faster
   load-varargs-elimination                          20.5826+-0.4284     ?     20.5922+-1.0790        ?
   logical-not-weird-types                            2.7269+-0.0642     ?      2.7414+-0.1513        ?
   logical-not                                        4.1508+-0.1028            4.0825+-0.0703          might be 1.0167x faster
   lots-of-fields                                     9.6666+-0.4396            9.5782+-0.3481        
   make-indexed-storage                               2.8234+-0.1381     ?      2.8635+-0.1489        ? might be 1.0142x slower
   make-rope-cse                                      3.6016+-0.0348     ?      3.7982+-0.2954        ? might be 1.0546x slower
   marsaglia-larger-ints                             32.5266+-0.9376           32.1122+-0.3677          might be 1.0129x faster
   marsaglia-osr-entry                               21.4527+-0.6098     ?     21.8173+-0.8060        ? might be 1.0170x slower
   math-with-out-of-bounds-array-values              22.8506+-1.1358           21.8109+-0.3391          might be 1.0477x faster
   max-boolean                                        2.6686+-0.0902     ?      2.7154+-0.1406        ? might be 1.0175x slower
   method-on-number                                  15.8816+-0.6864     ?     16.1556+-1.1512        ? might be 1.0173x slower
   min-boolean                                        2.5446+-0.1099     ?      2.5657+-0.0350        ?
   minus-boolean-double                               3.1123+-0.1451     ?      3.1586+-0.1536        ? might be 1.0149x slower
   minus-boolean                                      2.3002+-0.0560     ?      2.3667+-0.1932        ? might be 1.0289x slower
   misc-strict-eq                                    29.1796+-1.4843           29.0569+-1.1957        
   mod-boolean-double                                11.2278+-0.3240           11.1931+-0.2777        
   mod-boolean                                        8.3815+-0.1752            8.3452+-0.1113        
   mul-boolean-double                                 3.6713+-0.1086            3.5989+-0.0771          might be 1.0201x faster
   mul-boolean                                        2.9928+-0.2517            2.8052+-0.0341          might be 1.0669x faster
   neg-boolean                                        3.1378+-0.1063            3.0858+-0.0848          might be 1.0169x faster
   negative-zero-divide                               0.3464+-0.0245     ?      0.3675+-0.0507        ? might be 1.0609x slower
   negative-zero-modulo                               0.3465+-0.0271            0.3420+-0.0153          might be 1.0133x faster
   negative-zero-negate                               0.3310+-0.0299     ?      0.3331+-0.0220        ?
   nested-function-parsing                           45.3874+-0.5809     ?     46.0422+-0.8261        ? might be 1.0144x slower
   new-array-buffer-dead                             87.8460+-0.7647           87.6364+-0.6135        
   new-array-buffer-push                              6.1804+-0.3665            6.0238+-0.3968          might be 1.0260x faster
   new-array-dead                                    14.7179+-0.7147           14.6583+-0.6198        
   new-array-push                                     3.5027+-0.2070     ?      3.5077+-0.1651        ?
   no-inline-constructor                             31.1573+-0.5953           31.0716+-0.4842        
   number-test                                        2.8755+-0.0922     ?      3.1660+-0.6579        ? might be 1.1010x slower
   object-closure-call                                4.7504+-0.1201     ?      4.8117+-0.3412        ? might be 1.0129x slower
   object-get-own-property-symbols-on-large-array   
                                                      4.4449+-0.3086            4.2460+-0.3193          might be 1.0468x faster
   object-test                                        2.6487+-0.0756     ?      2.7188+-0.0840        ? might be 1.0265x slower
   obvious-sink-pathology-taken                     100.2203+-1.2246     ?    100.3370+-0.9574        ?
   obvious-sink-pathology                            96.1014+-1.4305           95.2739+-1.3340        
   obviously-elidable-new-object                     28.7405+-1.0800     ?     29.1468+-0.7899        ? might be 1.0141x slower
   plus-boolean-arith                                 2.3589+-0.0373     ?      2.3600+-0.0777        ?
   plus-boolean-double                                3.2990+-0.2423            3.1985+-0.2102          might be 1.0314x faster
   plus-boolean                                       2.5540+-0.1263            2.4868+-0.0473          might be 1.0270x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.4349+-0.4082            3.2949+-0.0852          might be 1.0425x faster
   poly-chain-access-different-prototypes             2.8688+-0.1085            2.8228+-0.0345          might be 1.0163x faster
   poly-chain-access-simpler                          3.4870+-0.4000            3.3521+-0.1635          might be 1.0402x faster
   poly-chain-access                                  3.3211+-0.1828            3.3211+-0.2003        
   poly-stricteq                                     47.4710+-0.5301     ?     48.0948+-0.8446        ? might be 1.0131x slower
   polymorphic-array-call                             1.2845+-0.2580            1.2083+-0.0341          might be 1.0630x faster
   polymorphic-get-by-id                              2.7938+-0.0394            2.7676+-0.0365        
   polymorphic-put-by-id                             24.5724+-0.6884     ?     25.1930+-0.6898        ? might be 1.0253x slower
   polymorphic-put-by-val-with-string                25.2714+-0.8093     ?     25.5936+-0.9069        ? might be 1.0127x slower
   polymorphic-put-by-val-with-symbol                25.0284+-0.4183     ?     25.3683+-0.6646        ? might be 1.0136x slower
   polymorphic-structure                             13.5355+-0.7351           13.1028+-0.2190          might be 1.0330x faster
   polyvariant-monomorphic-get-by-id                  6.3286+-0.7589     ?      6.5451+-0.8885        ? might be 1.0342x slower
   proto-getter-access                                8.2137+-0.1893     ?      8.2532+-0.1170        ?
   prototype-access-with-mutating-prototype           5.5717+-0.3586            5.3942+-0.2252          might be 1.0329x faster
   put-by-id-replace-and-transition                   8.3575+-0.6015            8.0843+-0.3780          might be 1.0338x faster
   put-by-id-slightly-polymorphic                     2.5675+-0.0256     ?      2.5690+-0.0188        ?
   put-by-id                                          9.8089+-0.4785            9.7895+-0.4278        
   put-by-val-direct                                  0.3616+-0.0415     ?      0.3619+-0.0435        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.2933+-0.2126     ?      5.2971+-0.1110        ?
   put-by-val-machine-int                             2.3636+-0.2781     ?      2.4248+-0.2276        ? might be 1.0259x slower
   put-by-val-with-string-replace-and-transition   
                                                     10.3235+-0.3426     ?     10.6486+-0.7335        ? might be 1.0315x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      2.7867+-0.0235            2.7795+-0.0244        
   put-by-val-with-string                            10.2242+-0.4328     ?     10.6491+-0.5050        ? might be 1.0416x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     11.4936+-0.4533           11.2997+-0.2315          might be 1.0172x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1355+-0.0701            3.1030+-0.0544          might be 1.0105x faster
   put-by-val-with-symbol                            10.4442+-0.4763           10.1915+-0.2981          might be 1.0248x faster
   rare-osr-exit-on-local                            14.6007+-0.4467           14.4913+-0.4258        
   register-pressure-from-osr                        16.8465+-0.5601     ?     17.7578+-2.1668        ? might be 1.0541x slower
   repeat-multi-get-by-offset                        22.0602+-1.4800           21.5899+-0.6054          might be 1.0218x faster
   setter-prototype                                   7.8107+-0.2141            7.7812+-0.3033        
   setter                                             5.7364+-0.5033            5.5307+-0.5008          might be 1.0372x faster
   simple-activation-demo                            24.3403+-0.3256           24.0891+-0.4781          might be 1.0104x faster
   simple-getter-access                              10.7565+-0.3140           10.6107+-0.0995          might be 1.0137x faster
   simple-poly-call-nested                            9.1732+-0.6595     ?      9.2451+-0.2322        ?
   simple-poly-call                                   1.1509+-0.0851            1.1209+-0.0179          might be 1.0268x faster
   sin-boolean                                       20.7795+-1.7495           20.2903+-1.4139          might be 1.0241x faster
   singleton-scope                                   53.1933+-0.7996     ?     53.5409+-1.8013        ?
   sink-function                                     11.4581+-1.3444           10.2120+-0.5781          might be 1.1220x faster
   sink-huge-activation                              17.4989+-0.6334           16.7108+-0.8824          might be 1.0472x faster
   sinkable-new-object-dag                           54.9220+-1.0922           54.8055+-1.4761        
   sinkable-new-object-taken                         43.9606+-1.9320     ?     44.1085+-1.6414        ?
   sinkable-new-object                               29.9349+-0.7221     ?     30.0432+-0.8307        ?
   slow-array-profile-convergence                     2.4330+-0.1820     ?      2.4494+-0.1335        ?
   slow-convergence                                   2.3168+-0.1303     ?      2.4532+-0.2650        ? might be 1.0589x slower
   slow-ternaries                                    17.3856+-0.3401           17.3044+-0.3567        
   sorting-benchmark                                 16.7816+-0.5242           16.5094+-0.3487          might be 1.0165x faster
   sparse-conditional                                 1.0788+-0.0087     ?      1.1781+-0.1970        ? might be 1.0920x slower
   splice-to-remove                                  11.9639+-0.2906           11.9160+-0.1841        
   string-char-code-at                               14.2873+-0.5724     ?     14.4598+-0.5951        ? might be 1.0121x slower
   string-concat-object                               2.0775+-0.1022     ?      2.1221+-0.0965        ? might be 1.0215x slower
   string-concat-pair-object                          2.1397+-0.0934            2.0952+-0.0807          might be 1.0213x faster
   string-concat-pair-simple                          9.6176+-0.8579            9.5435+-0.6512        
   string-concat-simple                               9.2064+-0.3406     ?      9.3671+-0.4061        ? might be 1.0175x slower
   string-cons-repeat                                 6.3257+-0.2378     ?      6.6257+-0.4020        ? might be 1.0474x slower
   string-cons-tower                                  6.7101+-0.5007            6.5694+-0.1791          might be 1.0214x faster
   string-equality                                   16.3778+-0.7160           15.8549+-0.3107          might be 1.0330x faster
   string-get-by-val-big-char                         6.7509+-0.4514            6.6991+-0.5703        
   string-get-by-val-out-of-bounds-insane             3.1575+-0.0860     ^      2.9870+-0.0513        ^ definitely 1.0571x faster
   string-get-by-val-out-of-bounds                    4.0741+-0.2982     ?      4.2549+-0.5500        ? might be 1.0444x slower
   string-get-by-val                                  2.8047+-0.0633     ?      2.9435+-0.2644        ? might be 1.0495x slower
   string-hash                                        1.7920+-0.0409     ?      1.8431+-0.0755        ? might be 1.0285x slower
   string-long-ident-equality                        15.2737+-0.8158     ?     16.8781+-4.3255        ? might be 1.1050x slower
   string-out-of-bounds                              10.4320+-0.4990     ?     10.6844+-0.4991        ? might be 1.0242x slower
   string-repeat-arith                               26.6496+-0.4490     ?     27.2894+-0.4926        ? might be 1.0240x slower
   string-sub                                        52.7613+-0.8504     ?     53.6493+-1.1031        ? might be 1.0168x slower
   string-test                                        2.8290+-0.1266            2.8120+-0.1492        
   string-var-equality                               29.7305+-1.5184     ?     31.0554+-2.3651        ? might be 1.0446x slower
   structure-hoist-over-transitions                   2.4035+-0.0668     ?      2.4090+-0.0340        ?
   substring-concat-weird                            36.7507+-1.0499     ?     37.6989+-1.8565        ? might be 1.0258x slower
   substring-concat                                  42.5941+-5.0910           40.7213+-1.9316          might be 1.0460x faster
   substring                                         45.4058+-0.9329           45.1114+-1.3001        
   switch-char-constant                               2.6128+-0.0512     ?      2.7144+-0.1285        ? might be 1.0389x slower
   switch-char                                        6.4352+-1.1412            5.5132+-0.4502          might be 1.1672x faster
   switch-constant                                    8.4880+-0.8436            8.3278+-0.9262          might be 1.0192x faster
   switch-string-basic-big-var                       13.9362+-0.4477           13.8341+-0.3887        
   switch-string-basic-big                           14.2610+-0.6633           14.1443+-0.5050        
   switch-string-basic-var                           12.8625+-0.2459     ?     13.0711+-0.4517        ? might be 1.0162x slower
   switch-string-basic                               12.3249+-0.3692     ?     12.6007+-0.7033        ? might be 1.0224x slower
   switch-string-big-length-tower-var                17.3469+-0.2210     ?     19.0548+-2.2564        ? might be 1.0985x slower
   switch-string-length-tower-var                    13.0542+-0.3018           12.9077+-0.1519          might be 1.0114x faster
   switch-string-length-tower                        11.5211+-0.1751     ?     11.8532+-0.4838        ? might be 1.0288x slower
   switch-string-short                               11.9735+-0.4817     ?     12.0012+-0.4820        ?
   switch                                            12.0515+-0.7911           11.1836+-0.3480          might be 1.0776x faster
   tear-off-arguments-simple                          2.9432+-0.1340            2.8893+-0.1603          might be 1.0187x faster
   tear-off-arguments                                 3.9142+-0.1565     ?      4.0172+-0.2499        ? might be 1.0263x slower
   temporal-structure                                12.2445+-0.4045           11.9914+-0.2083          might be 1.0211x faster
   to-int32-boolean                                  12.7294+-0.2687           12.6494+-0.3483        
   try-catch-get-by-val-cloned-arguments             13.8031+-0.4831     ?     14.5199+-1.0140        ? might be 1.0519x slower
   try-catch-get-by-val-direct-arguments              6.3618+-0.3057     ?      6.6383+-0.6113        ? might be 1.0435x slower
   try-catch-get-by-val-scoped-arguments              7.4364+-0.3112     ?      7.9615+-0.5510        ? might be 1.0706x slower
   typed-array-get-set-by-val-profiling              27.0682+-0.6871     ?     27.0953+-0.7978        ?
   undefined-property-access                        224.0363+-1.8389     ?    225.6721+-2.0082        ?
   undefined-test                                     2.9942+-0.1126            2.9075+-0.1273          might be 1.0298x faster
   unprofiled-licm                                   13.9126+-0.2817     ?     14.5074+-0.5811        ? might be 1.0427x slower
   varargs-call                                      13.0362+-0.9103           12.6356+-0.2714          might be 1.0317x faster
   varargs-construct-inline                          21.9483+-0.5196     ?     22.2842+-0.7292        ? might be 1.0153x slower
   varargs-construct                                 19.8126+-0.3540     ?     19.9638+-0.2884        ?
   varargs-inline                                     8.9276+-1.7323            8.1873+-0.1659          might be 1.0904x faster
   varargs-strict-mode                                8.6791+-0.2294            8.5946+-0.1218        
   varargs                                            8.6650+-0.2292            8.6065+-0.1410        
   weird-inlining-const-prop                          2.5282+-0.2850     ?      2.6654+-0.3219        ? might be 1.0543x slower

   &lt;geometric&gt;                                        7.8200+-0.0228     ?      7.8226+-0.0134        ? might be 1.0003x slower

                                                        TipOfTree                NoNodeOrigin                                   
AsmBench:
   bigfib.cpp                                       450.7294+-5.3274     ?    456.2240+-7.1114        ? might be 1.0122x slower
   cray.c                                           401.3373+-4.5000          400.1530+-2.5182        
   dry.c                                            427.3336+-6.6488          427.1138+-6.5593        
   FloatMM.c                                        686.4202+-4.9638     ?    688.3572+-5.5473        ?
   gcc-loops.cpp                                   3446.2377+-11.5341        3436.3362+-12.5287       
   n-body.c                                         831.2466+-5.5329          827.5971+-5.1081        
   Quicksort.c                                      425.7949+-29.0771         409.5014+-4.0854          might be 1.0398x faster
   stepanov_container.cpp                          3612.5505+-35.4611        3589.0756+-26.3551       
   Towers.c                                         235.9633+-3.5337          234.6406+-3.1577        

   &lt;geometric&gt;                                      724.5291+-6.4592          720.9412+-3.1173          might be 1.0050x faster

                                                        TipOfTree                NoNodeOrigin                                   
CompressionBench:
   huffman                                           60.7584+-1.8161     ?     61.1769+-1.1599        ?
   arithmetic-simple                                274.1237+-5.4159          271.0496+-2.3481          might be 1.0113x faster
   arithmetic-precise                               241.3118+-1.0716     ?    242.2606+-0.9599        ?
   arithmetic-complex-precise                       254.2469+-20.9852         246.1246+-3.7339          might be 1.0330x faster
   arithmetic-precise-order-0                       282.8168+-3.9654     ?    283.4525+-2.6395        ?
   arithmetic-precise-order-1                       306.0386+-3.0269     ?    306.5991+-2.1328        ?
   arithmetic-precise-order-2                       354.1293+-2.3405     ?    355.2150+-2.1643        ?
   arithmetic-simple-order-1                        329.1712+-2.7011          325.8690+-2.0855          might be 1.0101x faster
   arithmetic-simple-order-2                        382.1865+-4.7545     ?    413.0330+-75.4843       ? might be 1.0807x slower
   lz-string                                        316.5823+-4.4449          315.7768+-6.5553        

   &lt;geometric&gt;                                      256.6844+-2.0101     ?    257.4084+-4.0896        ? might be 1.0028x slower

                                                        TipOfTree                NoNodeOrigin                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                                   51.2819+-0.1213     ?     51.2826+-0.1739        ? might be 1.0000x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121242</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-27 00:16:59 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/189013</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260017</attachid>
            <date>2015-08-26 18:50:34 -0700</date>
            <delta_ts>2015-08-26 20:37:19 -0700</delta_ts>
            <desc>might work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14428</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2
aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDIxICsxMDIsNiBAQCBib29sIEJhc2ljQmxvY2s6
OmlzSW5CbG9jayhOb2RlKiBteU5vZGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Ob2RlKiBC
YXNpY0Jsb2NrOjpmaXJzdE9yaWdpbk5vZGUoKQotewotICAgIGZvciAoTm9kZSogbm9kZSA6ICp0
aGlzKSB7Ci0gICAgICAgIGlmIChub2RlLT5vcmlnaW4uaXNTZXQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBub2RlOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBudWxscHRyOwotfQotCi1Ob2RlT3JpZ2luIEJhc2ljQmxvY2s6OmZpcnN0T3JpZ2lu
KCkKLXsKLSAgICByZXR1cm4gZmlyc3RPcmlnaW5Ob2RlKCktPm9yaWdpbjsKLX0KLQogdm9pZCBC
YXNpY0Jsb2NrOjpyZW1vdmVQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJlZGVjZXNzb3JzLnNpemUoKTsgKytpKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTg4
OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3Vu
dGVkPEJhc2ljQmxvYwogICAgIAogICAgIEJsb2NrTm9kZUxpc3Q6Oml0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9ub2Rlcy5iZWdpbigpOyB9CiAgICAgQmxvY2tOb2RlTGlzdDo6aXRlcmF0b3Ig
ZW5kKCkgeyByZXR1cm4gbV9ub2Rlcy5lbmQoKTsgfQotICAgIAotICAgIE5vZGUqIGZpcnN0T3Jp
Z2luTm9kZSgpOwotICAgIE5vZGVPcmlnaW4gZmlyc3RPcmlnaW4oKTsKLSAgICAKKwogICAgIHVu
c2lnbmVkIG51bVN1Y2Nlc3NvcnMoKSB7IHJldHVybiB0ZXJtaW5hbCgpLT5udW1TdWNjZXNzb3Jz
KCk7IH0KICAgICAKICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yKHVuc2lnbmVkIGluZGV4KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbWJpbmVkTGl2ZW5l
c3MuY3BwCShyZXZpc2lvbiAxODg5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbWJpbmVkTGl2ZW5lc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIEhh
c2hTZXQ8Tm9kZSo+IGxpdmVOb2Rlc0F0SGVhZChHcmFwaCYgZ3IKICAgICAKICAgICBBdmFpbGFi
aWxpdHlNYXAmIGF2YWlsYWJpbGl0eU1hcCA9IGJsb2NrLT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVh
ZDsKICAgICBncmFwaC5mb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZSgKLSAgICAgICAgYmxvY2st
PmZpcnN0T3JpZ2luKCkuZm9yRXhpdCwKKyAgICAgICAgYmxvY2stPmF0KDApLT5vcmlnaW4uZm9y
RXhpdCwKICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7CiAgICAgICAgICAgICBh
dmFpbGFiaWxpdHlNYXAuY2xvc2VTdGFydGluZ1dpdGhMb2NhbCgKICAgICAgICAgICAgICAgICBy
ZWcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9pc3RpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEhvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODg5NzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPEZy
b3plblZhbHVlKiwgTm9kZSo+JiB2YWx1ZXMgPSB2YWx1ZXNGb3Iobm9kZS0+b3AoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVzLmFkZChub2RlLT5jb25zdGFudCgp
LCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luID0gTm9kZU9yaWdpbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luID0gbV9ncmFwaC5ibG9jaygwKS0+YXQoMCkt
Pm9yaWdpbjsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRSZXBsYWNlbWVudChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvRnJlZS5hcHBlbmQobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZG9uJ3Qga25vdyBpdHMgZXhlY3V0aW9uIGZy
ZXF1ZW5jeS4KICAgICAgICAgQmFzaWNCbG9jayogcGFkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
QmVmb3JlKCpzdWNjZXNzb3IsIFBOYU4pOwogICAgICAgICBwYWQtPmFwcGVuZE5vZGUoCi0gICAg
ICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgKCpzdWNjZXNzb3IpLT5maXJzdE9yaWdp
bigpLCBPcEluZm8oKnN1Y2Nlc3NvcikpOworICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUs
IEp1bXAsICgqc3VjY2Vzc29yKS0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKCpzdWNjZXNzb3IpKTsK
ICAgICAgICAgcGFkLT5wcmVkZWNlc3NvcnMuYXBwZW5kKHByZWRlY2Vzc29yKTsKICAgICAgICAg
KCpzdWNjZXNzb3IpLT5yZXBsYWNlUHJlZGVjZXNzb3IocHJlZGVjZXNzb3IsIHBhZCk7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxscy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9yQWxsS2lsbHMuaAko
cmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxL
aWxscy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwzMyArNTUsMTggQEAgdm9pZCBmb3JBbGxLaWxs
ZWRPcGVyYW5kcyhHcmFwaCYgZ3JhcGgsIAogICAgIENvZGVPcmlnaW4gYWZ0ZXIgPSBub2RlQWZ0
ZXItPm9yaWdpbi5mb3JFeGl0OwogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciBhbHJlYWR5Tm90
ZWQ7Ci0gICAgaWYgKCEhYWZ0ZXIpIHsKLSAgICAgICAgLy8gSWYgd2UgTW92SGludCBzb21ldGhp
bmcgdGhhdCBpcyBsaXZlIGF0IHRoZSB0aW1lLCB0aGVuIHdlIGtpbGwgdGhlIG9sZCB2YWx1ZS4K
LSAgICAgICAgaWYgKG5vZGVBZnRlci0+Y29udGFpbnNNb3ZIaW50KCkpIHsKLSAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciByZWcgPSBub2RlQWZ0ZXItPnVubGlua2VkTG9jYWwoKTsKLSAgICAg
ICAgICAgIGlmIChncmFwaC5pc0xpdmVJbkJ5dGVjb2RlKHJlZywgYWZ0ZXIpKSB7Ci0gICAgICAg
ICAgICAgICAgZnVuY3RvcihyZWcpOwotICAgICAgICAgICAgICAgIGFscmVhZHlOb3RlZCA9IHJl
ZzsKLSAgICAgICAgICAgIH0KKyAgICAvLyBJZiB3ZSBNb3ZIaW50IHNvbWV0aGluZyB0aGF0IGlz
IGxpdmUgYXQgdGhlIHRpbWUsIHRoZW4gd2Uga2lsbCB0aGUgb2xkIHZhbHVlLgorICAgIGlmIChu
b2RlQWZ0ZXItPmNvbnRhaW5zTW92SGludCgpKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZWcgPSBub2RlQWZ0ZXItPnVubGlua2VkTG9jYWwoKTsKKyAgICAgICAgaWYgKGdyYXBoLmlzTGl2
ZUluQnl0ZWNvZGUocmVnLCBhZnRlcikpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IocmVnKTsKKyAg
ICAgICAgICAgIGFscmVhZHlOb3RlZCA9IHJlZzsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBpZiAoIWJlZm9yZSkgewotICAgICAgICBpZiAoIWFmdGVyKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAvLyBUaGUgdHJ1ZSBiZWZvcmUtb3JpZ2luIGlzIHRoZSBvcmlnaW4gYXQgcHJl
ZGVjZXNzb3JzIHRoYXQganVtcCB0byB1cy4gQnV0IHRoZXJlIGNhbiBiZQotICAgICAgICAvLyBt
YW55IHN1Y2ggcHJlZGVjZXNzb3JzIGFuZCB0aGV5IHdpbGwgbGlrZWx5IGFsbCBoYXZlIGEgZGlm
ZmVyZW50IG9yaWdpbi4gU28sIGl0J3MgYmV0dGVyCi0gICAgICAgIC8vIHRvIGRvIHRoZSBjb25z
ZXJ2YXRpdmUgdGhpbmcuCi0gICAgICAgIGdyYXBoLmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2Rl
KGFmdGVyLCBmdW5jdG9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKICAgICBpZiAo
YmVmb3JlID09IGFmdGVyKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gYmVmb3JlIGNv
dWxkIGJlIHVuc2V0IGV2ZW4gaWYgYWZ0ZXIgaXMsIGJ1dCB0aGUgb3Bwb3NpdGUgY2Fubm90IGhh
cHBlbi4KLSAgICBBU1NFUlQoISFhZnRlcik7Ci0gICAgCiAgICAgLy8gSXQncyBlYXNpZXIgdG8g
ZG8gdGhpcyBpZiB0aGUgaW5saW5lIGNhbGwgZnJhbWVzIGFyZSB0aGUgc2FtZS4gVGhpcyBpcyB3
YXkgZmFzdGVyIHRoYW4gdGhlCiAgICAgLy8gb3RoZXIgbG9vcCwgYmVsb3cuCiAgICAgaWYgKGJl
Zm9yZS5pbmxpbmVDYWxsRnJhbWUgPT0gYWZ0ZXIuaW5saW5lQ2FsbEZyYW1lKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFk
ZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBn
cmFwaAogICAgIC8vIERvbid0IGJvdGhlciB0byBwcmVzZXJ2ZSBleGVjdXRpb24gZnJlcXVlbmNp
ZXMgZm9yIG5vdy4KICAgICBCYXNpY0Jsb2NrKiBwcmVIZWFkZXIgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0QmVmb3JlKGJsb2NrLCBQTmFOKTsKICAgICBwcmVIZWFkZXItPmFwcGVuZE5vZGUoCi0gICAg
ICAgIGdyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYmxvY2stPmZpcnN0T3JpZ2luKCksIE9wSW5mbyhi
bG9jaykpOworICAgICAgICBncmFwaCwgU3BlY05vbmUsIEp1bXAsIGJsb2NrLT5hdCgwKS0+b3Jp
Z2luLCBPcEluZm8oYmxvY2spKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29y
SW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7
IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9
IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlm
IGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAgICAg
ICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0
IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4gb2Yg
dGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVh
ZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigp
LT5maXJzdE9yaWdpbigpLmV4aXRPSworICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRl
ciAmJiBsb29wLmhlYWRlcigpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAg
ICYmICFleGlzdGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAg
ICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAgICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3Ioc3VjY2Vzc29ySW5kZXgp
OwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFk
Lm1lcmdlKGNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHkpOwogICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkLnBydW5lQnlMaXZlbmVzcygKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIHN1Y2Nlc3Nvci0+Zmlyc3RPcmlnaW4oKS5mb3JF
eGl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIHN1Y2Nlc3Nvci0+YXQoMCkt
Pm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAxODg5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ4LDcgKzE1NDgs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyB3aXRoIHVzZWxlc3MgY29uc3RhbnRzIGV2ZXJ5d2hl
cmUKICAgICAgICAgSGFzaE1hcDxGcm96ZW5WYWx1ZSosIE5vZGUqPiBsYXp5TWFwcGluZzsKICAg
ICAgICAgaWYgKCFtX2JvdHRvbSkKLSAgICAgICAgICAgIG1fYm90dG9tID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Q29uc3RhbnQoMCwgTm9kZU9yaWdpbigpLCBqc051bWJlcigxOTI3KSk7CisgICAg
ICAgICAgICBtX2JvdHRvbSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KDAsIG1fZ3Jh
cGguYmxvY2soMCktPmF0KDApLT5vcmlnaW4sIGpzTnVtYmVyKDE5MjcpKTsKICAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewog
ICAgICAgICAgICAgbV9oZWFwID0gbV9oZWFwQXRIZWFkW2Jsb2NrXTsKIApAQCAtMTYyMSw3ICsx
NjIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAobV9oZWFwQXRIZWFkW2Jsb2Nr
XS5mb2xsb3cobG9jYXRpb24pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hl
YXBUb3AsIFBoaSwgTm9kZU9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2Rl
ID0gbV9ncmFwaC5hZGROb2RlKFNwZWNIZWFwVG9wLCBQaGksIGJsb2NrLT5hdCgwKS0+b3JpZ2lu
KTsKICAgICAgICAgICAgICAgICBwaGlOb2RlLT5tZXJnZUZsYWdzKE5vZGVSZXN1bHRKUyk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBoaU5vZGU7CiAgICAgICAgICAgICB9KTsKQEAgLTE2Mzgs
NyArMTYzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFtX2hlYXBBdEhlYWRb
YmxvY2tdLmdldEFsbG9jYXRpb24oaWRlbnRpZmllcikuaXNFc2NhcGVkQWxsb2NhdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIE5v
ZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwgTm9kZU9yaWdp
bigpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNw
ZWNIZWFwVG9wLCBQaGksIGJsb2NrLT5hdCgwKS0+b3JpZ2luKTsKICAgICAgICAgICAgICAgICBw
aGlOb2RlLT5tZXJnZUZsYWdzKE5vZGVSZXN1bHRKUyk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHBoaU5vZGU7CiAgICAgICAgICAgICB9KTsKQEAgLTE2NjksNyArMTY2OSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhsb2NhdGlv
bi5iYXNlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgK
LSAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxvY2F0aW9uLmNyZWF0ZUhpbnQobV9ncmFwaCwg
Tm9kZU9yaWdpbigpLCBwaGlEZWYtPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IDAsIGxvY2F0aW9uLmNyZWF0ZUhpbnQobV9ncmFwaCwgYmxvY2stPmF0KDApLT5vcmlnaW4sIHBo
aURlZi0+dmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAt
MTY4MCw3ICsxNjgwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBOb2RlKiBpZGVudGlm
aWVyID0gaW5kZXhUb05vZGVbdmFyaWFibGUtPmluZGV4KCldOwogICAgICAgICAgICAgICAgIG1f
ZXNjYXBlZVRvTWF0ZXJpYWxpemF0aW9uLmFkZChpZGVudGlmaWVyLCBwaGlEZWYtPnZhbHVlKCkp
OwogICAgICAgICAgICAgICAgIGJvb2wgY2FuRXhpdCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IGluc2VydE9TUkhpbnRzRm9yVXBkYXRlKDAsIE5vZGVPcmlnaW4oKSwgY2FuRXhpdCwgYXZhaWxh
YmlsaXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eSwgaWRlbnRpZmllciwgcGhpRGVmLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSgKKyAgICAgICAg
ICAgICAgICAgICAgMCwgYmxvY2stPmF0KDApLT5vcmlnaW4sIGNhbkV4aXQsCisgICAgICAgICAg
ICAgICAgICAgIGF2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHksIGlkZW50aWZp
ZXIsIHBoaURlZi0+dmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh2
ZXJib3NlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1OCw3ICszNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyBQaGkgZm9yICIsIG9wZXJh
bmQsICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG4iKTsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNIZWFw
VG9wLCBQaGksIE5vZGVPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9
IG1fZ3JhcGguYWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdpbik7
CiAgICAgICAgICAgICAgICAgcGhpTm9kZS0+bWVyZ2VGbGFncyhyZXN1bHRGb3IoZm9ybWF0KSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBoaU5vZGU7CiAgICAgICAgICAgICB9KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRkTm9kZSgK
LSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3Rpb24oKSwgUGhpLCBOb2RlT3Jp
Z2luKCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBQaGks
IGJsb2NrLT5hdCgwKS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpKTsKICAgICAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmb3JtYXQgPSB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKTsKICAgICAgICAg
ICAgICAgICBOb2RlRmxhZ3MgcmVzdWx0ID0gcmVzdWx0Rm9yKGZvcm1hdCk7CiAgICAgICAgICAg
ICAgICAgcGhpTm9kZS0+bWVyZ2VGbGFncyhyZXN1bHQpOwpAQCAtMjUyLDkgKzI1MiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUt
PmxvY2FsKCkpID0gcGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIHBo
aUluc2VydGlvblBvaW50LCBTcGVjTm9uZSwgTW92SGludCwgTm9kZU9yaWdpbigpLAorICAgICAg
ICAgICAgICAgICAgICBwaGlJbnNlcnRpb25Qb2ludCwgU3BlY05vbmUsIE1vdkhpbnQsIGJsb2Nr
LT5hdCgwKS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpLAogICAgICAgICAgICAgICAgICAgICBP
cEluZm8odmFyaWFibGUtPmxvY2FsKCkub2Zmc2V0KCkpLCBwaGlEZWYtPnZhbHVlKCktPmRlZmF1
bHRFZGdlKCkpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmxvY2stPmF0KDAp
LT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUocGhpSW5zZXJ0aW9uUG9pbnQsIFNwZWNOb25lLCBFeGl0T0ssIGJsb2NrLT5hdCgwKS0+b3Jp
Z2luKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxODg5NzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg3LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxvY2stPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChpKTsKIAorICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+
b3JpZ2luLmlzU2V0KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlzU2V0KCkgPT0gbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKCFub2RlLT5vcmlnaW4uZm9yRXhp
dC5pc1NldCgpICYmIG5vZGUtPm9yaWdpbi5leGl0T0spKTsKICAgICAgICAgICAgICAgICBWQUxJ
REFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+
b3JpZ2luLmV4aXRPSykpOwpAQCAtNTI2LDIwICs1MjcsMjEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVkFMSURBVEUoKGJs
b2NrKSwgYmxvY2stPnBoaXMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
dW5zaWduZWQgbm9kZUluZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBub2RlSW5kZXggPCBi
bG9jay0+c2l6ZSgpICYmICFibG9jay0+YXQobm9kZUluZGV4KS0+b3JpZ2luLmZvckV4aXQuaXNT
ZXQoKTsgbm9kZUluZGV4KyspIHsgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBWQUxJREFU
RSgoYmxvY2spLCBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgZm9yICg7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleCsrKQot
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChibG9jay0+YXQobm9kZUluZGV4KSksIGJsb2NrLT5h
dChub2RlSW5kZXgpLT5vcmlnaW4uZm9yRXhpdC5pc1NldCgpKTsKKworICAgICAgICAgICAgYm9v
bCBkaWRTZWVFeGl0T0sgPSBmYWxzZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJ
bmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4
KTsKKyAgICAgICAgICAgICAgICBkaWRTZWVFeGl0T0sgfD0gbm9kZS0+b3JpZ2luLmV4aXRPSzsK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBj
YXNlIFBoaToKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+b3Jp
Z2luLmZvckV4aXQuaXNTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIFBoaSBjYW5ub3Qg
ZXhpdCwgYW5kIGl0IHdvdWxkIGJlIHdyb25nIHRvIGhvaXN0IGFueXRoaW5nIHRvIHRoZSBQaGkg
dGhhdCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAvLyBleGl0LgorICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5vcmlnaW4uZXhpdE9LKTsKKworICAgICAgICAg
ICAgICAgICAgICAvLyBJdCBuZXZlciBtYWtlcyBzZW5zZSB0byBoYXZlIGV4aXRPSyBhbnl3aGVy
ZSBpbiB0aGUgYmxvY2sgYmVmb3JlIGEgUGhpLiBJdCdzIG9ubHkKKyAgICAgICAgICAgICAgICAg
ICAgLy8gT0sgdG8gZXhpdCBhZnRlciBhbGwgUGhpcyBhcmUgZG9uZS4KKyAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhZGlkU2VlRXhpdE9LKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgR2V0
TG9jYWw6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260025</attachid>
            <date>2015-08-26 20:37:19 -0700</date>
            <delta_ts>2015-08-26 22:36:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18119</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MDA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDE1LTA4LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Tm9kZTo6b3JpZ2luIHNob3VsZCBhbHdheXMgYmUgc2V0LCBhbmQgdGhlIGRlYWQgem9uZSBkdWUg
dG8gU1NBIFBoaXMgY2FuIGp1c3QgdXNlIGV4aXRPSz1mYWxzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5lZWQgdG8gbGFiZWwgbm9kZXMgdGhh
dCBhYnNvbHV0ZWx5IGNhbm5vdCBleGl0IHdhcyBmaXJzdCBvYnNlcnZlZCB3aGVuIHdlIGludHJv
ZHVjZWQgU1NBIGZvcm0uCisgICAgICAgIFdlIGluZGljYXRlZCB0aGlzIGJ5IG5vdCBzZXR0aW5n
IHRoZSBDb2RlT3JpZ2luLgorCisgICAgICAgIEJ1dCBqdXN0IHJlY2VudGx5IChodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xODg5NzkpLCB3ZSBhZGRlZCBhIG1vcmUgY29tcHJlaGVu
c2l2ZSAiZXhpdE9LIgorICAgICAgICBiaXQgaW4gTm9kZU9yaWdpbi4gQWZ0ZXIgdGhhdCBjaGFu
Z2UsIHRoZXJlIHdlcmUgdHdvIHdheXMgb2YgaW5kaWNhdGluZyB0aGF0IHlvdSBjYW5ub3QgZXhp
dDoKKyAgICAgICAgIWV4aXRPSyBhbmQgYW4gdW5zZXQgTm9kZU9yaWdpbi4gQW4gdW5zZXQgTm9k
ZU9yaWdpbiBpbXBsaWVkICFleGl0T0suCisKKyAgICAgICAgTm93LCB0aGlzIGNoYW5nZSBpcyBh
Ym91dCByZW1vdmluZyB0aGUgb2xkIHdheSBzbyB0aGF0IHdlIG9ubHkgdXNlICFleGl0T0suIEZy
b20gbm93IG9uLCBhbGwgbm9kZXMKKyAgICAgICAgbXVzdCBoYXZlIHRoZWlyIE5vZGVPcmlnaW4g
c2V0LCBhbmQgdGhlIElSIHZhbGlkYXRpb24gd2lsbCBjaGVjayB0aGlzLiBUaGlzIG1lYW5zIHRo
YXQgSSBjb3VsZAorICAgICAgICByZW1vdmUgdmFyaW91cyBwaWVjZXMgb2YgY3J1ZnQgZm9yIGRl
YWxpbmcgd2l0aCB1bnNldCBOb2RlT3JpZ2lucywgYnV0IEkgZGlkIGhhdmUgdG8gYWRkIHNvbWUg
bmV3CisgICAgICAgIGNydWZ0IHRvIGVuc3VyZSB0aGF0IGFsbCBub2RlcyB3ZSBjcmVhdGUgaGF2
ZSBhIE5vZGVPcmlnaW4uCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2ltcGxpZmllcyBvdXIgSVIg
YnkgaGF2aW5nIGEgc2ltcGxlciBydWxlIGFib3V0IHdoZW4gTm9kZU9yaWdpbiBpcyBzZXQ6IGl0
J3MgYWx3YXlzCisgICAgICAgIHNldC4KKworICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjppc0luQmxvY2spOgorICAgICAgICAo
SlNDOjpERkc6OkJhc2ljQmxvY2s6OnJlbW92ZVByZWRlY2Vzc29yKToKKyAgICAgICAgKEpTQzo6
REZHOjpCYXNpY0Jsb2NrOjpmaXJzdE9yaWdpbk5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OkJhc2ljQmxvY2s6OmZpcnN0T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OmJlZ2luKToK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjplbmQpOgorICAgICAgICAoSlNDOjpERkc6
OkJhc2ljQmxvY2s6Om51bVN1Y2Nlc3NvcnMpOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxv
Y2s6OnN1Y2Nlc3Nvcik6CisgICAgICAgICogZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmxpdmVOb2Rlc0F0SGVhZCk6CisgICAgICAgICogZGZnL0RGR0Nv
bnN0YW50SG9pc3RpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NyaXRpY2FsRWRnZUJy
ZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNyaXRpY2FsRWRnZUJyZWFraW5n
UGhhc2U6OmJyZWFrQ3JpdGljYWxFZGdlKToKKyAgICAgICAgKiBkZmcvREZHRm9yQWxsS2lsbHMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxsZWRPcGVyYW5kcyk6CisgICAgICAgICog
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNy
ZWF0ZVByZUhlYWRlcik6CisgICAgICAgIChKU0M6OkRGRzo6TG9vcFByZUhlYWRlckNyZWF0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2U6
OnJ1bik6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29u
dmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpW
YWxpZGF0ZTo6dmFsaWRhdGVTU0EpOgorCiAyMDE1LTA4LTI2ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3Vz
bHkgcmV0YWluZWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAJKHJldmlzaW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwyMSArMTAyLDYgQEAgYm9v
bCBCYXNpY0Jsb2NrOjppc0luQmxvY2soTm9kZSogbXlOb2RlKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotTm9kZSogQmFzaWNCbG9jazo6Zmlyc3RPcmlnaW5Ob2RlKCkKLXsKLSAgICBmb3IgKE5v
ZGUqIG5vZGUgOiAqdGhpcykgewotICAgICAgICBpZiAobm9kZS0+b3JpZ2luLmlzU2V0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotTm9kZU9yaWdpbiBCYXNpY0Jsb2Nr
OjpmaXJzdE9yaWdpbigpCi17Ci0gICAgcmV0dXJuIGZpcnN0T3JpZ2luTm9kZSgpLT5vcmlnaW47
Ci19Ci0KIHZvaWQgQmFzaWNCbG9jazo6cmVtb3ZlUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByZWRlY2Vzc29ycy5zaXplKCk7
ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTAgKzE0MSw3IEBAIHN0cnVjdCBCYXNpY0Js
b2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICBCbG9ja05vZGVMaXN0OjppdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbm9kZXMuYmVnaW4oKTsgfQogICAgIEJsb2NrTm9kZUxp
c3Q6Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbm9kZXMuZW5kKCk7IH0KLSAgICAKLSAgICBO
b2RlKiBmaXJzdE9yaWdpbk5vZGUoKTsKLSAgICBOb2RlT3JpZ2luIGZpcnN0T3JpZ2luKCk7Ci0g
ICAgCisKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkgeyByZXR1cm4gdGVybWluYWwoKS0+
bnVtU3VjY2Vzc29ycygpOyB9CiAgICAgCiAgICAgQmFzaWNCbG9jayomIHN1Y2Nlc3Nvcih1bnNp
Z25lZCBpbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tYmluZWRM
aXZlbmVzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21iaW5lZExpdmVuZXNzLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBIYXNoU2V0PE5vZGUqPiBsaXZlTm9kZXNBdEhlYWQoR3JhcGgmIGdyCiAgICAg
CiAgICAgQXZhaWxhYmlsaXR5TWFwJiBhdmFpbGFiaWxpdHlNYXAgPSBibG9jay0+c3NhLT5hdmFp
bGFiaWxpdHlBdEhlYWQ7CiAgICAgZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoCi0g
ICAgICAgIGJsb2NrLT5maXJzdE9yaWdpbigpLmZvckV4aXQsCisgICAgICAgIGJsb2NrLT5hdCgw
KS0+b3JpZ2luLmZvckV4aXQsCiAgICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgewog
ICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwLmNsb3NlU3RhcnRpbmdXaXRoTG9jYWwoCiAgICAg
ICAgICAgICAgICAgcmVnLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEhvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgSGFzaE1hcDxGcm96ZW5WYWx1ZSosIE5vZGUqPiYgdmFsdWVzID0gdmFsdWVzRm9yKG5vZGUt
Pm9wKCkpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHZhbHVlcy5hZGQobm9k
ZS0+Y29uc3RhbnQoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiA9IE5vZGVPcmln
aW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiA9IG1fZ3JhcGguYmxv
Y2soMCktPmF0KDApLT5vcmlnaW47CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVwbGFjZW1lbnQocmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b0ZyZWUuYXBwZW5kKG5vZGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2Fs
RWRnZUJyZWFraW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODg5NzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRvbid0IGtub3cgaXRz
IGV4ZWN1dGlvbiBmcmVxdWVuY3kuCiAgICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydEJlZm9yZSgqc3VjY2Vzc29yLCBQTmFOKTsKICAgICAgICAgcGFkLT5hcHBl
bmROb2RlKAotICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsICgqc3VjY2Vzc29y
KS0+Zmlyc3RPcmlnaW4oKSwgT3BJbmZvKCpzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG1fZ3Jh
cGgsIFNwZWNOb25lLCBKdW1wLCAoKnN1Y2Nlc3NvciktPmF0KDApLT5vcmlnaW4sIE9wSW5mbygq
c3VjY2Vzc29yKSk7CiAgICAgICAgIHBhZC0+cHJlZGVjZXNzb3JzLmFwcGVuZChwcmVkZWNlc3Nv
cik7CiAgICAgICAgICgqc3VjY2Vzc29yKS0+cmVwbGFjZVByZWRlY2Vzc29yKHByZWRlY2Vzc29y
LCBwYWQpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRm9y
QWxsS2lsbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zv
ckFsbEtpbGxzLmgJKHJldmlzaW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRm9yQWxsS2lsbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMzMgKzU1LDE4IEBAIHZv
aWQgZm9yQWxsS2lsbGVkT3BlcmFuZHMoR3JhcGgmIGdyYXBoLCAKICAgICBDb2RlT3JpZ2luIGFm
dGVyID0gbm9kZUFmdGVyLT5vcmlnaW4uZm9yRXhpdDsKICAgICAKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYWxyZWFkeU5vdGVkOwotICAgIGlmICghIWFmdGVyKSB7Ci0gICAgICAgIC8vIElmIHdlIE1v
dkhpbnQgc29tZXRoaW5nIHRoYXQgaXMgbGl2ZSBhdCB0aGUgdGltZSwgdGhlbiB3ZSBraWxsIHRo
ZSBvbGQgdmFsdWUuCi0gICAgICAgIGlmIChub2RlQWZ0ZXItPmNvbnRhaW5zTW92SGludCgpKSB7
Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbm9kZUFmdGVyLT51bmxpbmtlZExv
Y2FsKCk7Ci0gICAgICAgICAgICBpZiAoZ3JhcGguaXNMaXZlSW5CeXRlY29kZShyZWcsIGFmdGVy
KSkgewotICAgICAgICAgICAgICAgIGZ1bmN0b3IocmVnKTsKLSAgICAgICAgICAgICAgICBhbHJl
YWR5Tm90ZWQgPSByZWc7Ci0gICAgICAgICAgICB9CisgICAgLy8gSWYgd2UgTW92SGludCBzb21l
dGhpbmcgdGhhdCBpcyBsaXZlIGF0IHRoZSB0aW1lLCB0aGVuIHdlIGtpbGwgdGhlIG9sZCB2YWx1
ZS4KKyAgICBpZiAobm9kZUFmdGVyLT5jb250YWluc01vdkhpbnQoKSkgeworICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVnID0gbm9kZUFmdGVyLT51bmxpbmtlZExvY2FsKCk7CisgICAgICAgIGlm
IChncmFwaC5pc0xpdmVJbkJ5dGVjb2RlKHJlZywgYWZ0ZXIpKSB7CisgICAgICAgICAgICBmdW5j
dG9yKHJlZyk7CisgICAgICAgICAgICBhbHJlYWR5Tm90ZWQgPSByZWc7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgaWYgKCFiZWZvcmUpIHsKLSAgICAgICAgaWYgKCFhZnRlcikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gVGhlIHRydWUgYmVmb3JlLW9yaWdpbiBpcyB0aGUg
b3JpZ2luIGF0IHByZWRlY2Vzc29ycyB0aGF0IGp1bXAgdG8gdXMuIEJ1dCB0aGVyZSBjYW4gYmUK
LSAgICAgICAgLy8gbWFueSBzdWNoIHByZWRlY2Vzc29ycyBhbmQgdGhleSB3aWxsIGxpa2VseSBh
bGwgaGF2ZSBhIGRpZmZlcmVudCBvcmlnaW4uIFNvLCBpdCdzIGJldHRlcgotICAgICAgICAvLyB0
byBkbyB0aGUgY29uc2VydmF0aXZlIHRoaW5nLgotICAgICAgICBncmFwaC5mb3JBbGxMb2NhbHNM
aXZlSW5CeXRlY29kZShhZnRlciwgZnVuY3Rvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCiAgICAgaWYgKGJlZm9yZSA9PSBhZnRlcikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IC8vIGJlZm9yZSBjb3VsZCBiZSB1bnNldCBldmVuIGlmIGFmdGVyIGlzLCBidXQgdGhlIG9wcG9z
aXRlIGNhbm5vdCBoYXBwZW4uCi0gICAgQVNTRVJUKCEhYWZ0ZXIpOwotICAgIAogICAgIC8vIEl0
J3MgZWFzaWVyIHRvIGRvIHRoaXMgaWYgdGhlIGlubGluZSBjYWxsIGZyYW1lcyBhcmUgdGhlIHNh
bWUuIFRoaXMgaXMgd2F5IGZhc3RlciB0aGFuIHRoZQogICAgIC8vIG90aGVyIGxvb3AsIGJlbG93
LgogICAgIGlmIChiZWZvcmUuaW5saW5lQ2FsbEZyYW1lID09IGFmdGVyLmlubGluZUNhbGxGcmFt
ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4ODk3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTksNyArOTk5LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghbV96ZXJvKSB7Ci0gICAgICAgICAg
ICBtX3plcm8gPSBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgwLCBOb2RlT3JpZ2luKCks
IGpzTnVtYmVyKDApKTsKKyAgICAgICAgICAgIG1femVybyA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dENvbnN0YW50KDAsIG1fZ3JhcGguYmxvY2soMCktPmF0KDApLT5vcmlnaW4sIGpzTnVtYmVyKDAp
KTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ncmFwaC5ibG9jaygwKSk7
CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgQmFzaWNC
bG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIERvbid0IGJvdGhlciB0
byBwcmVzZXJ2ZSBleGVjdXRpb24gZnJlcXVlbmNpZXMgZm9yIG5vdy4KICAgICBCYXNpY0Jsb2Nr
KiBwcmVIZWFkZXIgPSBpbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGJsb2NrLCBQTmFOKTsKICAg
ICBwcmVIZWFkZXItPmFwcGVuZE5vZGUoCi0gICAgICAgIGdyYXBoLCBTcGVjTm9uZSwgSnVtcCwg
YmxvY2stPmZpcnN0T3JpZ2luKCksIE9wSW5mbyhibG9jaykpOworICAgICAgICBncmFwaCwgU3Bl
Y05vbmUsIEp1bXAsIGJsb2NrLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oYmxvY2spKTsKICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4
IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVj
ZXNzb3JJbmRleF07CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8g
QSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9t
IGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0
aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZp
cnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4g
d2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVk
c05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5maXJzdE9yaWdpbigpLmV4aXRPSworICAg
ICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgwKS0+
b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAgICYmICFleGlzdGluZ1ByZUhlYWRlci0+dGVy
bWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRl
ciA9IHRydWU7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAko
cmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJs
b2NrLT5zdWNjZXNzb3Ioc3VjY2Vzc29ySW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5QXRIZWFkLm1lcmdlKGNhbGN1bGF0b3IubV9hdmFpbGFi
aWxpdHkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3ItPnNzYS0+YXZhaWxhYmlsaXR5
QXRIZWFkLnBydW5lQnlMaXZlbmVzcygKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgs
IHN1Y2Nlc3Nvci0+Zmlyc3RPcmlnaW4oKS5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIHN1Y2Nlc3Nvci0+YXQoMCktPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODg5NzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyB3
aXRoIHVzZWxlc3MgY29uc3RhbnRzIGV2ZXJ5d2hlcmUKICAgICAgICAgSGFzaE1hcDxGcm96ZW5W
YWx1ZSosIE5vZGUqPiBsYXp5TWFwcGluZzsKICAgICAgICAgaWYgKCFtX2JvdHRvbSkKLSAgICAg
ICAgICAgIG1fYm90dG9tID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoMCwgTm9kZU9y
aWdpbigpLCBqc051bWJlcigxOTI3KSk7CisgICAgICAgICAgICBtX2JvdHRvbSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydENvbnN0YW50KDAsIG1fZ3JhcGguYmxvY2soMCktPmF0KDApLT5vcmlnaW4s
IGpzTnVtYmVyKDE5MjcpKTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgbV9oZWFwID0gbV9oZWFw
QXRIZWFkW2Jsb2NrXTsKIApAQCAtMTYyMSw3ICsxNjIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBpZiAobV9oZWFwQXRIZWFkW2Jsb2NrXS5mb2xsb3cobG9jYXRpb24pKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIE5vZGUqIHBo
aU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwgTm9kZU9yaWdpbigpKTsK
KyAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNIZWFw
VG9wLCBQaGksIGJsb2NrLT5hdCgwKS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpKTsKICAgICAg
ICAgICAgICAgICBwaGlOb2RlLT5tZXJnZUZsYWdzKE5vZGVSZXN1bHRKUyk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHBoaU5vZGU7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MzgsNyArMTYzOCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFtX2hlYXBBdEhlYWRbYmxvY2tdLmdl
dEFsbG9jYXRpb24oaWRlbnRpZmllcikuaXNFc2NhcGVkQWxsb2NhdGlvbigpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5v
ZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwgTm9kZU9yaWdpbigpKTsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gbV9ncmFwaC5hZGROb2RlKFNwZWNIZWFwVG9w
LCBQaGksIGJsb2NrLT5hdCgwKS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpKTsKICAgICAgICAg
ICAgICAgICBwaGlOb2RlLT5tZXJnZUZsYWdzKE5vZGVSZXN1bHRKUyk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBoaU5vZGU7CiAgICAgICAgICAgICB9KTsKQEAgLTE2NjksNyArMTY2OSw5IEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlu
cyhsb2NhdGlvbi5iYXNlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydCgKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxvY2F0aW9uLmNyZWF0ZUhpbnQo
bV9ncmFwaCwgTm9kZU9yaWdpbigpLCBwaGlEZWYtPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5jcmVhdGVIaW50
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJsb2NrLT5hdCgwKS0+b3Jp
Z2luLndpdGhJbnZhbGlkRXhpdCgpLCBwaGlEZWYtPnZhbHVlKCkpKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAKQEAgLTE2ODAsNyArMTY4Miw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgTm9kZSogaWRlbnRpZmllciA9IGluZGV4VG9Ob2RlW3ZhcmlhYmxlLT5pbmRl
eCgpXTsKICAgICAgICAgICAgICAgICBtX2VzY2FwZWVUb01hdGVyaWFsaXphdGlvbi5hZGQoaWRl
bnRpZmllciwgcGhpRGVmLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBib29sIGNhbkV4aXQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSgwLCBOb2Rl
T3JpZ2luKCksIGNhbkV4aXQsIGF2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHks
IGlkZW50aWZpZXIsIHBoaURlZi0+dmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0T1NS
SGludHNGb3JVcGRhdGUoCisgICAgICAgICAgICAgICAgICAgIDAsIGJsb2NrLT5hdCgwKS0+b3Jp
Z2luLCBjYW5FeGl0LAorICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlDYWxjdWxhdG9y
Lm1fYXZhaWxhYmlsaXR5LCBpZGVudGlmaWVyLCBwaGlEZWYtPnZhbHVlKCkpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAodmVyYm9zZSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDE4ODk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNyArMzU4LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJBZGRpbmcgUGhpIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9
IG1fZ3JhcGguYWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBOb2RlT3JpZ2luKCkpOworICAgICAg
ICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBo
aSwgYmxvY2stPmF0KDApLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCkpOwogICAgICAgICAgICAg
ICAgIHBoaU5vZGUtPm1lcmdlRmxhZ3MocmVzdWx0Rm9yKGZvcm1hdCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBwaGlOb2RlOwogICAgICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxODg5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIFBoaSwgTm9kZU9yaWdpbigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3Rpb24oKSwgUGhpLCBibG9jay0+YXQoMCkt
Pm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSk7CiAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQg
Zm9ybWF0ID0gdmFyaWFibGUtPmZsdXNoRm9ybWF0KCk7CiAgICAgICAgICAgICAgICAgTm9kZUZs
YWdzIHJlc3VsdCA9IHJlc3VsdEZvcihmb3JtYXQpOwogICAgICAgICAgICAgICAgIHBoaU5vZGUt
Pm1lcmdlRmxhZ3MocmVzdWx0KTsKQEAgLTI1Miw5ICsyNTIsMTIgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IHBo
aURlZi0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICBwaGlJbnNlcnRpb25Qb2lu
dCwgU3BlY05vbmUsIE1vdkhpbnQsIE5vZGVPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAg
cGhpSW5zZXJ0aW9uUG9pbnQsIFNwZWNOb25lLCBNb3ZIaW50LCBibG9jay0+YXQoMCktPm9yaWdp
bi53aXRoSW52YWxpZEV4aXQoKSwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHZhcmlhYmxl
LT5sb2NhbCgpLm9mZnNldCgpKSwgcGhpRGVmLT52YWx1ZSgpLT5kZWZhdWx0RWRnZSgpKTsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJsb2NrLT5hdCgwKS0+b3JpZ2luLmV4aXRP
SykKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKHBoaUluc2VydGlv
blBvaW50LCBTcGVjTm9uZSwgRXhpdE9LLCBibG9jay0+YXQoMCktPm9yaWdpbik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTg4OTc5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
CiAKKyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPm9yaWdpbi5pc1NldCgp
KTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pc1NldCgpID09IG5vZGUtPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgISghbm9kZS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSAmJiBu
b2RlLT5vcmlnaW4uZXhpdE9LKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
KG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0T0sp
KTsKQEAgLTUyNiwyMCArNTI3LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZBTElEQVRFKChibG9jayksIGJsb2NrLT5w
aGlzLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIG5vZGVJ
bmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKSAm
JiAhYmxvY2stPmF0KG5vZGVJbmRleCktPm9yaWdpbi5mb3JFeGl0LmlzU2V0KCk7IG5vZGVJbmRl
eCsrKSB7IH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgVkFMSURBVEUoKGJsb2NrKSwgbm9k
ZUluZGV4IDwgYmxvY2stPnNpemUoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAo
OyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgrKykKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSgoYmxvY2stPmF0KG5vZGVJbmRleCkpLCBibG9jay0+YXQobm9kZUluZGV4KS0+
b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7CisKKyAgICAgICAgICAgIGJvb2wgZGlkU2VlRXhpdE9L
ID0gZmFsc2U7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUlu
ZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAg
ICAgICAgZGlkU2VlRXhpdE9LIHw9IG5vZGUtPm9yaWdpbi5leGl0T0s7CiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBQaGk6Ci0gICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPm9yaWdpbi5mb3JFeGl0Lmlz
U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBQaGkgY2Fubm90IGV4aXQsIGFuZCBpdCB3
b3VsZCBiZSB3cm9uZyB0byBob2lzdCBhbnl0aGluZyB0byB0aGUgUGhpIHRoYXQgY291bGQKKyAg
ICAgICAgICAgICAgICAgICAgLy8gZXhpdC4KKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
KG5vZGUpLCAhbm9kZS0+b3JpZ2luLmV4aXRPSyk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
SXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBleGl0T0sgYW55d2hlcmUgaW4gdGhlIGJsb2Nr
IGJlZm9yZSBhIFBoaS4gSXQncyBvbmx5CisgICAgICAgICAgICAgICAgICAgIC8vIE9LIHRvIGV4
aXQgYWZ0ZXIgYWxsIFBoaXMgYXJlIGRvbmUuCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KChub2RlKSwgIWRpZFNlZUV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOgo=
</data>
<flag name="review"
          id="285218"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>