<?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>144664</bug_id>
          
          <creation_ts>2015-05-05 22:36:56 -0700</creation_ts>
          <short_desc>Extend the SaneChain optimization to Contiguous arrays</short_desc>
          <delta_ts>2015-05-08 17:23:43 -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>528+ (Nightly 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>144665</dependson>
          <blocked>144668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092047</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-05 22:36:56 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093289</commentid>
    <comment_count>1</comment_count>
      <attachid>252745</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 13:42:03 -0700</bug_when>
    <thetext>Created attachment 252745
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093291</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 13:43:55 -0700</bug_when>
    <thetext>Attachment 252745 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093305</commentid>
    <comment_count>3</comment_count>
      <attachid>252745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-08 14:21:20 -0700</bug_when>
    <thetext>Comment on attachment 252745
the patch

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

r=me if bot issues are fixed / not caused by this patch.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        prototype chain is sain - i.e. has no indexed properties. Then we can just return

s/sain/sane/.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
&gt; +                if (node-&gt;arrayMode().isSaneChain()) {

You should put an assertion here like the 64-bit version:
    ASSERT(node-&gt;arrayMode().type() == Array::Contiguous);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093312</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 14:51:59 -0700</bug_when>
    <thetext>Looks like it&apos;s generally a good thing.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r183974)
&quot;FastHole&quot; at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r183974)

Collected 6 samples per benchmark/VM, with 6 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                  FastHole                                     
SunSpider:
   3d-cube                                            5.2812+-0.2683            5.2124+-0.1318          might be 1.0132x faster
   3d-morph                                           5.7376+-0.0701     ?      5.9680+-0.2872        ? might be 1.0401x slower
   3d-raytrace                                        6.6647+-0.5001     ?      6.9130+-0.4816        ? might be 1.0373x slower
   access-binary-trees                                2.3189+-0.0939     ?      2.3836+-0.1692        ? might be 1.0279x slower
   access-fannkuch                                    6.0336+-0.0747            5.9828+-0.0828        
   access-nbody                                       3.1497+-0.4974            2.9816+-0.0929          might be 1.0563x faster
   access-nsieve                                      3.5473+-0.3499            3.2230+-0.0828          might be 1.1006x faster
   bitops-3bit-bits-in-byte                           1.5710+-0.0281     ?      1.7602+-0.4588        ? might be 1.1204x slower
   bitops-bits-in-byte                                3.3962+-0.0580     ?      3.5341+-0.2448        ? might be 1.0406x slower
   bitops-bitwise-and                                 2.1101+-0.0434     ?      2.1263+-0.0602        ?
   bitops-nsieve-bits                                 3.2057+-0.0697     ?      3.6160+-0.5179        ? might be 1.1280x slower
   controlflow-recursive                              2.3253+-0.0869     ?      2.3722+-0.2167        ? might be 1.0202x slower
   crypto-aes                                         4.4043+-0.1044     ?      4.6892+-0.4824        ? might be 1.0647x slower
   crypto-md5                                         2.7143+-0.0514     ?      2.8308+-0.1794        ? might be 1.0429x slower
   crypto-sha1                                        2.7932+-0.1797     ?      2.8943+-0.2345        ? might be 1.0362x slower
   date-format-tofte                                  9.4850+-0.2104     ?      9.7496+-0.7246        ? might be 1.0279x slower
   date-format-xparb                                  5.8873+-0.3732     ?      6.0942+-0.1776        ? might be 1.0351x slower
   math-cordic                                        3.1794+-0.1166            3.1363+-0.0660          might be 1.0137x faster
   math-partial-sums                                  5.4259+-0.4007            5.3883+-0.1999        
   math-spectral-norm                                 1.9079+-0.0318     ?      2.1150+-0.2277        ? might be 1.1086x slower
   regexp-dna                                         7.7579+-1.2110            7.5813+-1.2213          might be 1.0233x faster
   string-base64                                      4.9657+-0.7743     ?      5.5069+-1.0534        ? might be 1.1090x slower
   string-fasta                                       6.8099+-0.3306     ?      7.0229+-0.8074        ? might be 1.0313x slower
   string-tagcloud                                    9.4453+-0.5153            9.3300+-0.6035          might be 1.0124x faster
   string-unpack-code                                20.8247+-1.5063           19.4271+-0.6138          might be 1.0719x faster
   string-validate-input                              4.9461+-0.2229     ?      5.0068+-0.2815        ? might be 1.0123x slower

   &lt;arithmetic&gt;                                       5.2265+-0.0695     ?      5.2633+-0.0976        ? might be 1.0070x slower

                                                        TipOfTree                  FastHole                                     
LongSpider:
   3d-cube                                          886.5517+-12.7342         885.5944+-10.1133       
   3d-morph                                        1538.5567+-13.9876    ?   1561.3091+-51.5231       ? might be 1.0148x slower
   3d-raytrace                                      743.8158+-9.5285          731.4122+-9.2918          might be 1.0170x faster
   access-binary-trees                             1032.4877+-9.7242         1019.8070+-7.4377          might be 1.0124x faster
   access-fannkuch                                  336.2548+-7.5050          327.6305+-12.6180         might be 1.0263x faster
   access-nbody                                     612.1234+-5.4300     ?    625.4064+-12.3077       ? might be 1.0217x slower
   access-nsieve                                    481.8783+-8.9474          481.3267+-2.8794        
   bitops-3bit-bits-in-byte                          44.6098+-1.1029           43.8759+-0.3759          might be 1.0167x faster
   bitops-bits-in-byte                              103.1358+-4.2807          102.2306+-2.4113        
   bitops-nsieve-bits                               423.9563+-6.1506          421.6956+-2.7490        
   controlflow-recursive                            486.5420+-12.5877    ?    490.9889+-11.9423       ?
   crypto-aes                                       712.9815+-8.1147          703.6635+-9.1228          might be 1.0132x faster
   crypto-md5                                       532.6786+-11.4427         521.8815+-7.4464          might be 1.0207x faster
   crypto-sha1                                      601.2180+-6.9767          596.8802+-7.9371        
   date-format-tofte                                761.5969+-16.4127         750.3714+-12.1484         might be 1.0150x faster
   date-format-xparb                                828.1840+-47.2601         827.9938+-8.1830        
   hash-map                                         169.4223+-3.2059     ?    172.6432+-2.6364        ? might be 1.0190x slower
   math-cordic                                      588.4110+-3.6149     ?    599.4486+-13.4657       ? might be 1.0188x slower
   math-partial-sums                                510.0747+-7.6213     ?    513.5745+-7.7166        ?
   math-spectral-norm                               567.4313+-7.0898     ?    569.8087+-7.0759        ?
   string-base64                                    385.9593+-4.1599          374.3436+-8.2060          might be 1.0310x faster
   string-fasta                                     433.2383+-5.8526     ?    439.1142+-7.3146        ? might be 1.0136x slower
   string-tagcloud                                  198.4856+-4.0301          197.2756+-3.4962        

   &lt;geometric&gt;                                      454.8903+-1.8667          453.4591+-2.0821          might be 1.0032x faster

                                                        TipOfTree                  FastHole                                     
V8Spider:
   crypto                                            57.6836+-1.6892           56.1511+-1.5238          might be 1.0273x faster
   deltablue                                         98.5308+-3.6727           97.1455+-3.3735          might be 1.0143x faster
   earley-boyer                                      45.3531+-1.3586           44.4968+-0.5015          might be 1.0192x faster
   raytrace                                          41.4369+-2.3539     ?     42.7134+-2.8075        ? might be 1.0308x slower
   regexp                                            82.0898+-2.7959     ?     83.0511+-2.4510        ? might be 1.0117x slower
   richards                                          79.1196+-1.3051     ?     79.3960+-3.2864        ?
   splay                                             40.5620+-2.1263           39.2979+-2.4518          might be 1.0322x faster

   &lt;geometric&gt;                                       60.0151+-0.8614           59.6119+-0.9140          might be 1.0068x faster

                                                        TipOfTree                  FastHole                                     
Octane:
   encrypt                                           0.20452+-0.00076    ?     0.20608+-0.00353       ?
   decrypt                                           3.61449+-0.05657          3.55439+-0.00771         might be 1.0169x faster
   deltablue                                x2       0.20817+-0.00276          0.20568+-0.00222         might be 1.0121x faster
   earley                                            0.49751+-0.00495    ?     0.50628+-0.00536       ? might be 1.0176x slower
   boyer                                             6.65453+-0.04412    ?     6.65765+-0.02827       ?
   navier-stokes                            x2       5.21234+-0.04700    ?     5.22844+-0.05116       ?
   raytrace                                 x2       1.28244+-0.04659    ?     1.28562+-0.10758       ?
   richards                                 x2       0.12612+-0.00555          0.12232+-0.00124         might be 1.0311x faster
   splay                                    x2       0.39853+-0.00245          0.39639+-0.00265       
   regexp                                   x2      32.20924+-0.24901         32.00960+-0.21172       
   pdfjs                                    x2      45.33234+-0.46726         45.32037+-0.47136       
   mandreel                                 x2      49.92237+-0.53478    ?    50.15351+-0.49817       ?
   gbemu                                    x2      41.94737+-0.53965    ?    42.84097+-2.76851       ? might be 1.0213x slower
   closure                                           0.56237+-0.00775    ?     0.56711+-0.00894       ?
   jquery                                            7.09744+-0.03079    ?     7.17652+-0.09094       ? might be 1.0111x slower
   box2d                                    x2      12.43604+-0.08078    ?    12.54741+-0.10863       ?
   zlib                                     x2     384.12149+-17.29956   ?   396.58931+-2.92146       ? might be 1.0325x slower
   typescript                               x2     851.50269+-4.54014    ^   825.68233+-16.92565      ^ definitely 1.0313x faster

   &lt;geometric&gt;                                       6.74360+-0.03223          6.74321+-0.06129         might be 1.0001x faster

                                                        TipOfTree                  FastHole                                     
Kraken:
   ai-astar                                          277.733+-6.890      ?     281.228+-4.793         ? might be 1.0126x slower
   audio-beat-detection                              107.300+-1.348            107.125+-1.570         
   audio-dft                                         121.617+-2.843            120.519+-3.760         
   audio-fft                                          87.233+-2.773      ^      80.666+-1.712         ^ definitely 1.0814x faster
   audio-oscillator                                   77.518+-1.948      ?      80.368+-3.436         ? might be 1.0368x slower
   imaging-darkroom                                  106.062+-2.323      ?     106.232+-3.283         ?
   imaging-desaturate                                 64.350+-1.457      ?      64.658+-2.291         ?
   imaging-gaussian-blur                             114.685+-1.581      ^     110.504+-1.556         ^ definitely 1.0378x faster
   json-parse-financial                               47.179+-0.886             45.144+-1.812           might be 1.0451x faster
   json-stringify-tinderbox                           31.937+-0.454      ?      32.611+-1.571         ? might be 1.0211x slower
   stanford-crypto-aes                                60.437+-2.909             60.340+-1.424         
   stanford-crypto-ccm                                60.775+-2.839      ?      61.861+-3.809         ? might be 1.0179x slower
   stanford-crypto-pbkdf2                            138.306+-3.919            136.682+-1.325           might be 1.0119x faster
   stanford-crypto-sha256-iterative                   52.700+-1.299             52.519+-2.063         

   &lt;arithmetic&gt;                                       96.274+-0.657             95.747+-0.745           might be 1.0055x faster

                                                        TipOfTree                  FastHole                                     
JSRegress:
   abs-boolean                                        2.6643+-0.0525     ?      2.9160+-0.4212        ? might be 1.0945x slower
   adapt-to-double-divide                            16.8825+-0.2034     ?     16.9220+-0.4890        ?
   aliased-arguments-getbyval                         1.2445+-0.0682     ?      1.3144+-0.0694        ? might be 1.0562x slower
   allocate-big-object                                2.8730+-0.1780     ?      2.9056+-0.0865        ? might be 1.0113x slower
   arguments-named-and-reflective                    12.2133+-0.4679     ?     12.6496+-1.1829        ? might be 1.0357x slower
   arguments-out-of-bounds                           15.1180+-0.7521           15.0031+-0.3552        
   arguments-strict-mode                             10.6135+-0.2027     ?     11.7751+-1.2812        ? might be 1.1094x slower
   arguments                                          9.6121+-0.6681     ?     10.2111+-1.2600        ? might be 1.0623x slower
   arity-mismatch-inlining                            0.8381+-0.0125     !      0.8769+-0.0254        ! definitely 1.0463x slower
   array-access-polymorphic-structure                 6.7638+-0.1738     ?      7.6043+-0.9670        ? might be 1.1243x slower
   array-nonarray-polymorhpic-access                 35.8663+-3.2219           34.0557+-1.5155          might be 1.0532x faster
   array-prototype-every                             88.8044+-1.6736           86.5129+-1.3507          might be 1.0265x faster
   array-prototype-forEach                           84.8769+-1.3855     ?     85.6665+-1.8398        ?
   array-prototype-map                               96.1570+-2.0365           95.0114+-2.8756          might be 1.0121x faster
   array-prototype-some                              90.1528+-2.0217           88.7385+-1.4294          might be 1.0159x faster
   array-splice-contiguous                           43.8220+-1.8186           42.8987+-2.3541          might be 1.0215x faster
   array-with-double-add                              4.2668+-0.3158            4.2528+-0.3433        
   array-with-double-increment                        3.2118+-0.0358     ?      3.2736+-0.0863        ? might be 1.0193x slower
   array-with-double-mul-add                          5.1140+-0.2777            5.0655+-0.1642        
   array-with-double-sum                              3.2823+-0.0670     ?      3.3741+-0.1596        ? might be 1.0280x slower
   array-with-int32-add-sub                           6.8674+-0.1768            6.7600+-0.0407          might be 1.0159x faster
   array-with-int32-or-double-sum                     3.7378+-0.5220            3.5524+-0.3992          might be 1.0522x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     34.3365+-1.5471           34.0485+-2.6689        
   ArrayBuffer-DataView-alloc-long-lived             15.2573+-2.2570           13.9245+-0.7520          might be 1.0957x faster
   ArrayBuffer-Int32Array-byteOffset                  3.9787+-0.5112     ?      4.0328+-0.4273        ? might be 1.0136x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     34.1185+-1.7896           33.0337+-1.4531          might be 1.0328x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.3879+-1.4807     ?     24.5070+-2.4121        ? might be 1.0479x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.1728+-1.7257           13.2374+-0.7098          might be 1.0707x faster
   ArrayBuffer-Int8Array-alloc                       10.7344+-0.3994     ?     11.2261+-1.1378        ? might be 1.0458x slower
   asmjs_bool_bug                                     7.7459+-0.1118     ?      7.8767+-0.1997        ? might be 1.0169x slower
   assign-custom-setter-polymorphic                   3.1691+-0.2136            3.1641+-0.1362        
   assign-custom-setter                               4.3257+-0.3082            4.2178+-0.2711          might be 1.0256x faster
   basic-set                                          8.7350+-0.3208     ?      8.8820+-0.6111        ? might be 1.0168x slower
   big-int-mul                                        4.0164+-0.0588     ?      4.1921+-0.4192        ? might be 1.0438x slower
   boolean-test                                       2.9736+-0.0328     ?      3.1419+-0.1652        ? might be 1.0566x slower
   branch-fold                                        3.7495+-0.0740     ?      3.7622+-0.0383        ?
   branch-on-string-as-boolean                       19.8833+-1.6493           19.7284+-1.7549        
   by-val-generic                                     8.6652+-0.9346            8.0686+-0.1802          might be 1.0739x faster
   call-spread-apply                                 31.7810+-1.1540     ?     33.5827+-1.9784        ? might be 1.0567x slower
   call-spread-call                                  28.9175+-2.0304     ?     30.0522+-1.8905        ? might be 1.0392x slower
   captured-assignments                               0.4532+-0.0242     ?      0.4537+-0.0176        ?
   cast-int-to-double                                 5.2850+-0.1761     ?      5.3340+-0.2236        ?
   cell-argument                                      8.4861+-0.1868     ?      8.5749+-0.2888        ? might be 1.0105x slower
   cfg-simplify                                       2.7828+-0.0424     ?      2.8395+-0.0571        ? might be 1.0204x slower
   chain-getter-access                                9.0497+-0.1241     ?      9.2186+-0.1639        ? might be 1.0187x slower
   cmpeq-obj-to-obj-other                            11.9196+-1.4371           11.5873+-0.7991          might be 1.0287x faster
   constant-test                                      4.9178+-0.0382     ?      5.0148+-0.1286        ? might be 1.0197x slower
   create-lots-of-functions                          11.8718+-0.1940     ?     11.9331+-0.2901        ?
   DataView-custom-properties                        39.4846+-1.7661           38.9692+-2.5997          might be 1.0132x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.5091+-0.0339     ?      0.5580+-0.0587        ? might be 1.0962x slower
   delay-tear-off-arguments-strictmode               14.0257+-0.2256     ?     14.4808+-1.0242        ? might be 1.0324x slower
   deltablue-varargs                                205.3045+-3.6575     ?    205.8305+-3.6611        ?
   destructuring-arguments                           17.2991+-0.4101           17.2809+-0.9955        
   destructuring-swap                                 4.9684+-0.0835     ?      5.0115+-0.0687        ?
   direct-arguments-getbyval                          1.2197+-0.0382     ?      1.2938+-0.0557        ? might be 1.0608x slower
   div-boolean-double                                 5.3460+-0.2893            5.2376+-0.0384          might be 1.0207x faster
   div-boolean                                        7.8222+-0.0862            7.8215+-0.0718        
   double-get-by-val-out-of-bounds                    4.7344+-0.2960            4.6451+-0.2752          might be 1.0192x faster
   double-pollution-getbyval                          8.9271+-0.1148     ?      8.9495+-0.1682        ?
   double-pollution-putbyoffset                       4.2721+-0.0426     ?      4.3377+-0.0750        ? might be 1.0154x slower
   double-to-int32-typed-array-no-inline              2.4988+-0.6160            2.3348+-0.1022          might be 1.0702x faster
   double-to-int32-typed-array                        1.9663+-0.1271     ?      1.9956+-0.0307        ? might be 1.0149x slower
   double-to-uint32-typed-array-no-inline             2.2759+-0.0451     ?      2.3219+-0.0393        ? might be 1.0202x slower
   double-to-uint32-typed-array                       2.0630+-0.0582            2.0611+-0.0520        
   elidable-new-object-dag                           43.4476+-1.6092           43.3690+-1.4232        
   elidable-new-object-roflcopter                    49.1507+-1.7778           48.1110+-1.8796          might be 1.0216x faster
   elidable-new-object-then-call                     40.3820+-2.4780           39.7793+-0.7652          might be 1.0152x faster
   elidable-new-object-tree                          45.7240+-1.4841     ?     46.1018+-2.2627        ?
   empty-string-plus-int                              5.5140+-0.1344     ?      5.6119+-0.2277        ? might be 1.0178x slower
   emscripten-cube2hash                              38.7788+-1.2896     ?     38.8230+-0.5783        ?
   exit-length-on-plain-object                       15.5190+-2.0869           13.9537+-0.2872          might be 1.1122x faster
   external-arguments-getbyval                        1.2475+-0.0756     ?      1.3078+-0.0503        ? might be 1.0483x slower
   external-arguments-putbyval                        2.3228+-0.0831            2.3091+-0.0745        
   fixed-typed-array-storage-var-index                1.2190+-0.0249     ?      1.2456+-0.0180        ? might be 1.0219x slower
   fixed-typed-array-storage                          1.0036+-0.1546            0.8942+-0.0372          might be 1.1224x faster
   Float32Array-matrix-mult                           4.5668+-0.1322     ^      4.3605+-0.0662        ^ definitely 1.0473x faster
   Float32Array-to-Float64Array-set                  59.7057+-6.8089           54.7078+-2.0463          might be 1.0914x faster
   Float64Array-alloc-long-lived                     69.3991+-1.0988           69.2076+-1.9770        
   Float64Array-to-Int16Array-set                    70.9117+-0.7483     ?     71.7356+-1.8274        ? might be 1.0116x slower
   fold-double-to-int                                13.4793+-0.1475     ?     13.4929+-0.1670        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.9033+-1.2298     ?     11.0312+-0.9495        ? might be 1.0117x slower
   fold-get-by-id-to-multi-get-by-offset             10.4245+-0.9017            9.6807+-1.0550          might be 1.0768x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.4041+-0.6854     ?      9.0583+-0.8664        ? might be 1.0778x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.7131+-0.8259     ?      9.7189+-0.5901        ? might be 1.1154x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5273+-1.1975     ?     10.1335+-1.7329        ? might be 1.0636x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.2468+-1.0754     ^      4.9554+-0.5467        ^ definitely 1.4624x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.7531+-0.3842     ?     10.0218+-0.5917        ? might be 1.0275x slower
   fold-put-by-id-to-multi-put-by-offset              9.6455+-1.0131     ?     10.0453+-0.9719        ? might be 1.0414x slower
   fold-put-structure                                 7.1434+-0.2634            5.3588+-1.6687          might be 1.3330x faster
   for-of-iterate-array-entries                       4.6768+-0.0844     ?      4.8007+-0.1710        ? might be 1.0265x slower
   for-of-iterate-array-keys                          3.8124+-0.1212     ?      3.8233+-0.0800        ?
   for-of-iterate-array-values                        3.7526+-0.1267            3.7173+-0.0675        
   fround                                            21.3158+-0.7002     ?     21.6998+-1.0226        ? might be 1.0180x slower
   ftl-library-inlining-dataview                     68.3655+-1.9799     ?     69.9019+-2.7712        ? might be 1.0225x slower
   ftl-library-inlining                              80.8171+-21.1343          73.3957+-16.9982         might be 1.1011x faster
   function-dot-apply                                 2.0991+-0.4566            2.0380+-0.0807          might be 1.0300x faster
   function-test                                      2.8458+-0.0344     ?      3.0446+-0.3379        ? might be 1.0698x slower
   function-with-eval                               112.2368+-10.3991         106.0115+-2.9815          might be 1.0587x faster
   gcse-poly-get-less-obvious                        20.2879+-1.5850           18.3787+-0.5086          might be 1.1039x faster
   gcse-poly-get                                     21.3638+-2.3085           20.9547+-1.2060          might be 1.0195x faster
   gcse                                               4.3761+-0.1640            4.3349+-0.0384        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7041+-0.0410     ?      2.7731+-0.1131        ? might be 1.0255x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1178+-0.1982     ?      6.1341+-0.1607        ?
   get-by-id-chain-from-try-block                     7.2231+-1.1900     ?      7.2941+-1.1972        ?
   get-by-id-check-structure-elimination              5.2725+-0.3272            5.1291+-0.0621          might be 1.0280x faster
   get-by-id-proto-or-self                           17.8273+-0.6533     ?     19.8591+-1.4608        ? might be 1.1140x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.1631+-0.0623     ?      3.2471+-0.0713        ? might be 1.0266x slower
   get-by-id-self-or-proto                           17.1776+-0.2641     !     20.3650+-1.6087        ! definitely 1.1856x slower
   get-by-val-out-of-bounds                           4.3833+-0.1246            4.3491+-0.0433        
   get_callee_monomorphic                             2.8569+-0.1142     ?      2.9219+-0.1199        ? might be 1.0227x slower
   get_callee_polymorphic                             3.6639+-0.0830     ?      4.0583+-0.6224        ? might be 1.1077x slower
   getter-no-activation                               5.0000+-0.2662     ?      5.1982+-0.3702        ? might be 1.0396x slower
   getter-richards                                  129.4320+-7.2038          122.4571+-5.9945          might be 1.0570x faster
   getter                                             6.0876+-0.6888     ?      6.3138+-0.7070        ? might be 1.0372x slower
   global-var-const-infer-fire-from-opt               0.8805+-0.0331     ?      0.9978+-0.1911        ? might be 1.1331x slower
   global-var-const-infer                             0.8845+-0.0873            0.8528+-0.0883          might be 1.0372x faster
   HashMap-put-get-iterate-keys                      31.2319+-2.4139           30.4349+-1.4695          might be 1.0262x faster
   HashMap-put-get-iterate                           30.1729+-1.4593     ?     30.5107+-0.9377        ? might be 1.0112x slower
   HashMap-string-put-get-iterate                    29.2257+-0.5539           28.2772+-1.4189          might be 1.0335x faster
   hoist-make-rope                                   12.2419+-0.5134           12.1171+-0.7255          might be 1.0103x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.1245+-0.1333     ?      5.1796+-0.3146        ? might be 1.0108x slower
   hoist-poly-check-structure                         3.7841+-0.2725            3.6197+-0.0305          might be 1.0454x faster
   imul-double-only                                   9.0773+-0.4279            8.8487+-0.2048          might be 1.0258x faster
   imul-int-only                                     10.0691+-0.7132     ?     10.1617+-0.9088        ?
   imul-mixed                                         8.3997+-0.3137            8.2845+-0.0819          might be 1.0139x faster
   in-four-cases                                     20.4937+-0.2373     ?     21.9956+-1.3247        ? might be 1.0733x slower
   in-one-case-false                                 10.0572+-0.2819     ?     10.5870+-0.6373        ? might be 1.0527x slower
   in-one-case-true                                  10.3451+-0.4538           10.3251+-0.2669        
   in-two-cases                                      10.8402+-0.1889           10.7937+-0.2768        
   indexed-properties-in-objects                      2.9216+-0.0278     !      3.1145+-0.0417        ! definitely 1.0660x slower
   infer-closure-const-then-mov-no-inline             4.1748+-0.3933            3.9932+-0.0683          might be 1.0455x faster
   infer-closure-const-then-mov                      19.8339+-0.4226     ?     20.4564+-0.8156        ? might be 1.0314x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.0970+-0.2284     ?     11.1483+-0.1091        ?
   infer-closure-const-then-put-to-scope             22.5988+-0.8481           22.2388+-1.5324          might be 1.0162x faster
   infer-closure-const-then-reenter-no-inline   
                                                     50.0051+-2.1959           49.4659+-1.3655          might be 1.0109x faster
   infer-closure-const-then-reenter                  22.5854+-1.2979     ?     22.9608+-2.2032        ? might be 1.0166x slower
   infer-constant-global-property                    31.5500+-1.7633           30.4053+-0.9345          might be 1.0376x faster
   infer-constant-property                            2.7124+-0.0441     ?      2.7769+-0.1687        ? might be 1.0238x slower
   infer-one-time-closure-ten-vars                   13.3175+-1.4873           12.6936+-0.2137          might be 1.0492x faster
   infer-one-time-closure-two-vars                   12.6735+-0.8091           12.1523+-0.3145          might be 1.0429x faster
   infer-one-time-closure                            12.5562+-1.2768     ?     12.6265+-1.5760        ?
   infer-one-time-deep-closure                       21.8801+-1.4416           21.3639+-0.7944          might be 1.0242x faster
   inline-arguments-access                            4.6288+-0.3815            4.4712+-0.0752          might be 1.0353x faster
   inline-arguments-aliased-access                    4.5828+-0.1476     ?      4.6545+-0.2328        ? might be 1.0157x slower
   inline-arguments-local-escape                      4.5464+-0.1902     ?      4.6847+-0.2920        ? might be 1.0304x slower
   inline-get-scoped-var                              4.8466+-0.2389     ?      5.0188+-0.3726        ? might be 1.0355x slower
   inlined-put-by-id-transition                      11.0127+-0.6115     ?     11.6477+-0.5461        ? might be 1.0577x slower
   int-or-other-abs-then-get-by-val                   4.8507+-0.0967            4.8084+-0.0193        
   int-or-other-abs-zero-then-get-by-val             17.4871+-1.0148           16.7086+-0.7476          might be 1.0466x faster
   int-or-other-add-then-get-by-val                   3.9434+-0.0455     !      4.2261+-0.0662        ! definitely 1.0717x slower
   int-or-other-add                                   5.2202+-0.0285     ?      5.4118+-0.2826        ? might be 1.0367x slower
   int-or-other-div-then-get-by-val                   4.1502+-0.0564     ?      4.3867+-0.3444        ? might be 1.0570x slower
   int-or-other-max-then-get-by-val                   4.1313+-0.0868     ?      4.3503+-0.4690        ? might be 1.0530x slower
   int-or-other-min-then-get-by-val                   4.3153+-0.4130            4.1956+-0.0835          might be 1.0285x faster
   int-or-other-mod-then-get-by-val                   3.8097+-0.1061     ?      3.9143+-0.2898        ? might be 1.0275x slower
   int-or-other-mul-then-get-by-val                   3.6285+-0.0572     ?      3.6978+-0.0578        ? might be 1.0191x slower
   int-or-other-neg-then-get-by-val                   4.6301+-0.0376     ?      4.7583+-0.1560        ? might be 1.0277x slower
   int-or-other-neg-zero-then-get-by-val             17.3756+-1.3783     ?     17.6736+-1.4224        ? might be 1.0172x slower
   int-or-other-sub-then-get-by-val                   4.2340+-0.1350     !      4.4148+-0.0424        ! definitely 1.0427x slower
   int-or-other-sub                                   3.4330+-0.1288     ?      3.5271+-0.3317        ? might be 1.0274x slower
   int-overflow-local                                 4.3397+-0.0946            4.3333+-0.0164        
   Int16Array-alloc-long-lived                       49.4464+-1.5996     ?     50.0636+-1.9995        ? might be 1.0125x slower
   Int16Array-bubble-sort-with-byteLength            20.1635+-0.5847     ?     20.2223+-0.7903        ?
   Int16Array-bubble-sort                            19.9209+-0.3736     ?     20.2605+-1.1657        ? might be 1.0170x slower
   Int16Array-load-int-mul                            1.5418+-0.1748     ?      1.5642+-0.0722        ? might be 1.0145x slower
   Int16Array-to-Int32Array-set                      54.1397+-1.8013     !     59.2730+-1.5194        ! definitely 1.0948x slower
   Int32Array-alloc-large                            24.1744+-0.9980           23.8973+-1.1417          might be 1.0116x faster
   Int32Array-alloc-long-lived                       54.5943+-1.5068           54.4823+-2.0656        
   Int32Array-alloc                                   3.6146+-0.6174            3.3935+-0.2070          might be 1.0652x faster
   Int32Array-Int8Array-view-alloc                    7.2155+-0.8545     ?      7.3751+-0.9135        ? might be 1.0221x slower
   int52-spill                                        6.5370+-0.2507            6.3116+-0.5204          might be 1.0357x faster
   Int8Array-alloc-long-lived                        44.4274+-1.8724     ?     44.5386+-1.7007        ?
   Int8Array-load-with-byteLength                     3.6375+-0.5621            3.3796+-0.0916          might be 1.0763x faster
   Int8Array-load                                     3.3700+-0.0740     ?      3.3855+-0.0569        ?
   integer-divide                                    11.4467+-0.8384           11.2923+-0.8176          might be 1.0137x faster
   integer-modulo                                     2.0424+-0.0782     ?      2.1143+-0.2302        ? might be 1.0352x slower
   is-boolean-fold-tricky                             4.5043+-0.0767     ?      4.6840+-0.3596        ? might be 1.0399x slower
   is-boolean-fold                                    2.8431+-0.0334     ?      3.0227+-0.3621        ? might be 1.0632x slower
   is-function-fold-tricky-internal-function   
                                                     11.8937+-0.0681     ?     12.2258+-0.3493        ? might be 1.0279x slower
   is-function-fold-tricky                            4.5195+-0.0676     ?      4.6683+-0.1115        ? might be 1.0329x slower
   is-function-fold                                   2.9369+-0.1018     ?      2.9974+-0.2403        ? might be 1.0206x slower
   is-number-fold-tricky                              4.4460+-0.0623     ?      4.5118+-0.0659        ? might be 1.0148x slower
   is-number-fold                                     2.9497+-0.3083            2.8826+-0.0356          might be 1.0233x faster
   is-object-or-null-fold-functions                   2.9167+-0.0702     ?      3.0922+-0.1851        ? might be 1.0602x slower
   is-object-or-null-fold-less-tricky                 4.8330+-0.5553            4.5545+-0.0689          might be 1.0612x faster
   is-object-or-null-fold-tricky                      6.6665+-0.1074            6.6049+-0.0434        
   is-object-or-null-fold                             2.9925+-0.3228     ?      3.0737+-0.3556        ? might be 1.0271x slower
   is-object-or-null-trickier-function                4.6130+-0.0759     ?      4.8619+-0.5748        ? might be 1.0539x slower
   is-object-or-null-trickier-internal-function   
                                                     12.9263+-0.3715     ?     12.9760+-1.1254        ?
   is-object-or-null-tricky-function                  4.6447+-0.1265     ?      4.8884+-0.5461        ? might be 1.0525x slower
   is-object-or-null-tricky-internal-function   
                                                      9.2701+-0.1388            9.2012+-0.0231        
   is-string-fold-tricky                              4.5020+-0.1517     ?      4.7519+-0.4584        ? might be 1.0555x slower
   is-string-fold                                     2.9997+-0.3489            2.8867+-0.0604          might be 1.0392x faster
   is-undefined-fold-tricky                           3.8317+-0.1343            3.8061+-0.1214        
   is-undefined-fold                                  2.8668+-0.0916     ?      3.0512+-0.3365        ? might be 1.0643x slower
   large-int-captured                                 4.6117+-0.0521     ?      4.6464+-0.1045        ?
   large-int-neg                                     17.0293+-1.5119           16.5405+-1.2348          might be 1.0295x faster
   large-int                                         15.3328+-0.8340     ?     16.0042+-2.0290        ? might be 1.0438x slower
   logical-not                                        4.3886+-0.0748     ?      4.5657+-0.1720        ? might be 1.0403x slower
   lots-of-fields                                    13.4283+-0.5703     ?     13.7754+-1.2094        ? might be 1.0259x slower
   make-indexed-storage                               3.1678+-0.4067     ?      3.1831+-0.1711        ?
   make-rope-cse                                      5.1233+-0.4200            5.0294+-0.4519          might be 1.0187x faster
   marsaglia-larger-ints                             36.9231+-0.8562           36.3250+-1.0104          might be 1.0165x faster
   marsaglia-osr-entry                               23.3869+-1.1528     ?     23.6042+-0.4834        ?
   max-boolean                                        2.5312+-0.0470     ?      2.8295+-0.3949        ? might be 1.1178x slower
   method-on-number                                  16.6918+-0.3050     ?     16.8512+-0.2933        ?
   min-boolean                                        2.5570+-0.0650            2.5421+-0.0991        
   minus-boolean-double                               3.2469+-0.1940     ?      3.3434+-0.3943        ? might be 1.0297x slower
   minus-boolean                                      2.4069+-0.1682     ?      2.4768+-0.1862        ? might be 1.0290x slower
   misc-strict-eq                                    38.4521+-3.5720     ?     39.2409+-1.4447        ? might be 1.0205x slower
   mod-boolean-double                                10.9725+-0.2162     ?     11.0478+-0.1943        ?
   mod-boolean                                        7.8900+-0.1227     ?      8.0498+-0.2223        ? might be 1.0202x slower
   mul-boolean-double                                 3.7181+-0.0771     ?      3.7622+-0.0736        ? might be 1.0119x slower
   mul-boolean                                        3.0583+-0.3604            2.8832+-0.0606          might be 1.0607x faster
   neg-boolean                                        3.2148+-0.1214     ?      3.3069+-0.2021        ? might be 1.0287x slower
   negative-zero-divide                               0.3905+-0.0444            0.3722+-0.0423          might be 1.0491x faster
   negative-zero-modulo                               0.3585+-0.0085     ?      0.3690+-0.0327        ? might be 1.0293x slower
   negative-zero-negate                               0.3228+-0.0232     ?      0.3446+-0.0107        ? might be 1.0674x slower
   nested-function-parsing                           38.9175+-1.2030           37.8525+-0.2279          might be 1.0281x faster
   new-array-buffer-dead                            112.6110+-2.6108     ?    114.6230+-3.2707        ? might be 1.0179x slower
   new-array-buffer-push                              7.2622+-0.9372            7.1871+-0.7752          might be 1.0104x faster
   new-array-dead                                    19.7814+-0.3433           19.1449+-0.5621          might be 1.0332x faster
   new-array-push                                     4.0582+-0.3424            4.0343+-0.2654        
   no-inline-constructor                            123.1716+-3.0629     ?    124.1343+-2.0905        ?
   number-test                                        2.9969+-0.0535     ?      3.1073+-0.0999        ? might be 1.0368x slower
   object-closure-call                                5.3524+-0.0246     !      5.4299+-0.0407        ! definitely 1.0145x slower
   object-test                                        2.7958+-0.0920     ?      2.8919+-0.0680        ? might be 1.0344x slower
   obvious-sink-pathology-taken                     139.1442+-2.9006     ?    140.3360+-1.5888        ?
   obvious-sink-pathology                           132.4001+-2.4203          132.0221+-1.4410        
   obviously-elidable-new-object                     36.5304+-1.7061           35.4111+-1.1487          might be 1.0316x faster
   plus-boolean-arith                                 2.5754+-0.0936            2.5498+-0.1218          might be 1.0100x faster
   plus-boolean-double                                3.2133+-0.0329     ?      3.2342+-0.0396        ?
   plus-boolean                                       2.3933+-0.0319     ?      2.4047+-0.0169        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.4232+-0.2290            3.3700+-0.1182          might be 1.0158x faster
   poly-chain-access-different-prototypes             2.6182+-0.1103     ?      2.7541+-0.3234        ? might be 1.0519x slower
   poly-chain-access-simpler                          3.4490+-0.4197     ?      3.5303+-0.3594        ? might be 1.0236x slower
   poly-chain-access                                  2.6191+-0.1897     ?      2.7754+-0.2901        ? might be 1.0597x slower
   poly-stricteq                                     57.9301+-1.6208     ?     59.2512+-1.3090        ? might be 1.0228x slower
   polymorphic-array-call                             1.1949+-0.0319     ?      1.2556+-0.0573        ? might be 1.0507x slower
   polymorphic-get-by-id                              3.1978+-0.1420            3.1732+-0.1497        
   polymorphic-put-by-id                             28.8736+-1.2724     ?     31.5913+-1.7282        ? might be 1.0941x slower
   polymorphic-structure                             13.6522+-0.1999     ?     13.8112+-0.3163        ? might be 1.0116x slower
   polyvariant-monomorphic-get-by-id                  8.6400+-0.1315     ?      8.6882+-0.1623        ?
   proto-getter-access                                9.1093+-0.1078            9.0994+-0.1171        
   put-by-id-replace-and-transition                   9.0897+-0.2435     ?      9.2620+-0.3528        ? might be 1.0190x slower
   put-by-id-slightly-polymorphic                     2.8780+-0.0444     ?      3.1713+-0.4256        ? might be 1.1019x slower
   put-by-id                                         12.8646+-0.4884           12.7485+-0.3995        
   put-by-val-direct                                  0.4451+-0.0202     ^      0.3686+-0.0207        ^ definitely 1.2074x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.9325+-0.2611     ?      6.4537+-0.9533        ? might be 1.0879x slower
   put-by-val-machine-int                             2.7202+-0.0813     ?      2.8742+-0.2854        ? might be 1.0566x slower
   rare-osr-exit-on-local                            14.9627+-0.2346     ?     15.6335+-0.5509        ? might be 1.0448x slower
   register-pressure-from-osr                        20.9727+-0.2070     ?     21.2549+-0.2554        ? might be 1.0135x slower
   setter                                             5.7563+-0.4731     ?      5.8645+-0.6333        ? might be 1.0188x slower
   simple-activation-demo                            25.6309+-1.7861           25.5262+-1.3497        
   simple-getter-access                              11.9907+-0.5140     ?     12.0068+-0.7389        ?
   simple-poly-call-nested                            8.3297+-0.2528            8.3180+-0.3521        
   simple-poly-call                                   1.3147+-0.0316     ?      1.3920+-0.1552        ? might be 1.0588x slower
   sin-boolean                                       23.9290+-1.3692           23.5471+-1.3541          might be 1.0162x faster
   singleton-scope                                   62.5216+-0.9220     ?     63.1460+-1.6040        ?
   sink-function                                     12.1471+-0.2714     ?     12.2532+-0.2954        ?
   sink-huge-activation                              19.3598+-0.4226           19.1738+-0.3498        
   sinkable-new-object-dag                           70.7070+-1.5370     ?     71.7837+-1.3946        ? might be 1.0152x slower
   sinkable-new-object-taken                         53.8065+-2.7875           50.2990+-1.2743          might be 1.0697x faster
   sinkable-new-object                               38.8704+-1.4316     ?     40.1107+-1.7211        ? might be 1.0319x slower
   slow-array-profile-convergence                     2.8821+-0.2647            2.8730+-0.0530        
   slow-convergence                                   2.8085+-0.2645     ?      2.8620+-0.3560        ? might be 1.0191x slower
   sorting-benchmark                                 20.7297+-0.2965           20.6305+-0.6390        
   sparse-conditional                                 1.1591+-0.0447     ?      1.1702+-0.0258        ?
   splice-to-remove                                  16.6273+-0.4846           16.6084+-0.6842        
   string-char-code-at                               15.7858+-0.1611     ?     15.7980+-0.1841        ?
   string-concat-object                               2.5913+-0.1059     ?      2.7169+-0.1920        ? might be 1.0484x slower
   string-concat-pair-object                          2.6827+-0.2252     ?      2.7102+-0.3907        ? might be 1.0102x slower
   string-concat-pair-simple                         11.8516+-1.2005     ?     12.0288+-1.2126        ? might be 1.0150x slower
   string-concat-simple                              12.6475+-1.1489           12.2383+-0.7409          might be 1.0334x faster
   string-cons-repeat                                 8.2617+-0.6154            8.2300+-0.6221        
   string-cons-tower                                  7.9940+-0.1006     ?      8.5675+-0.5013        ? might be 1.0717x slower
   string-equality                                   17.9521+-0.4165     ?     18.6851+-0.5563        ? might be 1.0408x slower
   string-get-by-val-big-char                         7.0868+-0.0175     ?      7.2550+-0.2692        ? might be 1.0237x slower
   string-get-by-val-out-of-bounds-insane             3.7495+-0.0476     ?      4.1423+-0.9247        ? might be 1.1047x slower
   string-get-by-val-out-of-bounds                    5.2863+-0.2548            5.2601+-0.0967        
   string-get-by-val                                  3.2518+-0.0604     ?      3.2938+-0.0493        ? might be 1.0129x slower
   string-hash                                        2.0409+-0.0744     ?      2.0972+-0.0375        ? might be 1.0276x slower
   string-long-ident-equality                        14.5076+-0.1048     !     14.9179+-0.2240        ! definitely 1.0283x slower
   string-out-of-bounds                              14.9213+-0.3269           14.8320+-0.1019        
   string-repeat-arith                               35.0280+-0.7108           33.4368+-2.8318          might be 1.0476x faster
   string-sub                                        67.6036+-2.2286     ?     67.9053+-2.3417        ?
   string-test                                        2.8988+-0.0726     ?      2.9850+-0.0540        ? might be 1.0297x slower
   string-var-equality                               37.0370+-1.1733     ^     33.8134+-1.8087        ^ definitely 1.0953x faster
   structure-hoist-over-transitions                   2.8053+-0.3100            2.6891+-0.0660          might be 1.0432x faster
   substring-concat-weird                            40.0362+-1.2059     ?     40.3679+-1.1704        ?
   substring-concat                                  42.6734+-1.4876           42.4832+-0.9377        
   substring                                         47.8118+-1.6578           45.8768+-1.2051          might be 1.0422x faster
   switch-char-constant                               2.8140+-0.1259            2.7412+-0.0254          might be 1.0266x faster
   switch-char                                        6.8333+-0.8476            6.5095+-0.7768          might be 1.0497x faster
   switch-constant                                    8.5779+-0.3581     ?      8.6043+-0.3205        ?
   switch-string-basic-big-var                       17.6891+-0.9629     ?     17.9513+-0.3616        ? might be 1.0148x slower
   switch-string-basic-big                           14.4222+-0.5705     ?     14.5800+-0.5635        ? might be 1.0109x slower
   switch-string-basic-var                           14.8192+-0.2915           14.8118+-0.3435        
   switch-string-basic                               12.7933+-0.2359     ?     13.5111+-1.2653        ? might be 1.0561x slower
   switch-string-big-length-tower-var                20.5070+-1.4151           19.9265+-0.2404          might be 1.0291x faster
   switch-string-length-tower-var                    15.0330+-0.1636           14.8689+-0.2758          might be 1.0110x faster
   switch-string-length-tower                        12.8316+-0.7673           12.7933+-0.1685        
   switch-string-short                               12.4927+-0.3864     ?     12.7951+-0.1148        ? might be 1.0242x slower
   switch                                            12.6122+-0.1750     ?     12.8336+-0.3471        ? might be 1.0176x slower
   tear-off-arguments-simple                          3.6487+-0.3601            3.4521+-0.1315          might be 1.0570x faster
   tear-off-arguments                                 4.8490+-0.3162            4.8050+-0.1291        
   temporal-structure                                12.4925+-1.4003           12.1515+-0.2405          might be 1.0281x faster
   to-int32-boolean                                  13.4350+-0.2909     ?     14.2862+-1.1450        ? might be 1.0634x slower
   try-catch-get-by-val-cloned-arguments             14.9559+-0.8828           14.2516+-0.2386          might be 1.0494x faster
   try-catch-get-by-val-direct-arguments              6.6075+-0.2728     ?      7.1108+-0.9386        ? might be 1.0762x slower
   try-catch-get-by-val-scoped-arguments              8.4666+-1.1474     ?      8.5055+-0.8465        ?
   typed-array-get-set-by-val-profiling              32.4337+-1.1354           32.0209+-0.4813          might be 1.0129x faster
   undefined-property-access                        339.3552+-3.4704     ?    341.7985+-1.9568        ?
   undefined-test                                     2.9887+-0.0214     !      3.1671+-0.1461        ! definitely 1.0597x slower
   unprofiled-licm                                   23.1627+-1.2351     ?     23.4135+-0.9531        ? might be 1.0108x slower
   varargs-call                                      14.2692+-0.2860           14.1517+-0.2186        
   varargs-construct-inline                          22.3266+-1.2963           21.4478+-0.8784          might be 1.0410x faster
   varargs-construct                                 32.0950+-1.4114           31.2430+-1.0348          might be 1.0273x faster
   varargs-inline                                     9.0065+-0.4931     ?      9.3963+-0.5492        ? might be 1.0433x slower
   varargs-strict-mode                                9.9760+-0.4410            9.9575+-0.6220        
   varargs                                            9.8452+-0.3164            9.6734+-0.0638          might be 1.0178x faster
   weird-inlining-const-prop                          2.3099+-0.2279     ?      2.3709+-0.0850        ? might be 1.0264x slower

   &lt;geometric&gt;                                        8.5498+-0.0209     !      8.5978+-0.0231        ! definitely 1.0056x slower

                                                        TipOfTree                  FastHole                                     
AsmBench:
   bigfib.cpp                                       498.5939+-9.3310          496.8912+-3.4112        
   cray.c                                           427.2609+-3.6841     ?    429.5273+-8.5537        ?
   dry.c                                            489.7395+-8.5028          478.1179+-8.7709          might be 1.0243x faster
   FloatMM.c                                        727.8713+-3.8672          723.8812+-0.8241        
   gcc-loops.cpp                                   4291.0448+-24.3440        4279.8032+-14.7762       
   n-body.c                                         984.3193+-9.8684     ?    984.8260+-8.3239        ?
   Quicksort.c                                      423.9570+-4.5924          422.4707+-5.3432        
   stepanov_container.cpp                          3621.5398+-19.7736    ?   3650.6649+-79.7279       ?
   Towers.c                                         262.1503+-3.3071          260.6519+-1.1079        

   &lt;geometric&gt;                                      796.5142+-2.2353          793.7666+-2.5754          might be 1.0035x faster

                                                        TipOfTree                  FastHole                                     
CompressionBench:
   huffman                                          367.0045+-8.2848     ?    373.4247+-5.5695        ? might be 1.0175x slower
   arithmetic-simple                                396.8634+-4.7419          395.9400+-4.3286        
   arithmetic-precise                               299.0268+-4.2492     ?    303.3993+-5.8602        ? might be 1.0146x slower
   arithmetic-complex-precise                       296.5667+-2.4658     ?    301.6456+-4.9070        ? might be 1.0171x slower
   arithmetic-precise-order-0                       435.6970+-8.3435          426.4685+-7.0043          might be 1.0216x faster
   arithmetic-precise-order-1                       328.8191+-7.3537     ?    331.2242+-4.4188        ?
   arithmetic-precise-order-2                       358.2191+-6.1744     ?    364.4676+-5.0685        ? might be 1.0174x slower
   arithmetic-simple-order-1                        430.2028+-5.9866          423.6678+-4.1505          might be 1.0154x faster
   arithmetic-simple-order-2                        467.9954+-3.1357     ?    473.4315+-17.6978       ? might be 1.0116x slower
   lz-string                                        315.1518+-2.8386     !    325.3348+-5.6778        ! definitely 1.0323x slower

   &lt;geometric&gt;                                      365.0494+-1.8005     ?    367.8891+-2.8275        ? might be 1.0078x slower

                                                        TipOfTree                  FastHole                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                                   62.4130+-0.1410     ?     62.4238+-0.2408        ? might be 1.0002x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093315</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 14:55:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 252745 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252745&amp;action=review
&gt; 
&gt; r=me if bot issues are fixed / not caused by this patch.

Looks like trunk was broken.  I&apos;ll upload another patch and see if EWS is happy.

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        prototype chain is sain - i.e. has no indexed properties. Then we can just return
&gt; 
&gt; s/sain/sane/.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
&gt; &gt; +                if (node-&gt;arrayMode().isSaneChain()) {
&gt; 
&gt; You should put an assertion here like the 64-bit version:
&gt;     ASSERT(node-&gt;arrayMode().type() == Array::Contiguous);

I intentionally excluded it.  If you look above, the Int32 case is handled entirely separately in the 32-bit code.  In the 64-bit code, the int32 and contiguous cases are handled together, so we have to assert that int32 didn&apos;t happen to have SaneChain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093316</commentid>
    <comment_count>6</comment_count>
      <attachid>252750</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 14:59:05 -0700</bug_when>
    <thetext>Created attachment 252750
patch for landing

Seeing what happens in EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093317</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 15:00:35 -0700</bug_when>
    <thetext>Attachment 252750 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093322</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 15:26:05 -0700</bug_when>
    <thetext>I will wait for the GTK bot before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093360</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-08 17:20:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/184032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093361</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-08 17:23:43 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
&gt; &gt; &gt; +                if (node-&gt;arrayMode().isSaneChain()) {
&gt; &gt; 
&gt; &gt; You should put an assertion here like the 64-bit version:
&gt; &gt;     ASSERT(node-&gt;arrayMode().type() == Array::Contiguous);
&gt; 
&gt; I intentionally excluded it.  If you look above, the Int32 case is handled
&gt; entirely separately in the 32-bit code.  In the 64-bit code, the int32 and
&gt; contiguous cases are handled together, so we have to assert that int32
&gt; didn&apos;t happen to have SaneChain.

Oooo, you&apos;re right.  I looked for it but I missed that part.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252745</attachid>
            <date>2015-05-08 13:42:03 -0700</date>
            <delta_ts>2015-05-08 14:59:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22720</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE1LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RXh0ZW5kIHRoZSBTYW5lQ2hhaW4gb3B0aW1pemF0aW9uIHRvIENvbnRpZ3VvdXMgYXJyYXlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFBy
ZXZpb3VzbHkgaWYgeW91IGxvYWRlZCBmcm9tIGEgaG9sZSwgeW91J2QgZWl0aGVyIGhhdmUgdG8g
dGFrZSBzbG93IHBhdGggZm9yIHRoZSBhcnJheQorICAgICAgICBsb2FkICh3aGljaCBtZWFucyBD
KysgY2FsbHMgYW5kIHByb3RvdHlwZSBjaGFpbiB3YWxrcykgb3IgeW91J2QgZXhpdCAoaWYgeW91
IGhhZG4ndAorICAgICAgICBnYXRoZXJlZCB0aGUgbmVjZXNzYXJ5IHByb2ZpbGluZyB5ZXQpLiBC
dXQgdGhhdCdzIHVubmVjZXNzYXJ5IGlmIHdlIGtub3cgdGhhdCB0aGUKKyAgICAgICAgcHJvdG90
eXBlIGNoYWluIGlzIHNhaW4gLSBpLmUuIGhhcyBubyBpbmRleGVkIHByb3BlcnRpZXMuIFRoZW4g
d2UgY2FuIGp1c3QgcmV0dXJuCisgICAgICAgIFVuZGVmaW5lZCBmb3IgdGhlIGhvbGUuCisgICAg
ICAgIAorICAgICAgICBNYWtpbmcgdGhpcyBjaGFuZ2UgcmVxdWlyZXMgc2V0dGluZyBtb3JlIHdh
dGNocG9pbnRzIG9uIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4uIEJ1dAorICAgICAgICB0aGF0
IGhpdCBhIGhvcnJpYmxlIGJ1ZzogQXJyYXlQcm90b3R5cGUgc3RpbGwgdXNlcyB0aGUgc3RhdGlj
IGxvb2t1cCB0YWJsZXMgYW5kIGJ1aWxkcworICAgICAgICBpdHNlbGYgdXAgbGF6aWx5LiBUaGlz
IG1lYW5zIHRoYXQgdGhpcyBpbmNyZWFzZWQgdGhlIG51bWJlciBvZiByZWNvbXBpbGF0aW9ucyB3
ZSdkIGdldAorICAgICAgICBkdWUgdG8gdGhlIGFycmF5IHByb3RvdHlwZSBjaGFpbiBiZWluZyBi
dWlsdCB1cC4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMg
dGhlIGxhemluZXNzIGFuZCBzdGF0aWMgdGFibGVzIGZyb20gQXJyYXlQcm90b3R5cGUuCisgICAg
ICAgIAorICAgICAgICBCdXQgdG8gbWFrZSB0aGF0IGNoYW5nZSwgSSBhbHNvIGhhZCB0byBhZGQg
YSBoZWxwZXIgZm9yIGVhZ2VybHkgYnVpbGRpbmcgdXAgYSBwcm90b3R5cGUKKyAgICAgICAgdGhh
dCBoYXMgYnVpbHRpbiBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKwogMjAxNS0wNS0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcERhdGFJbXBsOjphZGQoKSBzaG91bGRuJ3QgZG8g
dGhlIHNhbWUgaGFzaCBsb29rdXAgdHdpY2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTgzOTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMSwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDYgQEAgVlBBVEgg
PSBcCiBhbGwgOiBcCiAgICAgQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5sdXQuaCBcCi0gICAgQXJyYXlQcm90b3R5cGUubHV0LmggXAogICAgIEJv
b2xlYW5Qcm90b3R5cGUubHV0LmggXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAg
RGF0ZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5TW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmgJKHJldmlzaW9uIDE4Mzk3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgZW51bSBD
bGFzcyB7CiAKIGVudW0gU3BlY3VsYXRpb24gewogICAgIFNhbmVDaGFpbiwgLy8gSW4gYm91bmRz
IGFuZCB0aGUgYXJyYXkgcHJvdG90eXBlIGNoYWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2Fk
aW5nIGEgaG9sZSBkb2Vzbid0IHJlcXVpcmUgc3BlY2lhbCB0cmVhdG1lbnQuCisgICAgCiAgICAg
SW5Cb3VuZHMsIC8vIEluIGJvdW5kcyBhbmQgbm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9s
ZSwgLy8gUG90ZW50aWFsbHkgc3RvcmluZyB0byBhIGhvbGUuCiAgICAgT3V0T2ZCb3VuZHMgLy8g
T3V0LW9mLWJvdW5kcyBhY2Nlc3MgYW5kIGFueXRoaW5nIGNhbiBoYXBwZW4uCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE4Mzk3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzOCwxNyArNTM4LDYxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAg
ICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czoKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJh
eQogICAgICAgICAgICAgICAgICAgICAmJiBhcnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJh
eTo6SW5Cb3VuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hh
aW5Jc1NhbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgIShub2RlLT5mbGFncygpICYg
Tm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBv
aW50cygpLmFkZExhemlseSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRT
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlN
b2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6U2FuZUNoYWluKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgU2FuZUNoYWluIHdpbGwgd29yayBvbiBh
IHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSkgV2UgZG9uJ3Qgd2FudCBkb3VibGUgYXJyYXlz
IHRvIHNvbWV0aW1lcyByZXR1cm4gdW5kZWZpbmVkLCBzaW5jZQorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJlIGEgY2hhbmdlIHRvIHRoZSByZXR1cm4gdHlwZSBh
bmQgaXQgd291bGQgcGVzc2ltaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3Mg
YSBsb3QuIFNvLCB3ZSdkIG9ubHkgd2FudCB0byBkbyB0aGF0IGlmIHdlIGFjdHVhbGx5IGhhZAor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZpZGVuY2UgdGhhdCB3ZSBjb3VsZCByZWFkIGZy
b20gYSBob2xlLiBUaGF0J3MgcHJldHR5IGFubm95aW5nLgorICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTGlrZWx5IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdGhhdCBjYXNlIGlzIHdpdGggYW4g
ZXF1aXZhbGVudCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FuZUNoYWluIGZvciBP
dXRPZkJvdW5kcy4gRm9yIG5vdyB3ZSBqdXN0IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5hTiBhcmUgaW5kaXN0aW5ndWlzaGFibGUgYWNjb3Jk
aW5nIHRvIGJhY2t3YXJkcyBwcm9wYWdhdGlvbiwgYW5kIGp1c3QKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHVzZSBTYW5lQ2hhaW4gaW4gdGhhdCBjYXNlLiBUaGlzIGhhcHBlbnMgdG8gY2F0
Y2ggYSBsb3Qgb2YgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gMikgV2UgZG9uJ3Qgd2FudCBpbnQzMiBhcnJheSBsb2FkcyB0byBo
YXZlIHRvIGRvIGEgaG9sZSBjaGVjayBqdXN0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIG1lYW4gdHdpY2UgdGhlIGNo
ZWNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGhhcyB0d28gaW1wbGljYXRpb25zLiBGaXJzdCwgd2UgaGF2ZSB0byBkbyBtb3Jl
IGNoZWNrcyB0aGFuIHdlJ2QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UuIEl0J3Mg
dW5mb3J0dW5hdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoZSBob2xlIGNoZWNrLiBTZWNvbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzb21lIGFjY2Vzc2VzIHRoYXQgaGl0IGEgaG9sZSB3
aWxsIG5vdyBuZWVkIHRvIHRha2UgdGhlIGZ1bGwtYmxvd24KKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIG91dC1vZi1ib3VuZHMgc2xvdyBwYXRoLiBXZSBjYW4gZml4IHRoYXQgd2l0aDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ2NjgKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjYW5Eb1NhbmVDaGFpbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlwZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgaGFwcGVucyB0byBiZSBlbnRpcmVseSBuYXR1cmFsLiBXZSBhbHJlYWR5IHdvdWxk
IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5lZCBhbnkgSlNWYWx1
ZSwgYW5kIG5vdyB3ZSdsbCByZXR1cm4gVW5kZWZpbmVkLiBXZSBzdGlsbCBkbworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjaGVjayBidXQgaXQgZG9lc24ndCByZXF1aXJlIHRh
a2luZyBhbnkga2luZCBvZiBzbG93IHBhdGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FuRG9TYW5lQ2hhaW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG5v
ZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSG9sZXMgbG9vayBsaWtlIE5hTiBhbHJlYWR5LCBzbyBpZiB0
aGUgdXNlciBkb2Vzbid0IGNhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVbmRlZmluZWQgYW5kIE5hTiB0aGVuIHdlIGNh
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGlzLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYW5Eb1NhbmVDaGFpbiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhbkRvU2FuZUNoYWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5z
aXRpb25XYXRjaHBvaW50U2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldEFycmF5TW9kZShhcnJheU1vZGUud2l0aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4p
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMTgzOTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwOSwyMSArMjMwOSw0NiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMikgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkp
OworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBUYWdPZmZzZXQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0
eVZhbHVlVGFnKSkpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSks
IHJlc3VsdFBheWxvYWQuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
CisgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCwgUGF5bG9hZE9mZnNldCksCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRQYXlsb2FkLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgaW50MzJSZXN1
bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZXN1bHRUYWcuZ3ByKCkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZy5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVt
cHR5VmFsdWVUYWcpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCBy
ZXN1bHRQYXlsb2FkLmdwcigpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQsIFRhZ09mZnNldCksCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFRhZy5ncHIoKSk7
CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KAorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0
KSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJyYW5jaDMyKAorICAg
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHRUYWcu
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1w
dHlWYWx1ZVRhZykpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHRUYWcuZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7
CisgICAgICAgICAgICAgICAgICAgIG5vdEhvbGUubGluaygmbV9qaXQpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAg
ICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZy5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODM5NzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQ3LDcgKzI0NDcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpDb250aWd1b3VzKTsKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJyYW5j
aFRlc3Q2NCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICBub3RIb2xlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAg
ICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBy
ZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBB
cnJheTo6SW50MzIgPyBEYXRhRm9ybWF0SlNJbnQzMiA6IERhdGFGb3JtYXRKUyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTgzOTc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNjMsNyArMjI2MywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsKICAgICAgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9y
YWdlLCBpbmRleCwgbV9ub2RlLT5jaGlsZDIoKSkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAgTFZhbHVlIGlzSG9sZSA9IG1fb3V0LmlzWmVybzY0KHJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgewor
ICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29u
dGlndW91cyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzSG9sZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAs
IGlzSG9sZSk7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE4Mzk3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTYzLDQ3
ICs2NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNLZXlzKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0VudHJpZXMoRXhlY1N0
YXRlKik7CiAKLX0KLQotI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmx1dC5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90
eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIEFycmF5
UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6OnNfaW5mbywgJmFycmF5UHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlQcm90b3R5cGUpfTsKLQotLyog
U291cmNlIGZvciBBcnJheVByb3RvdHlwZS5sdXQuaAotQGJlZ2luIGFycmF5UHJvdG90eXBlVGFi
bGUgMTYKLSAgdG9TdHJpbmcgICAgICAgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyAgICAgICBEb250
RW51bXxGdW5jdGlvbiAwCi0gIHRvTG9jYWxlU3RyaW5nIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcgRG9udEVudW18RnVuY3Rpb24gMAotICBjb25jYXQgICAgICAgICBhcnJheVByb3RvRnVu
Y0NvbmNhdCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgZmlsbCAgICAgICAgICAgYXJy
YXlQcm90b0Z1bmNGaWxsICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGpvaW4gICAg
ICAgICAgIGFycmF5UHJvdG9GdW5jSm9pbiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQot
ICBwb3AgICAgICAgICAgICBhcnJheVByb3RvRnVuY1BvcCAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKLSAgcHVzaCAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNQdXNoICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCi0gIHJldmVyc2UgICAgICAgIGFycmF5UHJvdG9GdW5jUmV2ZXJz
ZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAotICBzaGlmdCAgICAgICAgICBhcnJheVByb3Rv
RnVuY1NoaWZ0ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAgc2xpY2UgICAgICAgICAg
YXJyYXlQcm90b0Z1bmNTbGljZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gIHNvcnQg
ICAgICAgICAgIGFycmF5UHJvdG9GdW5jU29ydCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQotICBzcGxpY2UgICAgICAgICBhcnJheVByb3RvRnVuY1NwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKLSAgdW5zaGlmdCAgICAgICAgYXJyYXlQcm90b0Z1bmNVblNoaWZ0ICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGV2ZXJ5ICAgICAgICAgIGFycmF5UHJvdG9GdW5jRXZl
cnkgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBmb3JFYWNoICAgICAgICBhcnJheVBy
b3RvRnVuY0ZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgc29tZSAgICAgICAg
ICAgYXJyYXlQcm90b0Z1bmNTb21lICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGlu
ZGV4T2YgICAgICAgIGFycmF5UHJvdG9GdW5jSW5kZXhPZiAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQotICBsYXN0SW5kZXhPZiAgICBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgZmlsdGVyICAgICAgICAgYXJyYXlQcm90b0Z1bmNGaWx0ZXIgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIHJlZHVjZSAgICAgICAgIGFycmF5UHJvdG9GdW5j
UmVkdWNlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICByZWR1Y2VSaWdodCAgICBhcnJh
eVByb3RvRnVuY1JlZHVjZVJpZ2h0ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgbWFwICAgICAg
ICAgICAgYXJyYXlQcm90b0Z1bmNNYXAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0g
IGVudHJpZXMgICAgICAgIGFycmF5UHJvdG9GdW5jRW50cmllcyAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMAotICBrZXlzICAgICAgICAgICBhcnJheVByb3RvRnVuY0tleXMgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKLSAgZmluZCAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNGaW5kICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGZpbmRJbmRleCAgICAgIGFycmF5UHJvdG9G
dW5jRmluZEluZGV4ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBpbmNsdWRlcyAgICAgICBh
cnJheVByb3RvRnVuY0luY2x1ZGVzICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLUBlbmQKLSov
Citjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNB
cnJheTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5UHJvdG90eXBl
KX07CiAKIEFycmF5UHJvdG90eXBlKiBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CkBAIC0x
MjYsNyArODksMzUgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIAog
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnZh
bHVlcywgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwg
RG9udEVudW0pOwotCisgICAgCisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZywgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dG9Mb2NhbGVTdHJpbmcsIGFy
cmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKCJjb25jYXQiLCBhcnJheVByb3RvRnVuY0NvbmNhdCwgRG9udEVudW0sIDEpOwor
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJmaWxsIiwgYXJyYXlQcm90b3R5cGVGaWxsQ29kZUdl
bmVyYXRvciwgRG9udEVudW0pOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+am9pbiwgYXJyYXlQcm90b0Z1bmNKb2luLCBEb250RW51bSwgMSk7CisgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oInBvcCIsIGFycmF5UHJvdG9GdW5jUG9wLCBEb250RW51
bSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNU
SU9OKCJwdXNoIiwgYXJyYXlQcm90b0Z1bmNQdXNoLCBEb250RW51bSwgMSwgQXJyYXlQdXNoSW50
cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJyZXZlcnNlIiwgYXJyYXlQcm90b0Z1
bmNSZXZlcnNlLCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTigic2hpZnQi
LCBhcnJheVByb3RvRnVuY1NoaWZ0LCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zbGljZSwgYXJyYXlQcm90b0Z1bmNTbGljZSwgRG9udEVu
dW0sIDIpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJzb3J0IiwgYXJyYXlQcm90b3R5cGVT
b3J0Q29kZUdlbmVyYXRvciwgRG9udEVudW0pOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInNw
bGljZSIsIGFycmF5UHJvdG9GdW5jU3BsaWNlLCBEb250RW51bSwgMik7CisgICAgSlNDX05BVElW
RV9GVU5DVElPTigidW5zaGlmdCIsIGFycmF5UHJvdG9GdW5jVW5TaGlmdCwgRG9udEVudW0sIDEp
OworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJldmVyeSIsIGFycmF5UHJvdG90eXBlRXZlcnlD
b2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oImZvckVh
Y2giLCBhcnJheVByb3RvdHlwZUZvckVhY2hDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT04oInNvbWUiLCBhcnJheVByb3RvdHlwZVNvbWVDb2RlR2VuZXJh
dG9yLCBEb250RW51bSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTigiaW5kZXhPZiIsIGFycmF5
UHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
Imxhc3RJbmRleE9mIiwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZiwgRG9udEVudW0sIDEpOwor
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJmaWx0ZXIiLCBhcnJheVByb3RvdHlwZUZpbHRlckNv
ZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJyZWR1Y2Ui
LCBhcnJheVByb3RvRnVuY1JlZHVjZSwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04oInJlZHVjZVJpZ2h0IiwgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodCwgRG9udEVudW0s
IDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJtYXAiLCBhcnJheVByb3RvdHlwZU1hcENv
ZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmVudHJpZXMsIGFycmF5UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgYXJyYXlQcm90
b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oImZpbmQi
LCBhcnJheVByb3RvdHlwZUZpbmRDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgSlNDX0JV
SUxUSU5fRlVOQ1RJT04oImZpbmRJbmRleCIsIGFycmF5UHJvdG90eXBlRmluZEluZGV4Q29kZUdl
bmVyYXRvciwgRG9udEVudW0pOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJpbmNsdWRlcyIs
IGFycmF5UHJvdG90eXBlSW5jbHVkZXNDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgCiAg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlzU3ltYm9sRGlzYWJsZWQoKSkg
ewogICAgICAgICBKU09iamVjdCogdW5zY29wYWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOwogICAgICAgICBjb25zdCBjaGFyKiB1bnNjb3BhYmxlTmFtZXNbXSA9
IHsKQEAgLTE0NCwxMSArMTM1LDYgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIAogICAgIH0KIH0KIAotYm9vbCBBcnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8SlNBcnJheT4oZXhlYywgYXJyYXlQcm90b3R5cGVUYWJsZSwganNDYXN0PEFycmF5
UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vIEhlbHBlciBmdW5jdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxODM5NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDExLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTM1LDggKzM1LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEFycmF5UHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAg
ICAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotCiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE4Mzk3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSwgMjAxMi0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNTU3LDYgKzE1
NTcsMTIgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKAogI2RlZmlu
ZSBKU0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3Ro
KSBcCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oanNOYW1lLCBjcHBOYW1lLCAo
YXR0cmlidXRlcyksIChsZW5ndGgpLCBOb0ludHJpbnNpYykKIAorLy8gSWRlbnRpY2FsIGhlbHBl
cnMgYnV0IGZvciBidWlsdGlucy4gTm90ZSB0aGF0IGN1cnJlbnRseSwgd2UgZG9uJ3Qgc3VwcG9y
dCBidWlsdGlucyB0aGF0IGFyZQorLy8gYWxzbyBpbnRyaW5zaWNzLCBidXQgd2UgcHJvYmFibHkg
d2lsbCBkbyB0aGF0IGV2ZW50dWFsbHkuCisjZGVmaW5lIEpTQ19CVUlMVElOX0ZVTkNUSU9OKGpz
TmFtZSwgZ2VuZXJhdG9yTmFtZSwgYXR0cmlidXRlcykgXAorICAgIHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbihcCisgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIG1ha2VJZGVudGlmaWVyKHZtLCAo
anNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2bSksIChhdHRyaWJ1dGVzKSkKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09iamVjdF9oCg==
</data>
<flag name="review"
          id="277589"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252750</attachid>
            <date>2015-05-08 14:59:05 -0700</date>
            <delta_ts>2015-05-08 14:59:05 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23263</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MDE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDE1LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RXh0ZW5kIHRoZSBTYW5lQ2hhaW4gb3B0aW1pemF0aW9uIHRvIENvbnRpZ3VvdXMgYXJyYXlzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFBy
ZXZpb3VzbHkgaWYgeW91IGxvYWRlZCBmcm9tIGEgaG9sZSwgeW91J2QgZWl0aGVyIGhhdmUgdG8g
dGFrZSBzbG93IHBhdGggZm9yIHRoZSBhcnJheQorICAgICAgICBsb2FkICh3aGljaCBtZWFucyBD
KysgY2FsbHMgYW5kIHByb3RvdHlwZSBjaGFpbiB3YWxrcykgb3IgeW91J2QgZXhpdCAoaWYgeW91
IGhhZG4ndAorICAgICAgICBnYXRoZXJlZCB0aGUgbmVjZXNzYXJ5IHByb2ZpbGluZyB5ZXQpLiBC
dXQgdGhhdCdzIHVubmVjZXNzYXJ5IGlmIHdlIGtub3cgdGhhdCB0aGUKKyAgICAgICAgcHJvdG90
eXBlIGNoYWluIGlzIHNhbmUgLSBpLmUuIGhhcyBubyBpbmRleGVkIHByb3BlcnRpZXMuIFRoZW4g
d2UgY2FuIGp1c3QgcmV0dXJuCisgICAgICAgIFVuZGVmaW5lZCBmb3IgdGhlIGhvbGUuCisgICAg
ICAgIAorICAgICAgICBNYWtpbmcgdGhpcyBjaGFuZ2UgcmVxdWlyZXMgc2V0dGluZyBtb3JlIHdh
dGNocG9pbnRzIG9uIHRoZSBhcnJheSBwcm90b3R5cGUgY2hhaW4uIEJ1dAorICAgICAgICB0aGF0
IGhpdCBhIGhvcnJpYmxlIGJ1ZzogQXJyYXlQcm90b3R5cGUgc3RpbGwgdXNlcyB0aGUgc3RhdGlj
IGxvb2t1cCB0YWJsZXMgYW5kIGJ1aWxkcworICAgICAgICBpdHNlbGYgdXAgbGF6aWx5LiBUaGlz
IG1lYW5zIHRoYXQgdGhpcyBpbmNyZWFzZWQgdGhlIG51bWJlciBvZiByZWNvbXBpbGF0aW9ucyB3
ZSdkIGdldAorICAgICAgICBkdWUgdG8gdGhlIGFycmF5IHByb3RvdHlwZSBjaGFpbiBiZWluZyBi
dWlsdCB1cC4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMg
dGhlIGxhemluZXNzIGFuZCBzdGF0aWMgdGFibGVzIGZyb20gQXJyYXlQcm90b3R5cGUuCisgICAg
ICAgIAorICAgICAgICBCdXQgdG8gbWFrZSB0aGF0IGNoYW5nZSwgSSBhbHNvIGhhZCB0byBhZGQg
YSBoZWxwZXIgZm9yIGVhZ2VybHkgYnVpbGRpbmcgdXAgYSBwcm90b3R5cGUKKyAgICAgICAgdGhh
dCBoYXMgYnVpbHRpbiBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUu
aDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5
VmFsKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKwogMjAx
NS0wNS0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcERh
dGFJbXBsOjphZGQoKSBzaG91bGRuJ3QgZG8gdGhlIHNhbWUgaGFzaCBsb29rdXAgdHdpY2UuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODQwMTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTYwNSw3ICs2MDUsNiBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiBzZXQo
SmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNw
cAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKLSAgICBydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKICAgICBy
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gMTg0MDE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDcgKzM3LDYgQEAgVlBBVEggPSBcCiBhbGwgOiBcCiAgICAgQXJyYXlDb25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgQXJyYXlJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCi0gICAg
QXJyYXlQcm90b3R5cGUubHV0LmggXAogICAgIEJvb2xlYW5Qcm90b3R5cGUubHV0LmggXAogICAg
IERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9uIDE4NDAx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDYgKzg5LDcgQEAgZW51bSBDbGFzcyB7CiAKIGVudW0gU3BlY3VsYXRpb24g
ewogICAgIFNhbmVDaGFpbiwgLy8gSW4gYm91bmRzIGFuZCB0aGUgYXJyYXkgcHJvdG90eXBlIGNo
YWluIGlzIHN0aWxsIGludGFjdCwgaS5lLiBsb2FkaW5nIGEgaG9sZSBkb2Vzbid0IHJlcXVpcmUg
c3BlY2lhbCB0cmVhdG1lbnQuCisgICAgCiAgICAgSW5Cb3VuZHMsIC8vIEluIGJvdW5kcyBhbmQg
bm90IGxvYWRpbmcgYSBob2xlLgogICAgIFRvSG9sZSwgLy8gUG90ZW50aWFsbHkgc3RvcmluZyB0
byBhIGhvbGUuCiAgICAgT3V0T2ZCb3VuZHMgLy8gT3V0LW9mLWJvdW5kcyBhY2Nlc3MgYW5kIGFu
eXRoaW5nIGNhbiBoYXBwZW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE4NDAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOCwxNyArNTM4LDYx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1v
ZGUgPSBub2RlLT5hcnJheU1vZGUoKTsKICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5
cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmFycmF5
Q2xhc3MoKSA9PSBBcnJheTo6T3JpZ2luYWxBcnJheQogICAgICAgICAgICAgICAgICAgICAmJiBh
cnJheU1vZGUuc3BlY3VsYXRpb24oKSA9PSBBcnJheTo6SW5Cb3VuZHMpIHsKICAgICAgICAgICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChn
bG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgIShub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlVXNlc0FzT3RoZXIpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5
cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1
Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlLndpdGhTcGVjdWxhdGlvbihBcnJheTo6
U2FuZUNoYWluKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5
UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgU2FuZUNoYWluIHdpbGwgd29yayBvbiBhIHBlci10eXBlIGJhc2lzLiBOb3RlIHRoYXQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
MSkgV2UgZG9uJ3Qgd2FudCBkb3VibGUgYXJyYXlzIHRvIHNvbWV0aW1lcyByZXR1cm4gdW5kZWZp
bmVkLCBzaW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB3b3VsZCByZXF1aXJl
IGEgY2hhbmdlIHRvIHRoZSByZXR1cm4gdHlwZSBhbmQgaXQgd291bGQgcGVzc2ltaXNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgYSBsb3QuIFNvLCB3ZSdkIG9ubHkgd2FudCB0
byBkbyB0aGF0IGlmIHdlIGFjdHVhbGx5IGhhZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZXZpZGVuY2UgdGhhdCB3ZSBjb3VsZCByZWFkIGZyb20gYSBob2xlLiBUaGF0J3MgcHJldHR5IGFu
bm95aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGlrZWx5IHRoZSBiZXN0IHdheSB0
byBoYW5kbGUgdGhhdCBjYXNlIGlzIHdpdGggYW4gZXF1aXZhbGVudCBvZgorICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU2FuZUNoYWluIGZvciBPdXRPZkJvdW5kcy4gRm9yIG5vdyB3ZSBqdXN0
IGRldGVjdCB3aGVuIFVuZGVmaW5lZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5h
TiBhcmUgaW5kaXN0aW5ndWlzaGFibGUgYWNjb3JkaW5nIHRvIGJhY2t3YXJkcyBwcm9wYWdhdGlv
biwgYW5kIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBTYW5lQ2hhaW4gaW4g
dGhhdCBjYXNlLiBUaGlzIGhhcHBlbnMgdG8gY2F0Y2ggYSBsb3Qgb2YgY2FzZXMuCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAgICAgLy8gMikgV2UgZG9u
J3Qgd2FudCBpbnQzMiBhcnJheSBsb2FkcyB0byBoYXZlIHRvIGRvIGEgaG9sZSBjaGVjayBqdXN0
IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2VyY2UgdG8gVW5kZWZpbmVkLCBzaW5j
ZSB0aGF0IHdvdWxkIG1lYW4gdHdpY2UgdGhlIGNoZWNrcy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyB0d28gaW1wbGljYXRp
b25zLiBGaXJzdCwgd2UgaGF2ZSB0byBkbyBtb3JlIGNoZWNrcyB0aGFuIHdlJ2QKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGxpa2UuIEl0J3MgdW5mb3J0dW5hdGUgdGhhdCB3ZSBoYXZlIHRv
IGRvIHRoZSBob2xlIGNoZWNrLiBTZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
b21lIGFjY2Vzc2VzIHRoYXQgaGl0IGEgaG9sZSB3aWxsIG5vdyBuZWVkIHRvIHRha2UgdGhlIGZ1
bGwtYmxvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dC1vZi1ib3VuZHMgc2xvdyBw
YXRoLiBXZSBjYW4gZml4IHRoYXQgd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Eb1NhbmVDaGFp
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUudHlw
ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgaGFwcGVucyB0byBiZSBlbnRp
cmVseSBuYXR1cmFsLiBXZSBhbHJlYWR5IHdvdWxkIGhhdmUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByZXR1cm5lZCBhbnkgSlNWYWx1ZSwgYW5kIG5vdyB3ZSdsbCByZXR1cm4gVW5k
ZWZpbmVkLiBXZSBzdGlsbCBkbworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBj
aGVjayBidXQgaXQgZG9lc24ndCByZXF1aXJlIHRha2luZyBhbnkga2luZCBvZiBzbG93IHBhdGgu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuRG9TYW5lQ2hhaW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghKG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVV
c2VzQXNPdGhlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG9sZXMg
bG9vayBsaWtlIE5hTiBhbHJlYWR5LCBzbyBpZiB0aGUgdXNlciBkb2Vzbid0IGNhcmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWJvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biBVbmRlZmluZWQgYW5kIE5hTiB0aGVuIHdlIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBkbyB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5E
b1NhbmVDaGFpbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkRvU2FuZUNoYWluKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJh
eVByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemls
eSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUud2l0
aFNwZWN1bGF0aW9uKEFycmF5OjpTYW5lQ2hhaW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTg0MDE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMwOSwyMSArMjMwOSw0NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpID09IEFycmF5OjpJbnQzMikgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW5v
ZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpOworICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAg
ICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBUYWdPZmZzZXQpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVn
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgUGF5bG9h
ZE9mZnNldCksCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkLmdwcigpKTsK
ICAgICAgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMp
OwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4
KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcuZ3ByKCkpOwot
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVn
cygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRhZy5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywg
cHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlUmVnLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIFRhZ09mZnNldCksCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFRhZy5ncHIoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpUaW1lc0VpZ2h0LCBQYXlsb2FkT2Zmc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0UGF5bG9hZC5ncHIoKSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgp
LmlzU2FuZUNoYWluKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90SG9sZSA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHRUYWcuZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBy
ZXN1bHRUYWcuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgIG5vdEhv
bGUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgICAgICBMb2FkRnJv
bUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHJlc3VsdFRhZy5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxODQwMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ3LDcgKzI0NDcsMTcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywg
cHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsK
LSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQu
Z3ByKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkuaXNTYW5lQ2hh
aW4oKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpID09IEFycmF5OjpDb250aWd1b3VzKTsKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90SG9sZSA9IG1faml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBub3RIb2xlLmxp
bmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xl
LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUs
IG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIgPyBEYXRhRm9ybWF0SlNJ
bnQzMiA6IERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAkocmV2aXNpb24gMTg0MDE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNjMsNyArMjI2MywxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9v
dXQubG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ub2RlLT5jaGlsZDIo
KSkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwg
MCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGlzSG9s
ZSA9IG1fb3V0LmlzWmVybzY0KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+
YXJyYXlNb2RlKCkuaXNTYW5lQ2hhaW4oKSkgeworICAgICAgICAgICAgICAgICAgICBERkdfQVNT
RVJUKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9s
ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1
bHQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIGlzSG9sZSk7CiAgICAgICAgICAgICAgICAg
c2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE4NDAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTYzLDQ3ICs2NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNLZXlzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0VudHJpZXMoRXhlY1N0YXRlKik7CiAKLX0KLQotI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmx1dC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5
IiwgJkpTQXJyYXk6OnNfaW5mbywgJmFycmF5UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0Rf
VEFCTEUoQXJyYXlQcm90b3R5cGUpfTsKLQotLyogU291cmNlIGZvciBBcnJheVByb3RvdHlwZS5s
dXQuaAotQGJlZ2luIGFycmF5UHJvdG90eXBlVGFibGUgMTYKLSAgdG9TdHJpbmcgICAgICAgYXJy
YXlQcm90b0Z1bmNUb1N0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIHRvTG9jYWxl
U3RyaW5nIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgRG9udEVudW18RnVuY3Rpb24gMAot
ICBjb25jYXQgICAgICAgICBhcnJheVByb3RvRnVuY0NvbmNhdCAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKLSAgZmlsbCAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNGaWxsICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCi0gIGpvaW4gICAgICAgICAgIGFycmF5UHJvdG9GdW5jSm9pbiAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBwb3AgICAgICAgICAgICBhcnJheVByb3Rv
RnVuY1BvcCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAgcHVzaCAgICAgICAgICAg
YXJyYXlQcm90b0Z1bmNQdXNoICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIHJldmVy
c2UgICAgICAgIGFycmF5UHJvdG9GdW5jUmV2ZXJzZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAotICBzaGlmdCAgICAgICAgICBhcnJheVByb3RvRnVuY1NoaWZ0ICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKLSAgc2xpY2UgICAgICAgICAgYXJyYXlQcm90b0Z1bmNTbGljZSAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCi0gIHNvcnQgICAgICAgICAgIGFycmF5UHJvdG9GdW5jU29y
dCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBzcGxpY2UgICAgICAgICBhcnJheVBy
b3RvRnVuY1NwbGljZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgdW5zaGlmdCAgICAg
ICAgYXJyYXlQcm90b0Z1bmNVblNoaWZ0ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGV2
ZXJ5ICAgICAgICAgIGFycmF5UHJvdG9GdW5jRXZlcnkgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQotICBmb3JFYWNoICAgICAgICBhcnJheVByb3RvRnVuY0ZvckVhY2ggICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgc29tZSAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNTb21lICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGluZGV4T2YgICAgICAgIGFycmF5UHJvdG9GdW5j
SW5kZXhPZiAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBsYXN0SW5kZXhPZiAgICBhcnJh
eVByb3RvRnVuY0xhc3RJbmRleE9mICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgZmlsdGVyICAg
ICAgICAgYXJyYXlQcm90b0Z1bmNGaWx0ZXIgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0g
IHJlZHVjZSAgICAgICAgIGFycmF5UHJvdG9GdW5jUmVkdWNlICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQotICByZWR1Y2VSaWdodCAgICBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0ICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKLSAgbWFwICAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNNYXAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGVudHJpZXMgICAgICAgIGFycmF5UHJvdG9G
dW5jRW50cmllcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAotICBrZXlzICAgICAgICAgICBh
cnJheVByb3RvRnVuY0tleXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAgZmluZCAg
ICAgICAgICAgYXJyYXlQcm90b0Z1bmNGaW5kICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
Ci0gIGZpbmRJbmRleCAgICAgIGFycmF5UHJvdG9GdW5jRmluZEluZGV4ICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQotICBpbmNsdWRlcyAgICAgICBhcnJheVByb3RvRnVuY0luY2x1ZGVzICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKLUBlbmQKLSovCitjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90
b3R5cGU6OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEFycmF5UHJvdG90eXBlKX07CiAKIEFycmF5UHJvdG90eXBlKiBBcnJh
eVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CkBAIC0xMjYsNyArODksMzUgQEAgdm9pZCBBcnJheVBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgZ2xvYmFsT2JqZWN0LT5hcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24oKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0
LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgRG9udEVudW0pOwotCisgICAgCisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgYXJyYXlQcm90b0Z1
bmNUb1N0cmluZywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+dG9Mb2NhbGVTdHJpbmcsIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcs
IERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJjb25jYXQiLCBhcnJheVBy
b3RvRnVuY0NvbmNhdCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJm
aWxsIiwgYXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvciwgRG9udEVudW0pOworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgYXJyYXlQcm90b0Z1bmNK
b2luLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oInBv
cCIsIGFycmF5UHJvdG9GdW5jUG9wLCBEb250RW51bSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOwor
ICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJwdXNoIiwgYXJyYXlQcm90b0Z1bmNQ
dXNoLCBEb250RW51bSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKCJyZXZlcnNlIiwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTigic2hpZnQiLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBEb250
RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zbGlj
ZSwgYXJyYXlQcm90b0Z1bmNTbGljZSwgRG9udEVudW0sIDIpOworICAgIEpTQ19CVUlMVElOX0ZV
TkNUSU9OKCJzb3J0IiwgYXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgRG9udEVudW0p
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInNwbGljZSIsIGFycmF5UHJvdG9GdW5jU3BsaWNl
LCBEb250RW51bSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTigidW5zaGlmdCIsIGFycmF5
UHJvdG9GdW5jVW5TaGlmdCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9O
KCJldmVyeSIsIGFycmF5UHJvdG90eXBlRXZlcnlDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7Cisg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oImZvckVhY2giLCBhcnJheVByb3RvdHlwZUZvckVhY2hD
b2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oInNvbWUi
LCBhcnJheVByb3RvdHlwZVNvbWVDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgSlNDX05B
VElWRV9GVU5DVElPTigiaW5kZXhPZiIsIGFycmF5UHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0s
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImxhc3RJbmRleE9mIiwgYXJyYXlQcm90b0Z1
bmNMYXN0SW5kZXhPZiwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJm
aWx0ZXIiLCBhcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJyZWR1Y2UiLCBhcnJheVByb3RvRnVuY1JlZHVjZSwgRG9u
dEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInJlZHVjZVJpZ2h0IiwgYXJyYXlQ
cm90b0Z1bmNSZWR1Y2VSaWdodCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNU
SU9OKCJtYXAiLCBhcnJheVByb3RvdHlwZU1hcENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIGFycmF5UHJv
dG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+a2V5cywgYXJyYXlQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7Cisg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oImZpbmQiLCBhcnJheVByb3RvdHlwZUZpbmRDb2RlR2Vu
ZXJhdG9yLCBEb250RW51bSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oImZpbmRJbmRleCIs
IGFycmF5UHJvdG90eXBlRmluZEluZGV4Q29kZUdlbmVyYXRvciwgRG9udEVudW0pOworICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OKCJpbmNsdWRlcyIsIGFycmF5UHJvdG90eXBlSW5jbHVkZXNDb2Rl
R2VuZXJhdG9yLCBEb250RW51bSk7CisgICAgCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPnJ1bnRp
bWVGbGFncygpLmlzU3ltYm9sRGlzYWJsZWQoKSkgewogICAgICAgICBKU09iamVjdCogdW5zY29w
YWJsZXMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
Z2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICBj
b25zdCBjaGFyKiB1bnNjb3BhYmxlTmFtZXNbXSA9IHsKQEAgLTE0NCwxMSArMTM1LDYgQEAgdm9p
ZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIAogICAgIH0KIH0KIAotYm9vbCBB
cnJheVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQotewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNBcnJheT4oZXhlYywgYXJy
YXlQcm90b3R5cGVUYWJsZSwganNDYXN0PEFycmF5UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFy
cmF5IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEhlbHBlciBm
dW5jdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5oCShyZXZpc2lvbiAxODQwMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDggKzM1LDYgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwotCiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHJldmlzaW9uIDE4NDAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAwOSwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0xNTU3LDYgKzE1NTcsMTIgQEAgQUxXQVlTX0lOTElORSBJZGVu
dGlmaWVyIG1ha2VJZGVudGlmaWVyKAogI2RlZmluZSBKU0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFt
ZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBcCiAgICAgSlNDX05BVElWRV9JTlRSSU5T
SUNfRlVOQ1RJT04oanNOYW1lLCBjcHBOYW1lLCAoYXR0cmlidXRlcyksIChsZW5ndGgpLCBOb0lu
dHJpbnNpYykKIAorLy8gSWRlbnRpY2FsIGhlbHBlcnMgYnV0IGZvciBidWlsdGlucy4gTm90ZSB0
aGF0IGN1cnJlbnRseSwgd2UgZG9uJ3Qgc3VwcG9ydCBidWlsdGlucyB0aGF0IGFyZQorLy8gYWxz
byBpbnRyaW5zaWNzLCBidXQgd2UgcHJvYmFibHkgd2lsbCBkbyB0aGF0IGV2ZW50dWFsbHkuCisj
ZGVmaW5lIEpTQ19CVUlMVElOX0ZVTkNUSU9OKGpzTmFtZSwgZ2VuZXJhdG9yTmFtZSwgYXR0cmli
dXRlcykgXAorICAgIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihcCisgICAgICAgIHZtLCBnbG9i
YWxPYmplY3QsIG1ha2VJZGVudGlmaWVyKHZtLCAoanNOYW1lKSksIChnZW5lcmF0b3JOYW1lKSh2
bSksIChhdHRyaWJ1dGVzKSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU09i
amVjdF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>