<?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>150270</bug_id>
          
          <creation_ts>2015-10-16 23:30:09 -0700</creation_ts>
          <short_desc>Fix some generational heap growth pathologies</short_desc>
          <delta_ts>2015-12-23 09:22:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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>150281</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134153</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-16 23:30:09 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134158</commentid>
    <comment_count>1</comment_count>
      <attachid>263366</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-16 23:39:35 -0700</bug_when>
    <thetext>Created attachment 263366
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134164</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 00:03:22 -0700</bug_when>
    <thetext>Performance is OK:


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

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r191220)
&quot;FixCopiedSpace&quot; at /Volumes/Data/quinary/OpenSource/WebKitBuild/Release/jsc (r191220)

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               FixCopiedSpace                                  
SunSpider:
   3d-cube                                            4.7174+-0.1413            4.6865+-0.1546        
   3d-morph                                           5.2531+-0.1940     ?      5.4087+-0.3887        ? might be 1.0296x slower
   3d-raytrace                                        5.3884+-0.1016     ?      5.4932+-0.3763        ? might be 1.0195x slower
   access-binary-trees                                2.4862+-0.6497            2.2353+-0.1147          might be 1.1122x faster
   access-fannkuch                                    5.8215+-0.3172     ?      5.9247+-0.2906        ? might be 1.0177x slower
   access-nbody                                       2.6743+-0.2484            2.5592+-0.0927          might be 1.0450x faster
   access-nsieve                                      3.2168+-0.3193            3.1327+-0.2247          might be 1.0268x faster
   bitops-3bit-bits-in-byte                           1.1636+-0.0097     ?      1.4038+-0.3331        ? might be 1.2065x slower
   bitops-bits-in-byte                                3.4208+-0.2756            3.2125+-0.0622          might be 1.0648x faster
   bitops-bitwise-and                                 2.0876+-0.1384            2.0045+-0.0436          might be 1.0415x faster
   bitops-nsieve-bits                                 2.9708+-0.0511     ?      3.0002+-0.1559        ?
   controlflow-recursive                              2.3785+-0.0861     ?      2.6128+-0.5903        ? might be 1.0985x slower
   crypto-aes                                         4.4377+-0.8201            4.2905+-0.6340          might be 1.0343x faster
   crypto-md5                                         2.6657+-0.5018            2.5024+-0.0684          might be 1.0653x faster
   crypto-sha1                                        2.6423+-0.4188     ?      2.7410+-0.3622        ? might be 1.0373x slower
   date-format-tofte                                  6.7001+-0.1924            6.6242+-0.2523          might be 1.0115x faster
   date-format-xparb                                  4.6935+-0.1210            4.6543+-0.0589        
   math-cordic                                        2.9690+-0.4587            2.8441+-0.1790          might be 1.0439x faster
   math-partial-sums                                  4.9302+-0.3516     ?      4.9983+-0.2885        ? might be 1.0138x slower
   math-spectral-norm                                 1.9349+-0.0297     ?      2.0684+-0.3046        ? might be 1.0690x slower
   regexp-dna                                         6.9442+-0.7975            6.6113+-0.5698          might be 1.0504x faster
   string-base64                                      4.3805+-0.3157     ?      4.5671+-0.7278        ? might be 1.0426x slower
   string-fasta                                       6.0744+-0.5718            5.9352+-0.3420          might be 1.0235x faster
   string-tagcloud                                    9.2666+-2.3816            8.7339+-1.8429          might be 1.0610x faster
   string-unpack-code                                18.2769+-0.9733     ?     18.7372+-0.6021        ? might be 1.0252x slower
   string-validate-input                              4.5714+-0.1111            4.5265+-0.1483        

   &lt;arithmetic&gt;                                       4.6949+-0.1277            4.6734+-0.0972          might be 1.0046x faster

                                                        TipOfTree               FixCopiedSpace                                  
LongSpider:
   3d-cube                                          805.7094+-7.6404     ?    806.0226+-6.6118        ?
   3d-morph                                        1526.6109+-24.9999        1513.9535+-11.3908       
   3d-raytrace                                      614.3464+-8.7051          609.7022+-9.9839        
   access-binary-trees                              818.3505+-15.0017         815.1985+-15.0740       
   access-fannkuch                                  296.8544+-9.7199     ?    306.4336+-11.6174       ? might be 1.0323x slower
   access-nbody                                     516.6049+-7.2703     ?    522.0880+-4.1742        ? might be 1.0106x slower
   access-nsieve                                    387.8221+-15.9180         372.2701+-3.5514          might be 1.0418x faster
   bitops-3bit-bits-in-byte                          35.9387+-3.5344     ?     35.9873+-2.0219        ?
   bitops-bits-in-byte                               75.6221+-1.9154     ?     78.6802+-4.1653        ? might be 1.0404x slower
   bitops-nsieve-bits                               409.4894+-8.5422     ?    415.0891+-8.2474        ? might be 1.0137x slower
   controlflow-recursive                            443.5732+-7.7914          438.3473+-10.8710         might be 1.0119x faster
   crypto-aes                                       563.4209+-15.8738         554.1442+-11.8723         might be 1.0167x faster
   crypto-md5                                       471.5358+-48.5115         457.9851+-9.2968          might be 1.0296x faster
   crypto-sha1                                      669.9952+-14.8409         669.4951+-8.3477        
   date-format-tofte                                514.0834+-6.3499          510.9600+-12.3264       
   date-format-xparb                                668.4271+-12.1127         657.7192+-10.3338         might be 1.0163x faster
   hash-map                                         152.5703+-3.4541          152.1023+-5.6511        
   math-cordic                                      492.8981+-7.4319     ?    493.1539+-6.1470        ?
   math-partial-sums                                466.0164+-9.0087     ?    466.2832+-7.2434        ?
   math-spectral-norm                               565.3679+-21.0931         556.6860+-7.7103          might be 1.0156x faster
   string-base64                                    359.3397+-28.4666    ?    412.5889+-38.7616       ? might be 1.1482x slower
   string-fasta                                     365.3073+-11.5785         364.6408+-14.2899       
   string-tagcloud                                  180.0179+-6.2005          177.1515+-6.4098          might be 1.0162x faster

   &lt;geometric&gt;                                      394.5375+-2.6010     ?    395.6397+-3.6369        ? might be 1.0028x slower

                                                        TipOfTree               FixCopiedSpace                                  
V8Spider:
   crypto                                            52.1081+-3.1869           51.1088+-2.2722          might be 1.0196x faster
   deltablue                                         80.3343+-9.5647           78.6947+-3.1722          might be 1.0208x faster
   earley-boyer                                      42.4431+-0.8959           42.0927+-1.4060        
   raytrace                                          32.0117+-2.2727     ?     34.9329+-4.0449        ? might be 1.0913x slower
   regexp                                            63.2823+-2.5653           62.8281+-4.0752        
   richards                                          59.1543+-6.6468           55.4760+-3.5623          might be 1.0663x faster
   splay                                             36.2467+-1.0525     ?     37.3592+-1.7708        ? might be 1.0307x slower

   &lt;geometric&gt;                                       49.8174+-0.7459     ?     49.8228+-0.5444        ? might be 1.0001x slower

                                                        TipOfTree               FixCopiedSpace                                  
Octane:
   encrypt                                           0.15956+-0.00500    ?     0.16065+-0.00627       ?
   decrypt                                           2.97616+-0.03843          2.93750+-0.05122         might be 1.0132x faster
   deltablue                                x2       0.14242+-0.00897          0.13599+-0.00175         might be 1.0473x faster
   earley                                            0.29243+-0.00569          0.29013+-0.00321       
   boyer                                             4.46454+-0.11166    ?     4.46460+-0.13911       ?
   navier-stokes                            x2       4.94032+-0.03473          4.90796+-0.02179       
   raytrace                                 x2       0.87182+-0.00827          0.87143+-0.01444       
   richards                                 x2       0.08902+-0.00182    ?     0.09067+-0.00416       ? might be 1.0186x slower
   splay                                    x2       0.37149+-0.02165          0.36226+-0.00413         might be 1.0255x faster
   regexp                                   x2      24.73340+-0.56811         24.56235+-0.32210       
   pdfjs                                    x2      38.39102+-0.47150         38.04420+-0.28729       
   mandreel                                 x2      43.85313+-1.18776    ?    43.92042+-1.14205       ?
   gbemu                                    x2      30.17701+-0.33521    ?    33.19136+-3.86788       ? might be 1.0999x slower
   closure                                           0.59715+-0.00688          0.58627+-0.00892         might be 1.0186x faster
   jquery                                            7.56669+-0.16473    ?     7.61232+-0.14786       ?
   box2d                                    x2       9.63491+-0.25951          9.47356+-0.20855         might be 1.0170x faster
   zlib                                     x2     393.31850+-9.03745        384.56517+-21.75852        might be 1.0228x faster
   typescript                               x2     682.39307+-6.40273    ?   697.08797+-8.68681       ? might be 1.0215x slower

   &lt;geometric&gt;                                       5.44570+-0.02575          5.44054+-0.04587         might be 1.0009x faster

                                                        TipOfTree               FixCopiedSpace                                  
Kraken:
   ai-astar                                          130.600+-6.622            129.797+-3.126         
   audio-beat-detection                               48.738+-0.942      ?      49.519+-2.796         ? might be 1.0160x slower
   audio-dft                                          96.355+-0.889      ?      97.792+-2.067         ? might be 1.0149x slower
   audio-fft                                          36.291+-3.453             35.235+-0.464           might be 1.0300x faster
   audio-oscillator                                   59.340+-2.849      ?      59.694+-3.160         ?
   imaging-darkroom                                   60.363+-1.635             60.291+-0.924         
   imaging-desaturate                                 49.022+-1.068      ?      49.720+-3.598         ? might be 1.0142x slower
   imaging-gaussian-blur                              90.088+-7.820             87.661+-1.193           might be 1.0277x faster
   json-parse-financial                               40.625+-3.894      ?      41.270+-4.929         ? might be 1.0159x slower
   json-stringify-tinderbox                           24.805+-1.338             24.689+-1.771         
   stanford-crypto-aes                                41.668+-1.469      ?      43.198+-2.114         ? might be 1.0367x slower
   stanford-crypto-ccm                                38.581+-5.861             37.758+-2.997           might be 1.0218x faster
   stanford-crypto-pbkdf2                            100.647+-5.455             97.234+-1.347           might be 1.0351x faster
   stanford-crypto-sha256-iterative                   38.248+-1.739      ?      39.177+-2.959         ? might be 1.0243x slower

   &lt;arithmetic&gt;                                       61.098+-1.105             60.931+-0.758           might be 1.0027x faster

                                                        TipOfTree               FixCopiedSpace                                  
JSRegress:
   abc-forward-loop-equal                            31.1641+-3.3838           30.9779+-1.7680        
   abc-postfix-backward-loop                         30.6938+-0.9134     ?     33.2917+-3.9165        ? might be 1.0846x slower
   abc-simple-backward-loop                          30.9615+-2.0562     ?     31.3710+-1.0365        ? might be 1.0132x slower
   abc-simple-forward-loop                           30.8789+-2.0193     ?     30.9728+-1.3730        ?
   abc-skippy-loop                                   21.7140+-0.8050           21.1878+-0.3516          might be 1.0248x faster
   abs-boolean                                        2.4642+-0.0446            2.4602+-0.0377        
   adapt-to-double-divide                            16.4482+-0.6066     ?     16.9967+-1.1848        ? might be 1.0333x slower
   aliased-arguments-getbyval                         1.3689+-0.2863            1.3272+-0.3150          might be 1.0314x faster
   allocate-big-object                                2.5109+-0.2415     ?      2.5499+-0.0738        ? might be 1.0155x slower
   arguments-named-and-reflective                    11.0627+-0.7563           10.7510+-0.4254          might be 1.0290x faster
   arguments-out-of-bounds                            9.7712+-0.9535     ?     10.0682+-1.7633        ? might be 1.0304x slower
   arguments-strict-mode                              9.7749+-0.3928            9.6803+-0.5106        
   arguments                                          8.9056+-0.5179            8.7122+-0.4358          might be 1.0222x faster
   arity-mismatch-inlining                            0.9067+-0.0736            0.8721+-0.0353          might be 1.0398x faster
   array-access-polymorphic-structure                 7.4104+-0.6210     ?      7.8524+-1.0001        ? might be 1.0596x slower
   array-nonarray-polymorhpic-access                 24.5367+-1.1550     ?     26.0302+-1.7918        ? might be 1.0609x slower
   array-prototype-every                             80.4622+-5.0811           80.2375+-4.2488        
   array-prototype-forEach                           78.4247+-5.6322     ?     80.8755+-8.0293        ? might be 1.0313x slower
   array-prototype-map                               82.8882+-3.2604     ?     84.2865+-3.4406        ? might be 1.0169x slower
   array-prototype-reduce                            73.0095+-0.8062     ?     74.2415+-4.9245        ? might be 1.0169x slower
   array-prototype-reduceRight                       77.8220+-9.3485           72.0122+-2.4562          might be 1.0807x faster
   array-prototype-some                              78.0437+-2.1908     ?     78.6899+-2.7050        ?
   array-splice-contiguous                           24.4132+-1.5006           24.1165+-0.5654          might be 1.0123x faster
   array-with-double-add                              3.6955+-0.1834     ?      4.1972+-0.9106        ? might be 1.1358x slower
   array-with-double-increment                        3.2454+-0.1009            3.2043+-0.1280          might be 1.0128x faster
   array-with-double-mul-add                          4.4223+-0.0900     ?      4.4705+-0.0982        ? might be 1.0109x slower
   array-with-double-sum                              3.3061+-0.2158            3.2209+-0.0762          might be 1.0264x faster
   array-with-int32-add-sub                           6.2482+-0.1563            6.1901+-0.1305        
   array-with-int32-or-double-sum                     3.5089+-0.3471     ?      3.5098+-0.4097        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     27.2628+-1.7888     ?     29.6006+-0.7332        ? might be 1.0857x slower
   ArrayBuffer-DataView-alloc-long-lived             12.4074+-0.5954     ?     12.9848+-1.2773        ? might be 1.0465x slower
   ArrayBuffer-Int32Array-byteOffset                  3.7382+-0.2548     ?      3.8285+-0.5401        ? might be 1.0242x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     27.3548+-2.3292     !     32.0100+-1.5050        ! definitely 1.1702x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.6488+-2.7733           19.4124+-0.1469          might be 1.0637x faster
   ArrayBuffer-Int8Array-alloc-long-lived            11.5102+-0.7512           11.2008+-0.7394          might be 1.0276x faster
   ArrayBuffer-Int8Array-alloc                       10.0125+-1.0585     ?     10.8179+-2.6574        ? might be 1.0804x slower
   arrowfunction-call                                10.8238+-0.1316     ?     11.4980+-1.7103        ? might be 1.0623x slower
   asmjs_bool_bug                                     8.0575+-0.1099     ?      8.1298+-0.2534        ?
   assign-custom-setter-polymorphic                   2.4163+-0.0516     ?      2.4723+-0.0683        ? might be 1.0232x slower
   assign-custom-setter                               3.2132+-0.1014     ?      3.3443+-0.0718        ? might be 1.0408x slower
   basic-set                                          7.7167+-0.5402            7.5721+-0.8653          might be 1.0191x faster
   big-int-mul                                        3.6086+-0.2924            3.4705+-0.0995          might be 1.0398x faster
   boolean-test                                       3.1538+-0.1985     ?      3.2517+-0.3426        ? might be 1.0310x slower
   branch-fold                                        3.8526+-0.4484            3.6162+-0.0292          might be 1.0654x faster
   branch-on-string-as-boolean                       17.9867+-1.5243           17.0179+-0.8618          might be 1.0569x faster
   by-val-generic                                     2.5059+-0.1534            2.4357+-0.0984          might be 1.0288x faster
   call-spread-apply                                 30.2807+-3.1740           29.7961+-3.5955          might be 1.0163x faster
   call-spread-call                                  22.4650+-1.0887           22.3966+-1.4917        
   captured-assignments                               0.5009+-0.1260            0.4545+-0.0173          might be 1.1021x faster
   cast-int-to-double                                 5.3569+-0.6163            5.3252+-0.5479        
   cell-argument                                      5.9928+-0.2982     ?      6.8588+-2.2697        ? might be 1.1445x slower
   cfg-simplify                                       2.9152+-0.0837     ?      2.9525+-0.1572        ? might be 1.0128x slower
   chain-getter-access                                8.5757+-0.2329     ?      8.9074+-1.0097        ? might be 1.0387x slower
   cmpeq-obj-to-obj-other                            12.9774+-0.5880           12.4681+-1.6979          might be 1.0408x faster
   constant-test                                      4.8534+-0.0560     ?      4.9230+-0.2331        ? might be 1.0143x slower
   create-lots-of-functions                           9.5743+-0.4376     ?      9.8891+-0.8447        ? might be 1.0329x slower
   cse-new-array-buffer                               2.3664+-0.1315            2.3400+-0.1954          might be 1.0113x faster
   cse-new-array                                      2.3691+-0.1564     ?      2.4752+-0.2066        ? might be 1.0448x slower
   custom-setter-getter-as-put-get-by-id              0.5273+-0.0521            0.5238+-0.0335        
   DataView-custom-properties                        33.3038+-4.3339     ?     34.7460+-0.9410        ? might be 1.0433x slower
   delay-tear-off-arguments-strictmode               12.8674+-0.3213           12.5818+-0.2093          might be 1.0227x faster
   deltablue-varargs                                164.8903+-2.7394     ?    172.6110+-9.6130        ? might be 1.0468x slower
   destructuring-arguments                          165.5807+-12.4295    ?    167.4430+-8.7054        ? might be 1.0112x slower
   destructuring-parameters-overridden-by-function   
                                                      0.4729+-0.0230     ?      0.4841+-0.0379        ? might be 1.0237x slower
   destructuring-swap                                 4.8846+-0.1650            4.8426+-0.1990        
   direct-arguments-getbyval                          1.2081+-0.0730            1.1923+-0.0502          might be 1.0133x faster
   div-boolean-double                                 5.3170+-0.1052            5.3094+-0.1569        
   div-boolean                                        8.2005+-0.2362     ?      8.3585+-0.3736        ? might be 1.0193x slower
   double-get-by-val-out-of-bounds                    4.5085+-0.2333     ?      4.8100+-0.9944        ? might be 1.0669x slower
   double-pollution-getbyval                          8.5498+-0.4789            8.5040+-0.3226        
   double-pollution-putbyoffset                       4.1005+-0.6426            3.6105+-0.0785          might be 1.1357x faster
   double-real-use                                   25.4091+-0.8136     ?     26.3377+-3.0904        ? might be 1.0365x slower
   double-to-int32-typed-array-no-inline              2.2882+-0.1136     ?      2.3029+-0.0946        ?
   double-to-int32-typed-array                        2.3308+-0.4174            2.2640+-0.2566          might be 1.0295x faster
   double-to-uint32-typed-array-no-inline             2.3728+-0.2249            2.2776+-0.0759          might be 1.0418x faster
   double-to-uint32-typed-array                       2.1744+-0.0514            2.1381+-0.1081          might be 1.0170x faster
   elidable-new-object-dag                           34.4685+-0.6854     ?     35.2900+-1.3437        ? might be 1.0238x slower
   elidable-new-object-roflcopter                    32.7061+-2.2102     ?     33.0039+-1.3074        ?
   elidable-new-object-then-call                     33.3606+-1.7373           32.4339+-0.7901          might be 1.0286x faster
   elidable-new-object-tree                          37.8837+-1.2294           37.8118+-0.7977        
   empty-string-plus-int                              4.7868+-0.0715     ?      4.8047+-0.3412        ?
   emscripten-cube2hash                              29.1339+-1.1519           27.6968+-0.4991          might be 1.0519x faster
   exit-length-on-plain-object                       15.9366+-0.7079     ?     16.7823+-3.3940        ? might be 1.0531x slower
   external-arguments-getbyval                        1.2254+-0.1222     ?      1.2709+-0.0528        ? might be 1.0371x slower
   external-arguments-putbyval                        2.3226+-0.4193     ?      2.4247+-0.3544        ? might be 1.0440x slower
   fixed-typed-array-storage-var-index                1.3617+-0.1817            1.2938+-0.0670          might be 1.0525x faster
   fixed-typed-array-storage                          0.9735+-0.1061     ?      1.0000+-0.0866        ? might be 1.0272x slower
   Float32Array-matrix-mult                           4.5004+-0.6646     ?      4.7171+-0.5611        ? might be 1.0482x slower
   Float32Array-to-Float64Array-set                  51.6944+-3.5117           51.5225+-1.8954        
   Float64Array-alloc-long-lived                     62.6529+-3.8010           62.4897+-3.0304        
   Float64Array-to-Int16Array-set                    60.6450+-4.1339     ?     60.9178+-4.7199        ?
   fold-double-to-int                                13.4349+-1.1272           12.9364+-0.5407          might be 1.0385x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.0498+-1.1835     ?     10.9462+-0.7232        ? might be 1.0892x slower
   fold-get-by-id-to-multi-get-by-offset              9.9194+-0.6741            9.4346+-0.2141          might be 1.0514x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.1796+-1.2314           10.0800+-1.0000        
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.4378+-1.0191            9.0635+-0.5323          might be 1.0413x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     11.8475+-0.9870            9.0859+-2.3046          might be 1.3039x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      9.9958+-0.5323     ?     11.1168+-2.1763        ? might be 1.1121x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.7776+-0.7982     ?     10.4193+-1.2341        ? might be 1.0656x slower
   fold-put-by-id-to-multi-put-by-offset             11.0192+-2.1340     ?     11.6873+-1.9903        ? might be 1.0606x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.1191+-1.1688     ?     11.1528+-1.5272        ?
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.4156+-0.8490     ?     11.6044+-1.7362        ? might be 1.1141x slower
   fold-put-structure                                 8.0559+-0.5954            7.9521+-1.3478          might be 1.0130x faster
   for-of-iterate-array-entries                      11.2197+-0.6165           10.8237+-0.2479          might be 1.0366x faster
   for-of-iterate-array-keys                          3.7569+-0.3616            3.6137+-0.2025          might be 1.0396x faster
   for-of-iterate-array-values                        3.3894+-0.0885     ?      3.3934+-0.0863        ?
   fround                                            18.1292+-1.4539           17.8774+-0.3611          might be 1.0141x faster
   ftl-library-inlining-dataview                     60.6005+-3.3250           59.5945+-1.0366          might be 1.0169x faster
   ftl-library-inlining                             102.5514+-5.1673          100.2622+-4.2562          might be 1.0228x faster
   function-call                                     10.7756+-0.1412     ?     10.7989+-0.1373        ?
   function-dot-apply                                 2.1600+-0.1704            2.0380+-0.0557          might be 1.0599x faster
   function-test                                      2.8422+-0.1679            2.7474+-0.0760          might be 1.0345x faster
   function-with-eval                                84.1970+-2.2865     ?     84.2501+-3.3290        ?
   gcse-poly-get-less-obvious                        22.5426+-2.3360           21.4302+-0.2769          might be 1.0519x faster
   gcse-poly-get                                     24.1287+-2.3189           22.4238+-2.3242          might be 1.0760x faster
   gcse                                               3.5938+-0.4829            3.4324+-0.0398          might be 1.0470x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7181+-0.1166            2.6603+-0.0800          might be 1.0218x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.0238+-0.4945            4.7321+-0.0650          might be 1.0617x faster
   get-by-id-chain-from-try-block                     2.4784+-0.1132            2.4163+-0.1537          might be 1.0257x faster
   get-by-id-check-structure-elimination              3.9506+-0.2158            3.9404+-0.0427        
   get-by-id-proto-or-self                           16.9796+-1.8414     ?     18.0381+-2.0957        ? might be 1.0623x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8586+-0.0332     ?      2.9137+-0.0392        ? might be 1.0193x slower
   get-by-id-self-or-proto                           16.9038+-1.4576           16.5980+-1.7433          might be 1.0184x faster
   get-by-val-out-of-bounds                           4.3463+-0.3729            4.2174+-0.1331          might be 1.0305x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7180+-0.0562     ?      2.8309+-0.1301        ? might be 1.0416x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      6.3052+-0.5487            6.1517+-0.1490          might be 1.0250x faster
   get-by-val-with-string-chain-from-try-block   
                                                      2.4035+-0.0273     ?      2.5562+-0.1505        ? might be 1.0635x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.7780+-0.3228            5.6174+-0.1685          might be 1.0286x faster
   get-by-val-with-string-proto-or-self              16.3012+-0.5156     ?     16.8388+-1.1084        ? might be 1.0330x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.1342+-0.1575            3.1084+-0.0984        
   get-by-val-with-string-self-or-proto              16.6978+-1.2499           15.7971+-0.4090          might be 1.0570x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9325+-0.0518     ?      2.9466+-0.0775        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.4537+-0.2359           12.3475+-0.1732        
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.5321+-0.1220            2.4733+-0.1044          might be 1.0237x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.5799+-0.3498     ?     12.5893+-3.1120        ? might be 1.0872x slower
   get-by-val-with-symbol-proto-or-self              17.5138+-1.6705     ?     18.1098+-2.1002        ? might be 1.0340x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.6557+-0.0309     !      3.7824+-0.0925        ! definitely 1.0347x slower
   get-by-val-with-symbol-self-or-proto              18.2387+-4.0029           16.7940+-1.0130          might be 1.0860x faster
   get_callee_monomorphic                             2.4284+-0.1695     ?      3.0763+-0.5641        ? might be 1.2668x slower
   get_callee_polymorphic                             3.5172+-0.0820            3.4158+-0.2014          might be 1.0297x faster
   getter-no-activation                               4.9306+-0.2874            4.8782+-0.2925          might be 1.0107x faster
   getter-prototype                                   8.3937+-0.9587            8.2848+-1.1422          might be 1.0131x faster
   getter-richards-try-catch                       1048.6664+-28.0096        1013.8158+-29.7771         might be 1.0344x faster
   getter-richards                                  128.1370+-17.0216         122.4501+-15.6806         might be 1.0464x faster
   getter                                             5.6335+-0.7425     ?      5.6915+-0.6879        ? might be 1.0103x slower
   global-object-access-with-mutating-structure   
                                                      5.6742+-0.2388     ?      5.7172+-0.3622        ?
   global-var-const-infer-fire-from-opt               0.7438+-0.0776     ?      0.7799+-0.0992        ? might be 1.0485x slower
   global-var-const-infer                             0.7218+-0.1364     ?      0.7644+-0.2352        ? might be 1.0590x slower
   hard-overflow-check-equal                         29.0748+-3.1458           28.0609+-1.5640          might be 1.0361x faster
   hard-overflow-check                               26.8239+-0.9391     ?     27.4438+-1.7537        ? might be 1.0231x slower
   HashMap-put-get-iterate-keys                      27.8287+-1.9413     ?     29.1774+-3.7225        ? might be 1.0485x slower
   HashMap-put-get-iterate                           28.9170+-1.4810           28.3873+-2.3841          might be 1.0187x faster
   HashMap-string-put-get-iterate                    24.0299+-1.4740           23.8142+-1.0354        
   hoist-make-rope                                    8.4922+-0.4921            8.3471+-0.8363          might be 1.0174x faster
   hoist-poly-check-structure-effectful-loop   
                                                      3.7324+-0.2023            3.6368+-0.0433          might be 1.0263x faster
   hoist-poly-check-structure                         3.0813+-0.0513     ?      3.1184+-0.1415        ? might be 1.0120x slower
   imul-double-only                                   7.5843+-0.2716     ?      7.8321+-0.1182        ? might be 1.0327x slower
   imul-int-only                                      8.7727+-0.6827     ?      9.1214+-1.3079        ? might be 1.0397x slower
   imul-mixed                                         7.1309+-0.5430            6.9435+-0.3777          might be 1.0270x faster
   in-four-cases                                     18.5672+-0.3432           18.3702+-0.3603          might be 1.0107x faster
   in-one-case-false                                 10.2209+-0.3027     ?     11.7047+-3.6783        ? might be 1.1452x slower
   in-one-case-true                                  10.6510+-0.4965           10.2890+-0.3458          might be 1.0352x faster
   in-two-cases                                      10.7263+-0.4320     ?     10.8219+-0.8758        ?
   indexed-properties-in-objects                      3.0272+-0.2933            2.8699+-0.2517          might be 1.0548x faster
   infer-closure-const-then-mov-no-inline             3.9108+-0.5068            3.6043+-0.0192          might be 1.0851x faster
   infer-closure-const-then-mov                      17.3678+-2.4447           16.3692+-0.6363          might be 1.0610x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.1572+-0.3073     ?     11.2179+-0.4389        ?
   infer-closure-const-then-put-to-scope             23.0612+-0.7706           22.8107+-0.4092          might be 1.0110x faster
   infer-closure-const-then-reenter-no-inline   
                                                     47.5253+-0.9332     ?     49.1792+-2.4607        ? might be 1.0348x slower
   infer-closure-const-then-reenter                  22.9773+-0.1275     !     23.8346+-0.6302        ! definitely 1.0373x slower
   infer-constant-global-property                     3.4646+-0.1882            3.4371+-0.0429        
   infer-constant-property                            2.6524+-0.0799     ?      2.7187+-0.2270        ? might be 1.0250x slower
   infer-one-time-closure-ten-vars                    7.8044+-0.1815     ?      8.0904+-0.5103        ? might be 1.0366x slower
   infer-one-time-closure-two-vars                    7.3600+-0.2455     ?      7.6296+-0.3245        ? might be 1.0366x slower
   infer-one-time-closure                             7.3606+-0.2065     ?      7.4163+-0.1754        ?
   infer-one-time-deep-closure                       11.3361+-0.4301           10.8643+-0.2868          might be 1.0434x faster
   inline-arguments-access                            3.7467+-0.2916     ?      5.1013+-1.7195        ? might be 1.3616x slower
   inline-arguments-aliased-access                    3.8338+-0.3661            3.6787+-0.2383          might be 1.0422x faster
   inline-arguments-local-escape                      3.7628+-0.2162     ?      3.8446+-0.3185        ? might be 1.0217x slower
   inline-get-scoped-var                              4.6946+-0.1682            4.6260+-0.1894          might be 1.0148x faster
   inlined-put-by-id-transition                       9.2303+-0.3914     ?      9.5533+-0.6056        ? might be 1.0350x slower
   inlined-put-by-val-with-string-transition   
                                                     43.5966+-3.7421           42.3875+-0.4618          might be 1.0285x faster
   inlined-put-by-val-with-symbol-transition   
                                                     44.3243+-6.0398           43.7332+-1.8454          might be 1.0135x faster
   int-or-other-abs-then-get-by-val                   4.6696+-0.3510            4.4846+-0.0427          might be 1.0412x faster
   int-or-other-abs-zero-then-get-by-val             16.0385+-0.8554     ?     16.7196+-0.9069        ? might be 1.0425x slower
   int-or-other-add-then-get-by-val                   4.2383+-0.0552     ?      4.2633+-0.1041        ?
   int-or-other-add                                   5.0542+-0.1731     ?      5.4605+-0.9747        ? might be 1.0804x slower
   int-or-other-div-then-get-by-val                   3.8167+-0.0770     ?      4.3211+-1.1043        ? might be 1.1322x slower
   int-or-other-max-then-get-by-val                   3.9577+-0.1366     ?      4.1515+-0.4346        ? might be 1.0490x slower
   int-or-other-min-then-get-by-val                   3.8676+-0.1069     ?      4.1446+-0.3627        ? might be 1.0716x slower
   int-or-other-mod-then-get-by-val                   3.6806+-0.1742     ?      3.6808+-0.0975        ?
   int-or-other-mul-then-get-by-val                   3.6530+-0.1686     ?      3.6669+-0.1072        ?
   int-or-other-neg-then-get-by-val                   4.2793+-0.1259            4.1722+-0.1702          might be 1.0257x faster
   int-or-other-neg-zero-then-get-by-val             15.9623+-0.5001     ?     16.1167+-0.6903        ?
   int-or-other-sub-then-get-by-val                   4.1899+-0.0342     ^      4.1150+-0.0339        ^ definitely 1.0182x faster
   int-or-other-sub                                   3.8612+-1.0746            3.6907+-0.6088          might be 1.0462x faster
   int-overflow-local                                 4.2452+-0.3406            4.1601+-0.0923          might be 1.0205x faster
   Int16Array-alloc-long-lived                       45.3502+-1.6401     ?     46.7292+-4.9774        ? might be 1.0304x slower
   Int16Array-bubble-sort-with-byteLength            18.2366+-1.0465     !     22.9866+-0.4364        ! definitely 1.2605x slower
   Int16Array-bubble-sort                            18.0867+-1.1051     !     21.2810+-0.4866        ! definitely 1.1766x slower
   Int16Array-load-int-mul                            1.5097+-0.0323            1.5090+-0.0519        
   Int16Array-to-Int32Array-set                      47.6233+-2.4797           46.5300+-0.8959          might be 1.0235x faster
   Int32Array-alloc-large                            12.5791+-0.7616     ?     12.8657+-0.7147        ? might be 1.0228x slower
   Int32Array-alloc-long-lived                       50.9106+-1.9551           49.1442+-1.8145          might be 1.0359x faster
   Int32Array-alloc                                   3.1104+-0.4508            2.9573+-0.2489          might be 1.0518x faster
   Int32Array-Int8Array-view-alloc                    6.5586+-0.8431            6.0727+-0.2254          might be 1.0800x faster
   int52-spill                                        4.5531+-0.1130     ?      4.6915+-0.1920        ? might be 1.0304x slower
   Int8Array-alloc-long-lived                        39.0082+-1.0628     ?     39.8475+-1.7275        ? might be 1.0215x slower
   Int8Array-load-with-byteLength                     3.4452+-0.0592            3.4191+-0.0401        
   Int8Array-load                                     3.4467+-0.1361     ?      3.5317+-0.2132        ? might be 1.0246x slower
   integer-divide                                    10.6822+-0.6200           10.6017+-0.7344        
   integer-modulo                                     1.6902+-0.1632            1.6418+-0.0650          might be 1.0295x faster
   is-boolean-fold-tricky                             4.0055+-0.3872            3.9093+-0.2400          might be 1.0246x faster
   is-boolean-fold                                    2.6561+-0.0504     ?      2.6775+-0.0837        ?
   is-function-fold-tricky-internal-function   
                                                      9.7225+-0.4443            9.6392+-0.2614        
   is-function-fold-tricky                            4.1112+-0.3128     ?      4.4465+-1.0935        ? might be 1.0816x slower
   is-function-fold                                   2.7351+-0.1183            2.6733+-0.0343          might be 1.0231x faster
   is-number-fold-tricky                              3.9971+-0.1738            3.9638+-0.0534        
   is-number-fold                                     2.6286+-0.0419     ?      2.7073+-0.1232        ? might be 1.0300x slower
   is-object-or-null-fold-functions                   2.6995+-0.0930            2.6900+-0.0193        
   is-object-or-null-fold-less-tricky                 4.1571+-0.2070            4.0397+-0.0472          might be 1.0291x faster
   is-object-or-null-fold-tricky                      4.8880+-0.2834     ?      5.4128+-0.6588        ? might be 1.1074x slower
   is-object-or-null-fold                             2.7725+-0.0996            2.6940+-0.0602          might be 1.0292x faster
   is-object-or-null-trickier-function                4.1076+-0.1010            4.0198+-0.0665          might be 1.0218x faster
   is-object-or-null-trickier-internal-function   
                                                      9.9220+-0.3365     ?     10.2238+-0.3962        ? might be 1.0304x slower
   is-object-or-null-tricky-function                  4.0455+-0.0846            4.0069+-0.0535        
   is-object-or-null-tricky-internal-function   
                                                      7.3991+-0.2752     ?      7.4666+-0.0809        ?
   is-string-fold-tricky                              4.2275+-0.6159            4.1530+-0.3421          might be 1.0179x faster
   is-string-fold                                     2.6441+-0.0445            2.6378+-0.0221        
   is-undefined-fold-tricky                           3.6704+-0.2979     ?      3.7847+-1.0370        ? might be 1.0312x slower
   is-undefined-fold                                  2.6539+-0.0488     ?      2.7265+-0.1425        ? might be 1.0274x slower
   JSONP-negative-0                                   0.2832+-0.0244            0.2752+-0.0185          might be 1.0290x faster
   large-int-captured                                 4.1141+-0.1730     ?      4.2308+-0.1833        ? might be 1.0284x slower
   large-int-neg                                     14.5450+-0.8823           14.3423+-0.7510          might be 1.0141x faster
   large-int                                         13.3562+-0.3653           13.0203+-0.5566          might be 1.0258x faster
   load-varargs-elimination                          21.5830+-2.7888     ?     21.8195+-1.9927        ? might be 1.0110x slower
   logical-not-weird-types                            3.1610+-0.1301            3.1061+-0.1031          might be 1.0177x faster
   logical-not                                        4.3964+-0.0291            4.3866+-0.1434        
   lots-of-fields                                     9.4120+-0.2883     ?      9.4122+-0.6217        ?
   make-indexed-storage                               2.9298+-0.1870     ?      3.0334+-0.1470        ? might be 1.0353x slower
   make-rope-cse                                      3.6802+-0.1081     ?      3.7300+-0.1464        ? might be 1.0135x slower
   marsaglia-larger-ints                             33.2210+-0.9075           33.1724+-1.9438        
   marsaglia-osr-entry                               23.5010+-3.1945           21.8896+-0.4764          might be 1.0736x faster
   math-with-out-of-bounds-array-values              23.0194+-1.6751           22.2487+-1.2765          might be 1.0346x faster
   max-boolean                                        2.7086+-0.0793     ?      2.7802+-0.2727        ? might be 1.0264x slower
   method-on-number                                  16.0817+-0.8546     ?     17.2286+-2.4411        ? might be 1.0713x slower
   min-boolean                                        2.7028+-0.1230     ?      2.7834+-0.1889        ? might be 1.0298x slower
   minus-boolean-double                               3.0744+-0.0367     ?      3.1432+-0.0908        ? might be 1.0224x slower
   minus-boolean                                      2.4376+-0.2103            2.3658+-0.0382          might be 1.0304x faster
   misc-strict-eq                                    29.0466+-1.0873     ?     30.4949+-1.9645        ? might be 1.0499x slower
   mod-boolean-double                                11.2804+-0.4355     ?     11.6716+-1.2118        ? might be 1.0347x slower
   mod-boolean                                        8.3440+-0.1253     ?      8.3530+-0.1267        ?
   mul-boolean-double                                 3.7204+-0.2643            3.7049+-0.1704        
   mul-boolean                                        2.8214+-0.0523     ?      2.9040+-0.1780        ? might be 1.0293x slower
   neg-boolean                                        3.1344+-0.2022            3.1181+-0.0737        
   negative-zero-divide                               0.3678+-0.0302            0.3599+-0.0189          might be 1.0218x faster
   negative-zero-modulo                               0.3758+-0.0448     ?      0.3823+-0.0667        ? might be 1.0173x slower
   negative-zero-negate                               0.3327+-0.0067     ?      0.3447+-0.0265        ? might be 1.0361x slower
   nested-function-parsing                           47.2879+-3.1897           46.9286+-1.6241        
   new-array-buffer-dead                             90.8338+-6.2374           88.3044+-1.4349          might be 1.0286x faster
   new-array-buffer-push                              6.4858+-0.5603     ?      6.5210+-0.5068        ?
   new-array-dead                                    15.3660+-1.5955           15.1783+-1.0851          might be 1.0124x faster
   new-array-push                                     3.7296+-0.2838            3.6932+-0.3360        
   no-inline-constructor                             31.2255+-1.1086     ?     32.1096+-2.9982        ? might be 1.0283x slower
   number-test                                        3.0324+-0.0427     ?      3.1300+-0.1304        ? might be 1.0322x slower
   object-closure-call                                4.8304+-0.0310     ?      4.8833+-0.1591        ? might be 1.0110x slower
   object-get-own-property-symbols-on-large-array   
                                                      4.6917+-1.0653            4.3891+-0.1270          might be 1.0689x faster
   object-test                                        2.7924+-0.1871            2.7744+-0.1689        
   obvious-sink-pathology-taken                      98.5116+-1.9396     ?     98.6770+-2.9661        ?
   obvious-sink-pathology                            30.4033+-1.0448           30.2486+-1.1713        
   obviously-elidable-new-object                     30.4155+-1.4412           29.5697+-0.9288          might be 1.0286x faster
   plus-boolean-arith                                 2.5470+-0.3828     ?      2.6559+-0.5509        ? might be 1.0428x slower
   plus-boolean-double                                3.1172+-0.0566     ?      3.1595+-0.1393        ? might be 1.0136x slower
   plus-boolean                                       2.6262+-0.1012            2.5956+-0.2142          might be 1.0118x faster
   poly-chain-access-different-prototypes-simple   
                                                      2.9096+-0.7499            2.5925+-0.0376          might be 1.1223x faster
   poly-chain-access-different-prototypes             2.5839+-0.0282     ?      2.6790+-0.2426        ? might be 1.0368x slower
   poly-chain-access-simpler                          2.6329+-0.2033     ?      2.6641+-0.1609        ? might be 1.0119x slower
   poly-chain-access                                  2.5785+-0.0652            2.5541+-0.0911        
   poly-stricteq                                     55.6777+-3.4477           55.2709+-1.1736        
   polymorphic-array-call                             1.2375+-0.0661     ?      1.2862+-0.0810        ? might be 1.0394x slower
   polymorphic-get-by-id                              2.9557+-0.1043            2.8973+-0.0555          might be 1.0202x faster
   polymorphic-put-by-id                             28.6547+-0.7492           28.1863+-1.2392          might be 1.0166x faster
   polymorphic-put-by-val-with-string                29.3873+-1.8661     ?     30.1665+-2.4354        ? might be 1.0265x slower
   polymorphic-put-by-val-with-symbol                28.5618+-1.3291     ?     30.3577+-2.9383        ? might be 1.0629x slower
   polymorphic-structure                             13.1352+-0.8458           12.5620+-0.2657          might be 1.0456x faster
   polyvariant-monomorphic-get-by-id                  6.4662+-0.8416     ?      8.4781+-3.0226        ? might be 1.3112x slower
   proto-getter-access                                8.4834+-0.3113            8.2262+-0.1137          might be 1.0313x faster
   prototype-access-with-mutating-prototype           5.4614+-0.2007     ?      5.5870+-0.3961        ? might be 1.0230x slower
   put-by-id-replace-and-transition                   8.1412+-0.9510            7.6584+-0.1285          might be 1.0630x faster
   put-by-id-slightly-polymorphic                     2.7030+-0.0680     ?      2.8010+-0.1725        ? might be 1.0362x slower
   put-by-id                                          9.7091+-0.3950     ?      9.9709+-0.6281        ? might be 1.0270x slower
   put-by-val-direct                                  0.3446+-0.0155     ?      0.3694+-0.0252        ? might be 1.0718x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.3026+-0.1731     ?      5.4196+-0.0680        ? might be 1.0221x slower
   put-by-val-machine-int                             2.8142+-0.7335            2.6460+-0.2065          might be 1.0635x faster
   put-by-val-with-string-replace-and-transition   
                                                     11.7597+-2.6047           11.2822+-0.9953          might be 1.0423x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      3.0305+-0.1210     ?      3.0417+-0.1207        ?
   put-by-val-with-string                            10.3558+-0.2464     ?     10.9613+-0.7472        ? might be 1.0585x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     11.8803+-0.5061     ?     12.4097+-1.1627        ? might be 1.0446x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.2760+-0.0549            3.2487+-0.1779        
   put-by-val-with-symbol                            10.8193+-0.6517     ?     11.1075+-0.7756        ? might be 1.0266x slower
   rare-osr-exit-on-local                            14.5360+-1.2420           14.0629+-0.4874          might be 1.0336x faster
   raytrace-with-empty-try-catch                      5.4923+-0.4648            5.4292+-0.4107          might be 1.0116x faster
   raytrace-with-try-catch                           10.6770+-1.7018            9.9727+-0.2972          might be 1.0706x faster
   register-pressure-from-osr                        16.7854+-0.4993           16.2448+-0.2864          might be 1.0333x faster
   repeat-multi-get-by-offset                        22.6305+-0.7849     ?     22.6980+-0.2880        ?
   richards-empty-try-catch                          71.6922+-1.0434     ?     75.7991+-6.0449        ? might be 1.0573x slower
   richards-try-catch                               241.1811+-4.2577     ?    243.5395+-10.0137       ?
   setter-prototype                                   8.3781+-1.2024            7.9510+-0.2652          might be 1.0537x faster
   setter                                             6.3433+-0.9309            5.4824+-0.3858          might be 1.1570x faster
   simple-activation-demo                            24.8235+-1.0501           24.0968+-0.7077          might be 1.0302x faster
   simple-getter-access                              10.9160+-0.6412           10.8687+-0.1730        
   simple-poly-call-nested                            8.8516+-0.4480     ?      9.0648+-0.6486        ? might be 1.0241x slower
   simple-poly-call                                   1.4803+-0.3082            1.2985+-0.0702          might be 1.1400x faster
   sin-boolean                                       20.5022+-2.5595           19.5835+-1.8078          might be 1.0469x faster
   singleton-scope                                   65.4546+-7.3064     ?     67.3123+-4.3451        ? might be 1.0284x slower
   sink-function                                     10.4403+-1.1016            9.7930+-0.7607          might be 1.0661x faster
   sink-huge-activation                              16.1595+-0.7799           15.7345+-0.8732          might be 1.0270x faster
   sinkable-new-object-dag                           53.0458+-2.8627     ?     55.6769+-3.8141        ? might be 1.0496x slower
   sinkable-new-object-taken                         42.0523+-2.1385           41.5013+-1.8950          might be 1.0133x faster
   sinkable-new-object                               30.0297+-0.5715     ?     30.1630+-0.8600        ?
   slow-array-profile-convergence                     2.6390+-0.0881            2.5564+-0.1163          might be 1.0323x faster
   slow-convergence                                   2.4880+-0.2342     ?      2.5614+-0.2062        ? might be 1.0295x slower
   slow-ternaries                                    18.9313+-4.8091           18.2568+-1.4570          might be 1.0369x faster
   sorting-benchmark                                 17.3010+-0.4804     ?     17.8918+-0.8431        ? might be 1.0341x slower
   sparse-conditional                                 1.1800+-0.0261     ?      1.2651+-0.1547        ? might be 1.0722x slower
   splice-to-remove                                  12.2555+-0.2623     ?     12.3840+-0.7041        ? might be 1.0105x slower
   string-char-code-at                               15.3091+-2.5906           13.0959+-0.1779          might be 1.1690x faster
   string-concat-object                               2.4122+-0.5254            2.2030+-0.1300          might be 1.0950x faster
   string-concat-pair-object                          2.1379+-0.0618            2.0822+-0.0879          might be 1.0268x faster
   string-concat-pair-simple                          9.8256+-0.7599     ?     10.2390+-1.3859        ? might be 1.0421x slower
   string-concat-simple                               9.7703+-1.2012     ?      9.9089+-0.9068        ? might be 1.0142x slower
   string-cons-repeat                                 6.7559+-0.4447     ?      7.1316+-0.8253        ? might be 1.0556x slower
   string-cons-tower                                  6.6171+-0.3817     ?      6.7585+-0.3833        ? might be 1.0214x slower
   string-equality                                   18.5240+-0.5541     ?     18.5402+-0.6772        ?
   string-get-by-val-big-char                         6.5913+-0.4142     ?      6.7442+-0.4124        ? might be 1.0232x slower
   string-get-by-val-out-of-bounds-insane             3.1063+-0.0794     !      3.4075+-0.1704        ! definitely 1.0970x slower
   string-get-by-val-out-of-bounds                    3.9663+-0.0968     ?      4.0396+-0.2108        ? might be 1.0185x slower
   string-get-by-val                                  2.9362+-0.2468            2.8223+-0.0428          might be 1.0404x faster
   string-hash                                        1.9108+-0.1512     ?      2.0015+-0.1935        ? might be 1.0474x slower
   string-long-ident-equality                        15.3656+-0.7069     ?     15.5182+-1.3480        ?
   string-out-of-bounds                              10.3516+-0.5649     ?     10.6556+-0.5740        ? might be 1.0294x slower
   string-repeat-arith                               27.1805+-0.8199     ?     28.3769+-4.6810        ? might be 1.0440x slower
   string-sub                                        57.2643+-3.5215           54.3238+-2.1378          might be 1.0541x faster
   string-test                                        2.9241+-0.0377            2.9076+-0.0414        
   string-var-equality                               29.1103+-4.3248           27.9296+-1.6396          might be 1.0423x faster
   structure-hoist-over-transitions                   2.3761+-0.0775     ?      2.4362+-0.2285        ? might be 1.0253x slower
   substring-concat-weird                            35.3274+-0.9610     ?     37.2633+-2.2833        ? might be 1.0548x slower
   substring-concat                                  40.9032+-1.2125     ?     41.3151+-3.4707        ? might be 1.0101x slower
   substring                                         47.6965+-2.4566           46.9777+-1.8161          might be 1.0153x faster
   switch-char-constant                               2.6969+-0.0682     ?      2.7048+-0.0361        ?
   switch-char                                        6.4683+-1.3642            6.4341+-1.4367        
   switch-constant                                    8.3125+-0.8263     ?      8.6270+-0.7252        ? might be 1.0378x slower
   switch-string-basic-big-var                       14.9732+-0.2184     ?     15.0809+-0.5273        ?
   switch-string-basic-big                           15.5853+-0.5437           15.5821+-0.3280        
   switch-string-basic-var                           14.5590+-1.1603           13.8795+-0.6760          might be 1.0490x faster
   switch-string-basic                               13.0754+-0.3367     ?     13.5687+-0.3293        ? might be 1.0377x slower
   switch-string-big-length-tower-var                18.5850+-0.8896           18.3687+-1.1342          might be 1.0118x faster
   switch-string-length-tower-var                    13.8989+-0.8687     ?     15.9358+-6.3721        ? might be 1.1466x slower
   switch-string-length-tower                        12.8767+-1.4143     ?     14.4268+-3.8597        ? might be 1.1204x slower
   switch-string-short                               13.6551+-1.6640           12.2795+-0.5669          might be 1.1120x faster
   switch                                            10.4449+-0.2514     ?     11.9089+-2.1197        ? might be 1.1402x slower
   tear-off-arguments-simple                          3.3790+-0.4458            3.3739+-0.4827        
   tear-off-arguments                                 4.0663+-0.1074            4.0545+-0.1537        
   temporal-structure                                11.9174+-0.3435           11.7729+-0.3383          might be 1.0123x faster
   to-int32-boolean                                  13.6026+-1.6414           12.7845+-0.3351          might be 1.0640x faster
   try-catch-get-by-val-cloned-arguments              9.4069+-0.5299     ?      9.7902+-0.8841        ? might be 1.0407x slower
   try-catch-get-by-val-direct-arguments              2.2515+-0.1295            2.1430+-0.3807          might be 1.0506x faster
   try-catch-get-by-val-scoped-arguments              4.4825+-0.2384     ?      5.0721+-1.0978        ? might be 1.1315x slower
   typed-array-get-set-by-val-profiling              27.9195+-0.4904     ?     28.6694+-1.2855        ? might be 1.0269x slower
   undefined-property-access                        223.7152+-7.5880          219.2866+-5.5572          might be 1.0202x faster
   undefined-test                                     3.0654+-0.1101     ?      3.4283+-0.7443        ? might be 1.1184x slower
   unprofiled-licm                                    9.6305+-0.6064            9.3575+-0.1916          might be 1.0292x faster
   v8-raytrace-with-empty-try-catch                  25.2331+-1.1381           24.6231+-1.5966          might be 1.0248x faster
   v8-raytrace-with-try-catch                        61.6745+-1.3695     ?     62.7915+-2.6779        ? might be 1.0181x slower
   varargs-call                                      13.3997+-0.3756     ?     14.6288+-2.0211        ? might be 1.0917x slower
   varargs-construct-inline                          22.8887+-1.8688           22.6438+-1.2554          might be 1.0108x faster
   varargs-construct                                 20.9871+-0.8224     ?     22.9686+-6.5820        ? might be 1.0944x slower
   varargs-inline                                     8.8368+-0.2415     ?      9.2953+-0.9086        ? might be 1.0519x slower
   varargs-strict-mode                               10.8712+-1.1241           10.4580+-0.9322          might be 1.0395x faster
   varargs                                           10.2159+-0.5462           10.0581+-0.1973          might be 1.0157x faster
   weird-inlining-const-prop                          2.3569+-0.2413            2.2557+-0.1660          might be 1.0449x faster

   &lt;geometric&gt;                                        8.2048+-0.0352     ?      8.2434+-0.0572        ? might be 1.0047x slower

                                                        TipOfTree               FixCopiedSpace                                  
AsmBench:
   bigfib.cpp                                       455.1402+-8.6550     ?    459.8617+-15.2251       ? might be 1.0104x slower
   cray.c                                           396.9618+-7.2343     ?    404.3281+-12.3137       ? might be 1.0186x slower
   dry.c                                            432.2891+-13.0264         423.9412+-9.6189          might be 1.0197x faster
   FloatMM.c                                        703.2460+-11.3608         701.4260+-7.8377        
   gcc-loops.cpp                                   3517.8320+-24.1046        3505.3517+-30.6426       
   n-body.c                                         845.9297+-11.2608         843.3041+-8.8868        
   Quicksort.c                                      417.0189+-8.6145     ?    418.2319+-12.8214       ?
   stepanov_container.cpp                          3613.0169+-50.2972    ?   3787.6472+-439.0971      ? might be 1.0483x slower
   Towers.c                                         241.4386+-10.6602         238.7921+-9.9287          might be 1.0111x faster

   &lt;geometric&gt;                                      730.6750+-4.6671     ?    733.5150+-11.9762       ? might be 1.0039x slower

                                                        TipOfTree               FixCopiedSpace                                  
CompressionBench:
   huffman                                           61.8119+-0.8302           61.5134+-1.9500        
   arithmetic-simple                                284.7485+-9.7880          275.9785+-3.1879          might be 1.0318x faster
   arithmetic-precise                               263.6670+-10.7136         252.2924+-4.6120          might be 1.0451x faster
   arithmetic-complex-precise                       255.2839+-4.1047     ?    259.1010+-6.9896        ? might be 1.0150x slower
   arithmetic-precise-order-0                       293.2223+-7.4550     ?    294.0639+-5.5488        ?
   arithmetic-precise-order-1                       318.6818+-13.4544         312.2461+-7.2358          might be 1.0206x faster
   arithmetic-precise-order-2                       375.6613+-10.9248         370.0618+-21.7606         might be 1.0151x faster
   arithmetic-simple-order-1                        332.5595+-2.9513     ?    336.1376+-13.8921       ? might be 1.0108x slower
   arithmetic-simple-order-2                        375.5081+-12.7832    ?    385.2797+-8.4504        ? might be 1.0260x slower
   lz-string                                        333.2141+-20.7542         317.3293+-8.2851          might be 1.0501x faster

   &lt;geometric&gt;                                      265.2351+-1.3158          262.3610+-3.4897          might be 1.0110x faster

                                                        TipOfTree               FixCopiedSpace                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                                   51.4099+-0.1422           51.3610+-0.2696          might be 1.0010x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134165</commentid>
    <comment_count>3</comment_count>
      <attachid>263368</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 00:05:49 -0700</bug_when>
    <thetext>Created attachment 263368
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134189</commentid>
    <comment_count>4</comment_count>
      <attachid>263368</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-10-17 09:04:23 -0700</bug_when>
    <thetext>Comment on attachment 263368
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134194</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 10:27:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134201</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-10-17 11:17:01 -0700</bug_when>
    <thetext>This change appears to have broken some Mac and iOS builds:
https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20%2832-bit%20Build%29/builds/465

https://build.webkit.org/builders/Apple%20iOS%209%20Release%20%28Build%29/builds/398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134209</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 11:36:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This change appears to have broken some Mac and iOS builds:
&gt; https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20%2832-
&gt; bit%20Build%29/builds/465
&gt; 
&gt; https://build.webkit.org/builders/Apple%20iOS%209%20Release%20%28Build%29/
&gt; builds/398

Oops, forgot to include &quot;JSCInlines.h&quot; from CopiedBlock.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134211</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 11:36:51 -0700</bug_when>
    <thetext>I&apos;m afk for ~10mins, I can land that fix after. Or relate the patch of you want to roll out. Or you could try the fix I suggested. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134234</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 13:27:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I&apos;m afk for ~10mins, I can land that fix after. Or relate the patch of you
&gt; want to roll out. Or you could try the fix I suggested. ;-)

Yup, that was a rookie mistake.  Relanding with fix shortly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134235</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-17 13:28:45 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191248</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263366</attachid>
            <date>2015-10-16 23:39:35 -0700</date>
            <delta_ts>2015-10-17 00:05:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22311</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTEwLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IHNvbWUgZ2VuZXJhdGlvbmFsIGhlYXAgZ3Jvd3RoIHBhdGhvbG9naWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGRvaW5nIGdlbmVyYXRp
b25hbCBjb3B5aW5nLCB3ZSB3b3VsZCBwcmV0ZW5kIHRoYXQgdGhlIHNpemUgb2Ygb2xkIHNwYWNl
IHdhcyBpbmNyZWFzZWQKKyAgICAgICAganVzdCBieSB0aGUgYW1vdW50IG9mIGJ5dGVzIHdlIGNv
cGllZC4gSW4gcmVhbGl0eSwgaXQgd291bGQgYmUgaW5jcmVhc2VkIGJ5IHRoZSBudW1iZXIgb2YK
KyAgICAgICAgYnl0ZXMgdXNlZCBieSB0aGUgY29waWVkIGJsb2NrcyB3ZSBjcmVhdGVkLiBUaGlz
IGlzIGEgbGFyZ2VyIG51bWJlciwgYW5kIGluIHNvbWUgc2ltcGxlCisgICAgICAgIHBhdGhvbG9n
aWNhbCBwcm9ncmFtcywgdGhlIGRpZmZlcmVuY2UgY2FuIGJlIGh1Z2UuCisKKyAgICAgICAgRml4
aW5nIHRoaXMgYnVnIHdhcyByZWxhdGl2ZWx5IGVhc3ksIGFuZCB0aGUgb25seSByZWFsbHkgbWVh
bmluZ2Z1bCBjaGFuZ2UgaGVyZSBpcyBpbgorICAgICAgICBIZWFwOjp1cGRhdGVBbGxvY2F0aW9u
TGltaXRzKCkuIEJ1dCB0byBjb252aW5jZSBteXNlbGYgdGhhdCB0aGUgY2hhbmdlIHdhcyB2YWxp
ZCwgSSBoYWQgdG8KKyAgICAgICAgYWRkIHNvbWUgZGVidWdnaW5nIGNvZGUgYW5kIEkgaGFkIHRv
IHJlZmFjdG9yIHNvbWUgc3R1ZmYgc28gdGhhdCBpdCBtYWRlIG1vcmUgc2Vuc2UuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvQ29waWVkQmxvY2suY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OmNyZWF0ZU5vWmVyb0ZpbGwpOgorICAgICAgICAo
SlNDOjpDb3BpZWRCbG9jazo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpDb3BpZWRCbG9jazo6emVyb0ZpbGxXaWxkZXJuZXNzKToK
KyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OkNvcGllZEJsb2NrKToKKyAgICAgICAgKiBoZWFw
L0NvcGllZEJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpkaWRTdXJ2aXZlR0Mp
OgorICAgICAgICAoSlNDOjpDb3BpZWRCbG9jazo6Y3JlYXRlTm9aZXJvRmlsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Q29waWVkQmxvY2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvcGll
ZEJsb2NrOjp6ZXJvRmlsbFdpbGRlcm5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb3Bp
ZWRCbG9jazo6Q29waWVkQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQ29waWVkU3Bh
Y2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvcGllZFNwYWNlOjpzdGFydGVkQ29weWluZyk6
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlT2Jq
ZWN0Q291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVzZXRWaXNpdG9ycyk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkR2xv
YmFsT2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SW1wbCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNo
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnNpemVBZnRlckNvbGxlY3QpOiBEZWxl
dGVkLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6CisgICAgICAgIChKU0M6Okhl
YXA6OmlzQnVzeSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVm
ZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmRlc3Ryb3kpOgor
CiAyMDE1LTEwLTE2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTkxMjIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODgs
NiArMjg4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGhlYXAvQ29kZUJs
b2NrU2V0LmNwcAogICAgIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCisgICAgaGVhcC9Db3Bp
ZWRCbG9jay5jcHAKICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0
b3IuY3BwCiAgICAgaGVhcC9EZWZlckdDLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE5MTIyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MTQs
NiArNTE0LDcgQEAKIAkJMEZCN0YzOUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0Yz
OTAxNUVEOEUzODAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQjdGMzlEMTVFRDhFNDYwMEYxNjdC
MiAvKiBSZWplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQjdGMzkxMTVFRDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3
QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTIxNUVEOEUzODAwRjE2N0IyIC8qIFNwYXJzZUFycmF5
VmFsdWVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkJBREY1NDFCRDFGNEI4MDBFMDczQzEgLyogQ29waWVkQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQURGNTMxQkQxRjRCODAw
RTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCAqLzsgfTsKIAkJMEZCQzBBRTcxNDk2QzdDNDAwRDRG
QkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5jcHAgKi87IH07CiAJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBB
RTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1
IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzcsNiArMjM3OCw3
IEBACiAJCTBGQjdGMzkwMTVFRDhFMzgwMEYxNjdCMiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTdG9yYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjdGMzkxMTVFRDhFMzgwMEYxNjdCMiAvKiBSZWplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQjdGMzkyMTVFRDhFMzgwMEYxNjdCMiAvKiBTcGFyc2VBcnJh
eVZhbHVlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYXJzZUFycmF5
VmFsdWVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCQURGNTMxQkQxRjRC
ODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvcGllZEJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQ
cm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0V4aXRQcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMx
NSAvKiBDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVP
cmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNDQsNiArNDI0Niw3IEBA
CiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmNwcCAq
LywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAq
LywKIAkJCQlDMkVBRDJGQjE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggKi8s
CisJCQkJMEZCQURGNTMxQkQxRjRCODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCAqLywKIAkJ
CQlDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLywKIAkJCQlDMkZD
OUJEMjE2NjQ0REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJQzI0
MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLywKQEAgLTc4MjgsNiAr
NzgzMSw3IEBACiAJCQkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFBy
b3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEz
N0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
QkFERjU0MUJEMUY0QjgwMEUwNzNDMSAvKiBDb3BpZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5l
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBK
SVRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db3BpZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29waWVkQmxvY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29waWVkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvcGllZEJsb2NrLmgiCisKKyNpbmNsdWRlIDx3dGYvRGF0
YUxvZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJh
bGFuY2UgPSBmYWxzZTsKK3N0YXRpYyBzaXplX3QgYmFsYW5jZTsKKworQ29waWVkQmxvY2sqIENv
cGllZEJsb2NrOjpjcmVhdGVOb1plcm9GaWxsKHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBpZiAo
Y29tcHV0ZUJhbGFuY2UpIHsKKyAgICAgICAgYmFsYW5jZSsrOworICAgICAgICBpZiAoIShiYWxh
bmNlICUgMTApKQorICAgICAgICAgICAgZGF0YUxvZygiQ29waWVkQmxvY2sgQmFsYW5jZTogIiwg
YmFsYW5jZSwgIlxuIik7CisgICAgfQorICAgIHJldHVybiBuZXcoTm90TnVsbCwgZmFzdEFsaWdu
ZWRNYWxsb2MoQ29waWVkQmxvY2s6OmJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBDb3BpZWRCbG9jayhj
YXBhY2l0eSk7Cit9CisKK3ZvaWQgQ29waWVkQmxvY2s6OmRlc3Ryb3koQ29waWVkQmxvY2sqIGNv
cGllZEJsb2NrKQoreworICAgIGlmIChjb21wdXRlQmFsYW5jZSkgeworICAgICAgICBiYWxhbmNl
LS07CisgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCisgICAgICAgICAgICBkYXRhTG9nKCJD
b3BpZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKKyAgICB9CisgICAgY29waWVk
QmxvY2stPn5Db3BpZWRCbG9jaygpOworICAgIGZhc3RBbGlnbmVkRnJlZShjb3BpZWRCbG9jayk7
Cit9CisKK0NvcGllZEJsb2NrKiBDb3BpZWRCbG9jazo6Y3JlYXRlKHNpemVfdCBjYXBhY2l0eSkK
K3sKKyAgICBDb3BpZWRCbG9jayogbmV3QmxvY2sgPSBjcmVhdGVOb1plcm9GaWxsKGNhcGFjaXR5
KTsKKyAgICBuZXdCbG9jay0+emVyb0ZpbGxXaWxkZXJuZXNzKCk7CisgICAgcmV0dXJuIG5ld0Js
b2NrOworfQorCit2b2lkIENvcGllZEJsb2NrOjp6ZXJvRmlsbFdpbGRlcm5lc3MoKQoreworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgbWVtc2V0KHdpbGRlcm5lc3MoKSwgMCwgd2lsZGVybmVzc1Np
emUoKSk7CisjZWxzZQorICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBKU1ZhbHVlKiBsaW1p
dCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTVmFsdWUqPih3aWxkZXJuZXNzRW5kKCkpOworICAg
IGZvciAoSlNWYWx1ZSogY3VycmVudFZhbHVlID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNWYWx1
ZSo+KHdpbGRlcm5lc3MoKSk7IGN1cnJlbnRWYWx1ZSA8IGxpbWl0OyBjdXJyZW50VmFsdWUrKykK
KyAgICAgICAgKmN1cnJlbnRWYWx1ZSA9IGVtcHR5VmFsdWU7CisjZW5kaWYKK30KKworQ29waWVk
QmxvY2s6OkNvcGllZEJsb2NrKHNpemVfdCBjYXBhY2l0eSkKKyAgICA6IERvdWJseUxpbmtlZExp
c3ROb2RlPENvcGllZEJsb2NrPigpCisgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgICwg
bV9yZW1haW5pbmcocGF5bG9hZENhcGFjaXR5KCkpCisgICAgLCBtX2lzUGlubmVkKGZhbHNlKQor
ICAgICwgbV9pc09sZChmYWxzZSkKKyAgICAsIG1fbGl2ZUJ5dGVzKDApCisjaWZuZGVmIE5ERUJV
RworICAgICwgbV9saXZlT2JqZWN0cygwKQorI2VuZGlmCit7CisgICAgQVNTRVJUKGlzOEJ5dGVB
bGlnbmVkKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcmVtYWluaW5nKSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxv
Y2suaAkocmV2aXNpb24gMTkxMjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
aWVkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDUwICsxMDgsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi1pbmxpbmUgQ29waWVkQmxvY2sqIENvcGllZEJsb2NrOjpjcmVhdGVOb1pl
cm9GaWxsKHNpemVfdCBjYXBhY2l0eSkKLXsKLSAgICByZXR1cm4gbmV3KE5vdE51bGwsIGZhc3RB
bGlnbmVkTWFsbG9jKENvcGllZEJsb2NrOjpibG9ja1NpemUsIGNhcGFjaXR5KSkgQ29waWVkQmxv
Y2soY2FwYWNpdHkpOwotfQotCi1pbmxpbmUgdm9pZCBDb3BpZWRCbG9jazo6ZGVzdHJveShDb3Bp
ZWRCbG9jayogY29waWVkQmxvY2spCi17Ci0gICAgY29waWVkQmxvY2stPn5Db3BpZWRCbG9jaygp
OwotICAgIGZhc3RBbGlnbmVkRnJlZShjb3BpZWRCbG9jayk7Ci19Ci0KLWlubGluZSBDb3BpZWRC
bG9jayogQ29waWVkQmxvY2s6OmNyZWF0ZShzaXplX3QgY2FwYWNpdHkpCi17Ci0gICAgQ29waWVk
QmxvY2sqIG5ld0Jsb2NrID0gY3JlYXRlTm9aZXJvRmlsbChjYXBhY2l0eSk7Ci0gICAgbmV3Qmxv
Y2stPnplcm9GaWxsV2lsZGVybmVzcygpOwotICAgIHJldHVybiBuZXdCbG9jazsKLX0KLQotaW5s
aW5lIHZvaWQgQ29waWVkQmxvY2s6Onplcm9GaWxsV2lsZGVybmVzcygpCi17Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBtZW1zZXQod2lsZGVybmVzcygpLCAwLCB3aWxkZXJuZXNzU2l6ZSgpKTsK
LSNlbHNlCi0gICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwotICAgIEpTVmFsdWUqIGxpbWl0ID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8SlNWYWx1ZSo+KHdpbGRlcm5lc3NFbmQoKSk7Ci0gICAgZm9yIChK
U1ZhbHVlKiBjdXJyZW50VmFsdWUgPSByZWludGVycHJldF9jYXN0X3B0cjxKU1ZhbHVlKj4od2ls
ZGVybmVzcygpKTsgY3VycmVudFZhbHVlIDwgbGltaXQ7IGN1cnJlbnRWYWx1ZSsrKQotICAgICAg
ICAqY3VycmVudFZhbHVlID0gZW1wdHlWYWx1ZTsKLSNlbmRpZgotfQotCi1pbmxpbmUgQ29waWVk
QmxvY2s6OkNvcGllZEJsb2NrKHNpemVfdCBjYXBhY2l0eSkKLSAgICA6IERvdWJseUxpbmtlZExp
c3ROb2RlPENvcGllZEJsb2NrPigpCi0gICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQotICAgICwg
bV9yZW1haW5pbmcocGF5bG9hZENhcGFjaXR5KCkpCi0gICAgLCBtX2lzUGlubmVkKGZhbHNlKQot
ICAgICwgbV9pc09sZChmYWxzZSkKLSAgICAsIG1fbGl2ZUJ5dGVzKDApCi0jaWZuZGVmIE5ERUJV
RwotICAgICwgbV9saXZlT2JqZWN0cygwKQotI2VuZGlmCi17Ci0gICAgQVNTRVJUKGlzOEJ5dGVB
bGlnbmVkKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcmVtYWluaW5nKSkpOwotfQotCiBpbmxp
bmUgdm9pZCBDb3BpZWRCbG9jazo6ZGlkU3Vydml2ZUdDKCkKIHsKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFj
ZUlubGluZXMuaAkocmV2aXNpb24gMTkxMjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw4ICsyMzcsOCBA
QCBpbmxpbmUgdm9pZCBDb3BpZWRTcGFjZTo6c3RhcnRlZENvcHlpbmcoCiAgICAgfQogCiAgICAg
ZG91YmxlIG1hcmtlZFNwYWNlQnl0ZXMgPSBtX2hlYXAtPm9iamVjdFNwYWNlKCkuY2FwYWNpdHko
KTsKLSAgICBkb3VibGUgdG90YWxGcmFnbWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0
b3RhbExpdmVCeXRlcyArIG1hcmtlZFNwYWNlQnl0ZXMpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0
b3RhbFVzYWJsZUJ5dGVzICsgbWFya2VkU3BhY2VCeXRlcyk7Ci0gICAgbV9zaG91bGREb0NvcHlQ
aGFzZSA9IG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uIHx8
IHRvdGFsRnJhZ21lbnRhdGlvbiA8PSBPcHRpb25zOjptaW5IZWFwVXRpbGl6YXRpb24oKTsKKyAg
ICBkb3VibGUgdG90YWxVdGlsaXphdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4odG90YWxMaXZl
Qnl0ZXMgKyBtYXJrZWRTcGFjZUJ5dGVzKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4odG90YWxVc2Fi
bGVCeXRlcyArIG1hcmtlZFNwYWNlQnl0ZXMpOworICAgIG1fc2hvdWxkRG9Db3B5UGhhc2UgPSBt
X2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiB8fCB0b3RhbFV0
aWxpemF0aW9uIDw9IE9wdGlvbnM6Om1pbkhlYXBVdGlsaXphdGlvbigpOwogICAgIGlmICghbV9z
aG91bGREb0NvcHlQaGFzZSkgewogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAg
ICAgICAgIGRhdGFMb2coIlNraXBwZWQgY29weWluZywgIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTkxMjIxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2NCwxMSArODY0LDEyIEBAIHZv
aWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1MKICAgICAgICAgbV90b3RhbEJ5
dGVzQ29waWVkID0gMDsKICAgICB9IGVsc2UKICAgICAgICAgbV90b3RhbEJ5dGVzQ29waWVkIC09
IGJ5dGVzUmVtb3ZlZEZyb21PbGRTcGFjZUR1ZVRvUmVhbGxvY2F0aW9uOworCisgICAgbV90b3Rh
bEJ5dGVzVmlzaXRlZFRoaXNDeWNsZSA9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNpdGVkKCkgKyB0
aHJlYWRCeXRlc1Zpc2l0ZWQoKTsKKyAgICBtX3RvdGFsQnl0ZXNDb3BpZWRUaGlzQ3ljbGUgPSBt
X3Nsb3RWaXNpdG9yLmJ5dGVzQ29waWVkKCkgKyB0aHJlYWRCeXRlc0NvcGllZCgpOwogICAgIAot
ICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKTsK
LSAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc0NvcGllZCgpOwot
ICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKz0gdGhyZWFkQnl0ZXNWaXNpdGVkKCk7Ci0gICAgbV90
b3RhbEJ5dGVzQ29waWVkICs9IHRocmVhZEJ5dGVzQ29waWVkKCk7CisgICAgbV90b3RhbEJ5dGVz
VmlzaXRlZCArPSBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlOworICAgIG1fdG90YWxCeXRl
c0NvcGllZCArPSBtX3RvdGFsQnl0ZXNDb3BpZWRUaGlzQ3ljbGU7CiB9CiAKIHZvaWQgSGVhcDo6
cmVzZXRWaXNpdG9ycygpCkBAIC05MDIsMTYgKzkwMyw2IEBAIHNpemVfdCBIZWFwOjpjYXBhY2l0
eSgpCiAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuY2FwYWNpdHkoKSArIG1fc3RvcmFnZVNwYWNl
LmNhcGFjaXR5KCkgKyBleHRyYU1lbW9yeVNpemUoKTsKIH0KIAotc2l6ZV90IEhlYXA6OnNpemVB
ZnRlckNvbGxlY3QoKQotewotICAgIC8vIFRoZSByZXN1bHQgaGVyZSBtYXkgbm90IGFncmVlIHdp
dGggdGhlIG5vcm1hbCBIZWFwOjpzaXplKCkuIAotICAgIC8vIFRoaXMgaXMgZHVlIHRvIHRoZSBm
YWN0IHRoYXQgd2Ugb25seSBjb3VudCBsaXZlIGNvcGllZCBieXRlcwotICAgIC8vIHJhdGhlciB0
aGFuIGFsbCB1c2VkIChpbmNsdWRpbmcgZGVhZCkgY29waWVkIGJ5dGVzLCB0aHVzIGl0J3MgCi0g
ICAgLy8gYWx3YXlzIHRoZSBjYXNlIHRoYXQgbV90b3RhbEJ5dGVzQ29waWVkIDw9IG1fc3RvcmFn
ZVNwYWNlLnNpemUoKS4gCi0gICAgQVNTRVJUKG1fdG90YWxCeXRlc0NvcGllZCA8PSBtX3N0b3Jh
Z2VTcGFjZS5zaXplKCkpOwotICAgIHJldHVybiBtX3RvdGFsQnl0ZXNWaXNpdGVkICsgbV90b3Rh
bEJ5dGVzQ29waWVkICsgZXh0cmFNZW1vcnlTaXplKCk7Ci19Ci0KIHNpemVfdCBIZWFwOjpwcm90
ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCiB7CiAgICAgcmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRD
ZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+KCk7CkBAIC0xMDQzLDcgKzEwMzQsNyBAQCBORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgCiAgICAgZG91YmxlIGJlZm9y
ZSA9IDA7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKLSAgICAgICAgZGF0YUxvZygiW0dD
OiAiKTsKKyAgICAgICAgZGF0YUxvZygiW0dDOiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgIiBrYiAi
KTsKICAgICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwogICAgIH0KICAgICAKQEAgLTEx
MzcsNiArMTEyOCwxMCBAQCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogdm9p
ZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
CiB7CiAgICAgR0NQSEFTRShTdGFydGluZ0NvbGxlY3Rpb24pOworICAgIAorICAgIGlmIChPcHRp
b25zOjpsb2dHQygpKQorICAgICAgICBkYXRhTG9nKCI9PiAiKTsKKyAgICAKICAgICBpZiAoc2hv
dWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSkpIHsKICAgICAgICAgbV9vcGVyYXRp
b25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247CiAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29s
bGVjdGlvbiA9IGZhbHNlOwpAQCAtMTI3Myw3ICsxMjY4LDQyIEBAIHZvaWQgSGVhcDo6cmVzZXRB
bGxvY2F0b3JzKCkKIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB7CiAgICAg
R0NQSEFTRShVcGRhdGVBbGxvY2F0aW9uTGltaXRzKTsKLSAgICBzaXplX3QgY3VycmVudEhlYXBT
aXplID0gc2l6ZUFmdGVyQ29sbGVjdCgpOworICAgIAorICAgIC8vIENhbGN1bGF0ZSBvdXIgY3Vy
cmVudCBoZWFwIHNpemUgdGhyZXNob2xkIGZvciB0aGUgcHVycG9zZSBvZiBmaWd1cmluZyBvdXQg
d2hlbiB3ZSBzaG91bGQKKyAgICAvLyBydW4gYW5vdGhlciBjb2xsZWN0aW9uLiBUaGlzIGlzbid0
IHRoZSBzYW1lIGFzIGVpdGhlciBzaXplKCkgb3IgY2FwYWNpdHkoKSwgdGhvdWdoIGl0IHNob3Vs
ZAorICAgIC8vIGJlIHNvbWV3aGVyZSBiZXR3ZWVuIHRoZSB0d28uIFRoZSBrZXkgaXMgdG8gbWF0
Y2ggdGhlIHNpemUgY2FsY3VsYXRpb25zIGludm9sdmVkIGNhbGxzIHRvCisgICAgLy8gZGlkQWxs
b2NhdGUoKSwgd2hpbGUgbmV2ZXIgZGFuZ2Vyb3VzbHkgdW5kZXJlc3RpbWF0aW5nIGNhcGFjaXR5
KCkuIEluIGV4dHJlbWUgY2FzZXMgb2YKKyAgICAvLyBmcmFnbWVudGF0aW9uLCB3ZSBtYXkgaGF2
ZSBzaXplKCkgbXVjaCBzbWFsbGVyIHRoYW4gY2FwYWNpdHkoKS4gT3VyIGNvbGxlY3RvciBzb21l
dGltZXMKKyAgICAvLyB0ZW1wb3JhcmlseSBhbGxvd3MgdmVyeSBoaWdoIGZyYWdtZW50YXRpb24g
YmVjYXVzZSBpdCBkb2Vzbid0IGRlZnJhZ21lbnQgb2xkIGJsb2NrcyBpbiBjb3BpZWQKKyAgICAv
LyBzcGFjZS4KKyAgICBzaXplX3QgY3VycmVudEhlYXBTaXplID0gMDsKKworICAgIC8vIEZvciBt
YXJrZWQgc3BhY2UsIHdlIHVzZSB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHZpc2l0ZWQuIFRo
aXMgbWF0Y2hlcyB0aGUgbG9naWMgZm9yCisgICAgLy8gTWFya2VkQWxsb2NhdG9yJ3MgY2FsbHMg
dG8gZGlkQWxsb2NhdGUoKSwgd2hpY2ggZWZmZWN0aXZlbHkgYWNjb3VudHMgZm9yIHRoZSB0b3Rh
bCBzaXplIG9mCisgICAgLy8gb2JqZWN0cyBhbGxvY2F0ZWQgcmF0aGVyIHRoYW4gYmxvY2tzIHVz
ZWQuIFRoaXMgd2lsbCB1bmRlcmVzdGltYXRlIGNhcGFjaXR5KCksIGFuZCBpbiBjYXNlCisgICAg
Ly8gb2YgZnJhZ21lbnRhdGlvbiwgdGhpcyBtYXkgYmUgc3Vic3RhbnRpYWwuIEZvcnR1bmF0ZWx5
LCBtYXJrZWQgc3BhY2UgcmFyZWx5IGZyYWdtZW50cyBiZWNhdXNlCisgICAgLy8gY2VsbHMgdXN1
YWxseSBoYXZlIGEgbmFycm93IHJhbmdlIG9mIHNpemVzLiBTbywgdGhlIHVuZGVyZXN0aW1hdGlv
biBpcyBwcm9iYWJseSBPSy4KKyAgICBjdXJyZW50SGVhcFNpemUgKz0gbV90b3RhbEJ5dGVzVmlz
aXRlZDsKKworICAgIC8vIEZvciBjb3BpZWQgc3BhY2UsIHdlIHVzZSB0aGUgY2FwYWNpdHkgb2Yg
c3RvcmFnZSBzcGFjZS4gVGhpcyBpcyBiZWNhdXNlIGNvcGllZCBzcGFjZSBtYXkgZ2V0CisgICAg
Ly8gYmFkbHkgZnJhZ21lbnRlZCBiZXR3ZWVuIGZ1bGwgY29sbGVjdGlvbnMuIFRoaXMgYXJpc2Vz
IHdoZW4gZWFjaCBlZGVuIGNvbGxlY3Rpb24gZXZhY3VhdGVzCisgICAgLy8gbXVjaCBsZXNzIHRo
YW4gb25lIENvcGllZEJsb2NrJ3Mgd29ydGggb2Ygc3R1ZmYuIEl0IGNhbiBhbHNvIGhhcHBlbiB3
aGVuIENvcGllZEJsb2NrcyBnZXQKKyAgICAvLyBwaW5uZWQgZHVlIHRvIHZlcnkgc2hvcnQtbGl2
ZWQgb2JqZWN0cy4gSW4gc3VjaCBhIGNhc2UsIHdlIHdhbnQgdG8gZ2V0IHRvIGEgZnVsbCBjb2xs
ZWN0aW9uCisgICAgLy8gc29vbmVyIHJhdGhlciB0aGFuIGxhdGVyLiBJZiB3ZSB1c2VkIG1fdG90
YWxCeXRlc0NvcGllZCwgdGhlbiBmb3IgZm9yIGVhY2ggQ29waWVkQmxvY2sgdGhhdCBhbgorICAg
IC8vIGVkZW4gYWxsb2NhdGlvbiBwcm9tb3RlZCwgd2Ugd291bGQgb25seSBkZWR1Y3QgdGhlIG9u
ZSBvYmplY3QncyBzaXplIGZyb20gZWRlbiBzaXplLiBUaGlzCisgICAgLy8gd291bGQgbWVhbiB0
aGF0IHdlIGNvdWxkICJsZWFrIiBtYW55IENvcGllZEJsb2NrcyBiZWZvcmUgd2UgZGlkIGEgZnVs
bCBjb2xsZWN0aW9uIGFuZAorICAgIC8vIGRlZnJhZ21lbnRlZCBhbGwgb2YgdGhlbS4gSXQgd291
bGQgYmUgZ3JlYXQgdG8gdXNlIG1fdG90YWxCeXRlc0NvcGllZCwgYnV0IHdlJ2QgbmVlZCB0bwor
ICAgIC8vIGF1Z21lbnQgaXQgd2l0aCBzb21ldGhpbmcgdGhhdCBhY2NvdW50cyBmb3IgdGhvc2Ug
ZnJhZ21lbnRlZCBibG9ja3MuCisgICAgLy8gRklYTUU6IE1ha2UgaXQgcG9zc2libGUgdG8gY29t
cHV0ZSBoZWFwIHNpemUgdXNpbmcgbV90b3RhbEJ5dGVzQ29waWVkIHJhdGhlciB0aGFuCisgICAg
Ly8gbV9zdG9yYWdlU3BhY2UuY2FwYWNpdHkoKQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNjgKKyAgICBBU1NFUlQobV90b3RhbEJ5dGVzQ29waWVk
IDw9IG1fc3RvcmFnZVNwYWNlLnNpemUoKSk7CisgICAgY3VycmVudEhlYXBTaXplICs9IG1fc3Rv
cmFnZVNwYWNlLmNhcGFjaXR5KCk7CisKKyAgICAvLyBJdCdzIHVwIHRvIHRoZSB1c2VyIHRvIGVu
c3VyZSB0aGF0IGV4dHJhTWVtb3J5U2l6ZSgpIGVuZHMgdXAgY29ycmVzcG9uZGluZyB0byBhbGxv
Y2F0aW9uLXRpbWUKKyAgICAvLyBleHRyYSBtZW1vcnkgcmVwb3J0aW5nLgorICAgIGN1cnJlbnRI
ZWFwU2l6ZSArPSBleHRyYU1lbW9yeVNpemUoKTsKKyAgICAKICAgICBpZiAoT3B0aW9uczo6Z2NN
YXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUo
KSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwogCkBAIC0xMjg2
LDEzICsxMzE2LDIzIEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAg
ICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogICAgICAg
ICBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QgPSAwOwogICAgIH0gZWxzZSB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCk7
CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0gY3VycmVudEhlYXBTaXpl
OwogICAgICAgICBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdCA9IGN1cnJlbnRIZWFwU2l6ZTsK
KyAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIk1heCBoZWFwIHNp
emU6ICIsIG1fbWF4SGVhcFNpemUsICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiQ3VycmVu
dCBoZWFwIHNpemU6ICIsIGN1cnJlbnRIZWFwU2l6ZSwgIlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCJTaXplIGFmdGVyIGxhc3QgZWRlbiBjb2xsZWN0aW9uOiAiLCBtX3NpemVBZnRlckxhc3RF
ZGVuQ29sbGVjdCwgIlxuIik7CisgICAgICAgIH0KICAgICAgICAgZG91YmxlIGVkZW5Ub09sZEdl
bmVyYXRpb25SYXRpbyA9IChkb3VibGUpbV9tYXhFZGVuU2l6ZSAvIChkb3VibGUpbV9tYXhIZWFw
U2l6ZTsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJFZGVuIHRv
IG9sZCBnZW5lcmF0aW9uIHJhdGlvOiAiLCBlZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8sICJcbiIp
OwogICAgICAgICBkb3VibGUgbWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0gMS4wIC8gMy4w
OwogICAgICAgICBpZiAoZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvIDwgbWluRWRlblRvT2xkR2Vu
ZXJhdGlvblJhdGlvKQogICAgICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gdHJ1
ZTsKKyAgICAgICAgLy8gVGhpcyBzZWVtcyBzdXNwZWN0IGF0IGZpcnN0LCBidXQgd2hhdCBpdCBk
b2VzIGlzIGVuc3VyZSB0aGF0IHRoZSBudXJzZXJ5IHNpemUgaXMgZml4ZWQuCiAgICAgICAgIG1f
bWF4SGVhcFNpemUgKz0gY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsK
ICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVhcFNpemU7
CiAgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CkBAIC0xMzA1LDcgKzEzNDUs
NyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAgIG1fYnl0ZXNBbGxv
Y2F0ZWRUaGlzQ3ljbGUgPSAwOwogCiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAg
IGRhdGFMb2coY3VycmVudEhlYXBTaXplIC8gMTAyNCwgIiBrYiwgIik7CisgICAgICAgIGRhdGFM
b2coY3VycmVudEhlYXBTaXplIC8gMTAyNCwgIiBrYiAiKTsKIH0KIAogdm9pZCBIZWFwOjpkaWRG
aW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGltZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHJldmlzaW9uIDE5MTIyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDcgKzMzMCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygpOwogCiAgICAgYm9vbCBz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5
cGUpIGNvbnN0OwotICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICBKU1N0YWNr
JiBzdGFjaygpOwogICAgIApAQCAtMzU3LDcgKzM1Niw5IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fbWF4SGVhcFNpemU7CiAgICAgYm9vbCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247CiAgICAg
c2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CisgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0
ZWRUaGlzQ3ljbGU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlc0NvcGllZDsKKyAgICBzaXplX3Qg
bV90b3RhbEJ5dGVzQ29waWVkVGhpc0N5Y2xlOwogICAgIAogICAgIEhlYXBPcGVyYXRpb24gbV9v
cGVyYXRpb25JblByb2dyZXNzOwogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRh
YmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZp
c2lvbiAxOTEyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwxMyBAQCBpbmxpbmUgYm9vbCBIZWFwOjpzaG91
bGRDb2xsZWN0KCkKIHsKICAgICBpZiAoaXNEZWZlcnJlZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUo
KSAmJiBtX2lzU2FmZVRvQ29sbGVjdCAmJiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVy
YXRpb247Ci0gICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBtX21heEVkZW5T
aXplICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09w
ZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBPcHRp
b25zOjpnY01heEhlYXBTaXplKCk7CisgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGUgPiBtX21heEVkZW5TaXplOwogfQogCiBpbmxpbmUgYm9vbCBIZWFwOjppc0J1c3koKQpAQCAt
Mjc0LDkgKzI3OCw2IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGgK
IAogaW5saW5lIGJvb2wgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpCiB7Ci0gICAg
aWYgKGlzRGVmZXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFzaG91
bGRDb2xsZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTkxMjIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxMyArMzIsMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBjb25zdCBib29s
IGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CitzdGF0aWMgc2l6ZV90IGJhbGFuY2U7CisKIE1hcmtl
ZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBz
aXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQog
eworICAgIGlmIChjb21wdXRlQmFsYW5jZSkgeworICAgICAgICBiYWxhbmNlKys7CisgICAgICAg
IGlmICghKGJhbGFuY2UgJSAxMCkpCisgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBC
YWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKKyAgICB9CiAgICAgcmV0dXJuIG5ldyAoTm90TnVs
bCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFs
bG9jYXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uKTsKIH0KIAogdm9p
ZCBNYXJrZWRCbG9jazo6ZGVzdHJveShNYXJrZWRCbG9jayogYmxvY2spCiB7CisgICAgaWYgKGNv
bXB1dGVCYWxhbmNlKSB7CisgICAgICAgIGJhbGFuY2UtLTsKKyAgICAgICAgaWYgKCEoYmFsYW5j
ZSAlIDEwKSkKKyAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJh
bGFuY2UsICJcbiIpOworICAgIH0KICAgICBibG9jay0+fk1hcmtlZEJsb2NrKCk7CiAgICAgZmFz
dEFsaWduZWRGcmVlKGJsb2NrKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263368</attachid>
            <date>2015-10-17 00:05:49 -0700</date>
            <delta_ts>2015-10-17 09:04:23 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22694</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMjM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE1LTEwLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IHNvbWUgZ2VuZXJhdGlvbmFsIGhlYXAgZ3Jvd3RoIHBhdGhvbG9naWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAyNzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGRvaW5nIGdlbmVyYXRp
b25hbCBjb3B5aW5nLCB3ZSB3b3VsZCBwcmV0ZW5kIHRoYXQgdGhlIHNpemUgb2Ygb2xkIHNwYWNl
IHdhcyBpbmNyZWFzZWQKKyAgICAgICAganVzdCBieSB0aGUgYW1vdW50IG9mIGJ5dGVzIHdlIGNv
cGllZC4gSW4gcmVhbGl0eSwgaXQgd291bGQgYmUgaW5jcmVhc2VkIGJ5IHRoZSBudW1iZXIgb2YK
KyAgICAgICAgYnl0ZXMgdXNlZCBieSB0aGUgY29waWVkIGJsb2NrcyB3ZSBjcmVhdGVkLiBUaGlz
IGlzIGEgbGFyZ2VyIG51bWJlciwgYW5kIGluIHNvbWUgc2ltcGxlCisgICAgICAgIHBhdGhvbG9n
aWNhbCBwcm9ncmFtcywgdGhlIGRpZmZlcmVuY2UgY2FuIGJlIGh1Z2UuCisKKyAgICAgICAgRml4
aW5nIHRoaXMgYnVnIHdhcyByZWxhdGl2ZWx5IGVhc3ksIGFuZCB0aGUgb25seSByZWFsbHkgbWVh
bmluZ2Z1bCBjaGFuZ2UgaGVyZSBpcyBpbgorICAgICAgICBIZWFwOjp1cGRhdGVBbGxvY2F0aW9u
TGltaXRzKCkuIEJ1dCB0byBjb252aW5jZSBteXNlbGYgdGhhdCB0aGUgY2hhbmdlIHdhcyB2YWxp
ZCwgSSBoYWQgdG8KKyAgICAgICAgYWRkIHNvbWUgZGVidWdnaW5nIGNvZGUgYW5kIEkgaGFkIHRv
IHJlZmFjdG9yIHNvbWUgc3R1ZmYgc28gdGhhdCBpdCBtYWRlIG1vcmUgc2Vuc2UuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgZG9lcyBvYnZpYXRlIHRoZSBuZWVkIGZvciBtX3RvdGFsQnl0ZXNDb3Bp
ZWQsIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHVzZSBpdCBpbgorICAgICAgICByZWxlYXNlIGJ1aWxk
cyB0byBkZWNpZGUgaG93IG11Y2ggaGVhcCB3ZSBhcmUgdXNpbmcgYXQgdGhlIGVuZCBvZiBjb2xs
ZWN0aW9uLiBCdXQgSSBhZGRlZCBhCisgICAgICAgIEZJWE1FIGFib3V0IGhvdyB3ZSBjb3VsZCBy
ZXN0b3JlIG91ciB1c2Ugb2YgbV90b3RhbEJ5dGVzQ29waWVkLiBTbywgSSBrZXB0IHRoZSBsb2dp
YywgZm9yCisgICAgICAgIG5vdy4gVGhlIEZJWE1FIHJlZmVyZW5jZXMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDI2OC4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaGVhcC9Db3BpZWRCbG9jay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpD
b3BpZWRCbG9jazo6Y3JlYXRlTm9aZXJvRmlsbCk6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2Nr
OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkNvcGllZEJsb2NrOjp6ZXJvRmlsbFdpbGRlcm5lc3MpOgorICAgICAgICAoSlNDOjpD
b3BpZWRCbG9jazo6Q29waWVkQmxvY2spOgorICAgICAgICAqIGhlYXAvQ29waWVkQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OmRpZFN1cnZpdmVHQyk6CisgICAgICAgIChKU0M6
OkNvcGllZEJsb2NrOjpjcmVhdGVOb1plcm9GaWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Q29waWVkQmxvY2s6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb3BpZWRCbG9j
azo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6Onplcm9GaWxs
V2lsZGVybmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpDb3BpZWRC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db3BpZWRTcGFjZUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q29waWVkU3BhY2U6OnN0YXJ0ZWRDb3B5aW5nKToKKyAgICAgICAgKiBoZWFw
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpyZXNldFZpc2l0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2Fw
YWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCk6
CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9jYXRp
b25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyQ29sbGVjdCk6IERlbGV0ZWQuCisgICAgICAgICog
aGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpIZWFwOjpzaG91bGRDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNCdXN5KToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICog
aGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZGVzdHJveSk6CisKIDIwMTUtMTAtMTYgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gSW1w
bGVtZW50IFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTEyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw2ICsyODgsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogCiAgICAgaGVhcC9Db2RlQmxvY2tTZXQuY3BwCiAgICAg
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKKyAgICBoZWFwL0NvcGllZEJsb2NrLmNwcAogICAg
IGhlYXAvQ29waWVkU3BhY2UuY3BwCiAgICAgaGVhcC9Db3B5VmlzaXRvci5jcHAKICAgICBoZWFw
L0RlZmVyR0MuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTkxMjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxNCw2ICs1MTQsNyBAQAogCQkw
RkI3RjM5QzE1RUQ4RTQ2MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3
QjIgLyogUHJvcGVydHlTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFJlamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTExNUVE
OEUzODAwRjE2N0IyIC8qIFJlamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJh
eVZhbHVlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI3RjM5MjE1RUQ4RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQkFERjU0MUJE
MUY0QjgwMEUwNzNDMSAvKiBDb3BpZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJBREY1MzFCRDFGNEI4MDBFMDczQzEgLyogQ29waWVk
QmxvY2suY3BwICovOyB9OwogCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFBy
b2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLzsgfTsKIAkJ
MEZCQzBBRTgxNDk2QzdDNzAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJDMEFFNTE0OTZDN0MxMDBENEZC
REQgLyogREZHRXhpdFByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkJEN0U2OTE0NDc5OTk2MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRDdFNjcx
NDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM3Nyw2ICsyMzc4LDcgQEAKIAkJMEZCN0YzOTAx
NUVEOEUzODAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFJlamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCN0YzOTIxNUVEOEUzODAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhcnNlQXJyYXlWYWx1ZU1hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJBREY1MzFCRDFGNEI4MDBFMDczQzEgLyogQ29w
aWVkQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVk
QmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJDMEFFNDE0OTZDN0Mx
MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gREZHRXhpdFByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHRXhpdFByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZU9yaWdpbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0NCw2ICs0MjQ2LDcgQEAKIAkJCQkxNDZCMTREQjEy
RUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYy
MTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCUMyRUFEMkZC
MTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCAqLywKKwkJCQkwRkJBREY1MzFC
RDFGNEI4MDBFMDczQzEgLyogQ29waWVkQmxvY2suY3BwICovLAogCQkJCUMyQzhEMDJFMTRBM0NF
RkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovLAogCQkJCUMyRkM5QkQyMTY2NDRERkIwMDgx
MEQzMyAvKiBDb3BpZWRCbG9ja0lubGluZXMuaCAqLywKIAkJCQlDMjQwMzA1MzE0QjQwNEM5MDA3
OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovLApAQCAtNzgyOCw2ICs3ODMxLDcgQEAKIAkJCQkw
RjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCQURGNTQxQkQxRjRCODAw
RTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVB
OENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
Rjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9j
ay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ29waWVkQmxvY2suaCIKKworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwor
c3RhdGljIHNpemVfdCBiYWxhbmNlOworCitDb3BpZWRCbG9jayogQ29waWVkQmxvY2s6OmNyZWF0
ZU5vWmVyb0ZpbGwoc2l6ZV90IGNhcGFjaXR5KQoreworICAgIGlmIChjb21wdXRlQmFsYW5jZSkg
eworICAgICAgICBiYWxhbmNlKys7CisgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCisgICAg
ICAgICAgICBkYXRhTG9nKCJDb3BpZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsK
KyAgICB9CisgICAgcmV0dXJuIG5ldyhOb3ROdWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhDb3BpZWRC
bG9jazo6YmxvY2tTaXplLCBjYXBhY2l0eSkpIENvcGllZEJsb2NrKGNhcGFjaXR5KTsKK30KKwor
dm9pZCBDb3BpZWRCbG9jazo6ZGVzdHJveShDb3BpZWRCbG9jayogY29waWVkQmxvY2spCit7Cisg
ICAgaWYgKGNvbXB1dGVCYWxhbmNlKSB7CisgICAgICAgIGJhbGFuY2UtLTsKKyAgICAgICAgaWYg
KCEoYmFsYW5jZSAlIDEwKSkKKyAgICAgICAgICAgIGRhdGFMb2coIkNvcGllZEJsb2NrIEJhbGFu
Y2U6ICIsIGJhbGFuY2UsICJcbiIpOworICAgIH0KKyAgICBjb3BpZWRCbG9jay0+fkNvcGllZEJs
b2NrKCk7CisgICAgZmFzdEFsaWduZWRGcmVlKGNvcGllZEJsb2NrKTsKK30KKworQ29waWVkQmxv
Y2sqIENvcGllZEJsb2NrOjpjcmVhdGUoc2l6ZV90IGNhcGFjaXR5KQoreworICAgIENvcGllZEJs
b2NrKiBuZXdCbG9jayA9IGNyZWF0ZU5vWmVyb0ZpbGwoY2FwYWNpdHkpOworICAgIG5ld0Jsb2Nr
LT56ZXJvRmlsbFdpbGRlcm5lc3MoKTsKKyAgICByZXR1cm4gbmV3QmxvY2s7Cit9CisKK3ZvaWQg
Q29waWVkQmxvY2s6Onplcm9GaWxsV2lsZGVybmVzcygpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBtZW1zZXQod2lsZGVybmVzcygpLCAwLCB3aWxkZXJuZXNzU2l6ZSgpKTsKKyNlbHNlCisg
ICAgSlNWYWx1ZSBlbXB0eVZhbHVlOworICAgIEpTVmFsdWUqIGxpbWl0ID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8SlNWYWx1ZSo+KHdpbGRlcm5lc3NFbmQoKSk7CisgICAgZm9yIChKU1ZhbHVlKiBj
dXJyZW50VmFsdWUgPSByZWludGVycHJldF9jYXN0X3B0cjxKU1ZhbHVlKj4od2lsZGVybmVzcygp
KTsgY3VycmVudFZhbHVlIDwgbGltaXQ7IGN1cnJlbnRWYWx1ZSsrKQorICAgICAgICAqY3VycmVu
dFZhbHVlID0gZW1wdHlWYWx1ZTsKKyNlbmRpZgorfQorCitDb3BpZWRCbG9jazo6Q29waWVkQmxv
Y2soc2l6ZV90IGNhcGFjaXR5KQorICAgIDogRG91Ymx5TGlua2VkTGlzdE5vZGU8Q29waWVkQmxv
Y2s+KCkKKyAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCisgICAgLCBtX3JlbWFpbmluZyhwYXls
b2FkQ2FwYWNpdHkoKSkKKyAgICAsIG1faXNQaW5uZWQoZmFsc2UpCisgICAgLCBtX2lzT2xkKGZh
bHNlKQorICAgICwgbV9saXZlQnl0ZXMoMCkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX2xpdmVP
YmplY3RzKDApCisjZW5kaWYKK3sKKyAgICBBU1NFUlQoaXM4Qnl0ZUFsaWduZWQocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4obV9yZW1haW5pbmcpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCShyZXZpc2lvbiAx
OTEyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsNTAgKzEwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLWlu
bGluZSBDb3BpZWRCbG9jayogQ29waWVkQmxvY2s6OmNyZWF0ZU5vWmVyb0ZpbGwoc2l6ZV90IGNh
cGFjaXR5KQotewotICAgIHJldHVybiBuZXcoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoQ29w
aWVkQmxvY2s6OmJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBDb3BpZWRCbG9jayhjYXBhY2l0eSk7Ci19
Ci0KLWlubGluZSB2b2lkIENvcGllZEJsb2NrOjpkZXN0cm95KENvcGllZEJsb2NrKiBjb3BpZWRC
bG9jaykKLXsKLSAgICBjb3BpZWRCbG9jay0+fkNvcGllZEJsb2NrKCk7Ci0gICAgZmFzdEFsaWdu
ZWRGcmVlKGNvcGllZEJsb2NrKTsKLX0KLQotaW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRCbG9j
azo6Y3JlYXRlKHNpemVfdCBjYXBhY2l0eSkKLXsKLSAgICBDb3BpZWRCbG9jayogbmV3QmxvY2sg
PSBjcmVhdGVOb1plcm9GaWxsKGNhcGFjaXR5KTsKLSAgICBuZXdCbG9jay0+emVyb0ZpbGxXaWxk
ZXJuZXNzKCk7Ci0gICAgcmV0dXJuIG5ld0Jsb2NrOwotfQotCi1pbmxpbmUgdm9pZCBDb3BpZWRC
bG9jazo6emVyb0ZpbGxXaWxkZXJuZXNzKCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIG1l
bXNldCh3aWxkZXJuZXNzKCksIDAsIHdpbGRlcm5lc3NTaXplKCkpOwotI2Vsc2UKLSAgICBKU1Zh
bHVlIGVtcHR5VmFsdWU7Ci0gICAgSlNWYWx1ZSogbGltaXQgPSByZWludGVycHJldF9jYXN0X3B0
cjxKU1ZhbHVlKj4od2lsZGVybmVzc0VuZCgpKTsKLSAgICBmb3IgKEpTVmFsdWUqIGN1cnJlbnRW
YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTVmFsdWUqPih3aWxkZXJuZXNzKCkpOyBjdXJy
ZW50VmFsdWUgPCBsaW1pdDsgY3VycmVudFZhbHVlKyspCi0gICAgICAgICpjdXJyZW50VmFsdWUg
PSBlbXB0eVZhbHVlOwotI2VuZGlmCi19Ci0KLWlubGluZSBDb3BpZWRCbG9jazo6Q29waWVkQmxv
Y2soc2l6ZV90IGNhcGFjaXR5KQotICAgIDogRG91Ymx5TGlua2VkTGlzdE5vZGU8Q29waWVkQmxv
Y2s+KCkKLSAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCi0gICAgLCBtX3JlbWFpbmluZyhwYXls
b2FkQ2FwYWNpdHkoKSkKLSAgICAsIG1faXNQaW5uZWQoZmFsc2UpCi0gICAgLCBtX2lzT2xkKGZh
bHNlKQotICAgICwgbV9saXZlQnl0ZXMoMCkKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2xpdmVP
YmplY3RzKDApCi0jZW5kaWYKLXsKLSAgICBBU1NFUlQoaXM4Qnl0ZUFsaWduZWQocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4obV9yZW1haW5pbmcpKSk7Ci19Ci0KIGlubGluZSB2b2lkIENvcGllZEJs
b2NrOjpkaWRTdXJ2aXZlR0MoKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCShyZXZp
c2lvbiAxOTEyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIzNyw4IEBAIGlubGluZSB2b2lkIENv
cGllZFNwYWNlOjpzdGFydGVkQ29weWluZygKICAgICB9CiAKICAgICBkb3VibGUgbWFya2VkU3Bh
Y2VCeXRlcyA9IG1faGVhcC0+b2JqZWN0U3BhY2UoKS5jYXBhY2l0eSgpOwotICAgIGRvdWJsZSB0
b3RhbEZyYWdtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsTGl2ZUJ5dGVzICsg
bWFya2VkU3BhY2VCeXRlcykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHRvdGFsVXNhYmxlQnl0ZXMg
KyBtYXJrZWRTcGFjZUJ5dGVzKTsKLSAgICBtX3Nob3VsZERvQ29weVBoYXNlID0gbV9oZWFwLT5v
cGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24gfHwgdG90YWxGcmFnbWVudGF0
aW9uIDw9IE9wdGlvbnM6Om1pbkhlYXBVdGlsaXphdGlvbigpOworICAgIGRvdWJsZSB0b3RhbFV0
aWxpemF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbExpdmVCeXRlcyArIG1hcmtlZFNw
YWNlQnl0ZXMpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPih0b3RhbFVzYWJsZUJ5dGVzICsgbWFya2Vk
U3BhY2VCeXRlcyk7CisgICAgbV9zaG91bGREb0NvcHlQaGFzZSA9IG1faGVhcC0+b3BlcmF0aW9u
SW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uIHx8IHRvdGFsVXRpbGl6YXRpb24gPD0gT3B0
aW9uczo6bWluSGVhcFV0aWxpemF0aW9uKCk7CiAgICAgaWYgKCFtX3Nob3VsZERvQ29weVBoYXNl
KSB7CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygi
U2tpcHBlZCBjb3B5aW5nLCAiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAxOTEyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODY0LDExICs4NjQsMTIgQEAgdm9pZCBIZWFwOjp1cGRhdGVP
YmplY3RDb3VudHMoZG91YmxlIGdjUwogICAgICAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgPSAwOwog
ICAgIH0gZWxzZQogICAgICAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgLT0gYnl0ZXNSZW1vdmVkRnJv
bU9sZFNwYWNlRHVlVG9SZWFsbG9jYXRpb247CisKKyAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhp
c0N5Y2xlID0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKSArIHRocmVhZEJ5dGVzVmlzaXRl
ZCgpOworICAgIG1fdG90YWxCeXRlc0NvcGllZFRoaXNDeWNsZSA9IG1fc2xvdFZpc2l0b3IuYnl0
ZXNDb3BpZWQoKSArIHRocmVhZEJ5dGVzQ29waWVkKCk7CiAgICAgCi0gICAgbV90b3RhbEJ5dGVz
VmlzaXRlZCArPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgpOwotICAgIG1fdG90YWxCeXRl
c0NvcGllZCArPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzQ29waWVkKCk7Ci0gICAgbV90b3RhbEJ5dGVz
VmlzaXRlZCArPSB0aHJlYWRCeXRlc1Zpc2l0ZWQoKTsKLSAgICBtX3RvdGFsQnl0ZXNDb3BpZWQg
Kz0gdGhyZWFkQnl0ZXNDb3BpZWQoKTsKKyAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkICs9IG1fdG90
YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGU7CisgICAgbV90b3RhbEJ5dGVzQ29waWVkICs9IG1fdG90
YWxCeXRlc0NvcGllZFRoaXNDeWNsZTsKIH0KIAogdm9pZCBIZWFwOjpyZXNldFZpc2l0b3JzKCkK
QEAgLTkwMiwxNiArOTAzLDYgQEAgc2l6ZV90IEhlYXA6OmNhcGFjaXR5KCkKICAgICByZXR1cm4g
bV9vYmplY3RTcGFjZS5jYXBhY2l0eSgpICsgbV9zdG9yYWdlU3BhY2UuY2FwYWNpdHkoKSArIGV4
dHJhTWVtb3J5U2l6ZSgpOwogfQogCi1zaXplX3QgSGVhcDo6c2l6ZUFmdGVyQ29sbGVjdCgpCi17
Ci0gICAgLy8gVGhlIHJlc3VsdCBoZXJlIG1heSBub3QgYWdyZWUgd2l0aCB0aGUgbm9ybWFsIEhl
YXA6OnNpemUoKS4gCi0gICAgLy8gVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB3ZSBvbmx5
IGNvdW50IGxpdmUgY29waWVkIGJ5dGVzCi0gICAgLy8gcmF0aGVyIHRoYW4gYWxsIHVzZWQgKGlu
Y2x1ZGluZyBkZWFkKSBjb3BpZWQgYnl0ZXMsIHRodXMgaXQncyAKLSAgICAvLyBhbHdheXMgdGhl
IGNhc2UgdGhhdCBtX3RvdGFsQnl0ZXNDb3BpZWQgPD0gbV9zdG9yYWdlU3BhY2Uuc2l6ZSgpLiAK
LSAgICBBU1NFUlQobV90b3RhbEJ5dGVzQ29waWVkIDw9IG1fc3RvcmFnZVNwYWNlLnNpemUoKSk7
Ci0gICAgcmV0dXJuIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKyBtX3RvdGFsQnl0ZXNDb3BpZWQgKyBl
eHRyYU1lbW9yeVNpemUoKTsKLX0KLQogc2l6ZV90IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVj
dENvdW50KCkKIHsKICAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291bnRJZkdsb2Jh
bE9iamVjdD4oKTsKQEAgLTEwNDMsNyArMTAzNCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6
OmNvbGxlY3RJbXBsKEhlYXAKICAgICAKICAgICBkb3VibGUgYmVmb3JlID0gMDsKICAgICBpZiAo
T3B0aW9uczo6bG9nR0MoKSkgewotICAgICAgICBkYXRhTG9nKCJbR0M6ICIpOworICAgICAgICBk
YXRhTG9nKCJbR0M6ICIsIGNhcGFjaXR5KCkgLyAxMDI0LCAiIGtiICIpOwogICAgICAgICBiZWZv
cmUgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQogICAgIApAQCAtMTEzNyw2ICsxMTI4LDEwIEBA
IHZvaWQgSGVhcDo6c3VzcGVuZENvbXBpbGVyVGhyZWFkcygpCiB2b2lkIEhlYXA6OndpbGxTdGFy
dENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICAgICBHQ1BIQVNF
KFN0YXJ0aW5nQ29sbGVjdGlvbik7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCisg
ICAgICAgIGRhdGFMb2coIj0+ICIpOworICAgIAogICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0
aW9uKGNvbGxlY3Rpb25UeXBlKSkgewogICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBG
dWxsQ29sbGVjdGlvbjsKICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gZmFsc2U7
CkBAIC0xMjczLDcgKzEyNjgsNDIgQEAgdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcnMoKQogdm9p
ZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHsKICAgICBHQ1BIQVNFKFVwZGF0ZUFs
bG9jYXRpb25MaW1pdHMpOwotICAgIHNpemVfdCBjdXJyZW50SGVhcFNpemUgPSBzaXplQWZ0ZXJD
b2xsZWN0KCk7CisgICAgCisgICAgLy8gQ2FsY3VsYXRlIG91ciBjdXJyZW50IGhlYXAgc2l6ZSB0
aHJlc2hvbGQgZm9yIHRoZSBwdXJwb3NlIG9mIGZpZ3VyaW5nIG91dCB3aGVuIHdlIHNob3VsZAor
ICAgIC8vIHJ1biBhbm90aGVyIGNvbGxlY3Rpb24uIFRoaXMgaXNuJ3QgdGhlIHNhbWUgYXMgZWl0
aGVyIHNpemUoKSBvciBjYXBhY2l0eSgpLCB0aG91Z2ggaXQgc2hvdWxkCisgICAgLy8gYmUgc29t
ZXdoZXJlIGJldHdlZW4gdGhlIHR3by4gVGhlIGtleSBpcyB0byBtYXRjaCB0aGUgc2l6ZSBjYWxj
dWxhdGlvbnMgaW52b2x2ZWQgY2FsbHMgdG8KKyAgICAvLyBkaWRBbGxvY2F0ZSgpLCB3aGlsZSBu
ZXZlciBkYW5nZXJvdXNseSB1bmRlcmVzdGltYXRpbmcgY2FwYWNpdHkoKS4gSW4gZXh0cmVtZSBj
YXNlcyBvZgorICAgIC8vIGZyYWdtZW50YXRpb24sIHdlIG1heSBoYXZlIHNpemUoKSBtdWNoIHNt
YWxsZXIgdGhhbiBjYXBhY2l0eSgpLiBPdXIgY29sbGVjdG9yIHNvbWV0aW1lcworICAgIC8vIHRl
bXBvcmFyaWx5IGFsbG93cyB2ZXJ5IGhpZ2ggZnJhZ21lbnRhdGlvbiBiZWNhdXNlIGl0IGRvZXNu
J3QgZGVmcmFnbWVudCBvbGQgYmxvY2tzIGluIGNvcGllZAorICAgIC8vIHNwYWNlLgorICAgIHNp
emVfdCBjdXJyZW50SGVhcFNpemUgPSAwOworCisgICAgLy8gRm9yIG1hcmtlZCBzcGFjZSwgd2Ug
dXNlIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdmlzaXRlZC4gVGhpcyBtYXRjaGVzIHRoZSBs
b2dpYyBmb3IKKyAgICAvLyBNYXJrZWRBbGxvY2F0b3IncyBjYWxscyB0byBkaWRBbGxvY2F0ZSgp
LCB3aGljaCBlZmZlY3RpdmVseSBhY2NvdW50cyBmb3IgdGhlIHRvdGFsIHNpemUgb2YKKyAgICAv
LyBvYmplY3RzIGFsbG9jYXRlZCByYXRoZXIgdGhhbiBibG9ja3MgdXNlZC4gVGhpcyB3aWxsIHVu
ZGVyZXN0aW1hdGUgY2FwYWNpdHkoKSwgYW5kIGluIGNhc2UKKyAgICAvLyBvZiBmcmFnbWVudGF0
aW9uLCB0aGlzIG1heSBiZSBzdWJzdGFudGlhbC4gRm9ydHVuYXRlbHksIG1hcmtlZCBzcGFjZSBy
YXJlbHkgZnJhZ21lbnRzIGJlY2F1c2UKKyAgICAvLyBjZWxscyB1c3VhbGx5IGhhdmUgYSBuYXJy
b3cgcmFuZ2Ugb2Ygc2l6ZXMuIFNvLCB0aGUgdW5kZXJlc3RpbWF0aW9uIGlzIHByb2JhYmx5IE9L
LgorICAgIGN1cnJlbnRIZWFwU2l6ZSArPSBtX3RvdGFsQnl0ZXNWaXNpdGVkOworCisgICAgLy8g
Rm9yIGNvcGllZCBzcGFjZSwgd2UgdXNlIHRoZSBjYXBhY2l0eSBvZiBzdG9yYWdlIHNwYWNlLiBU
aGlzIGlzIGJlY2F1c2UgY29waWVkIHNwYWNlIG1heSBnZXQKKyAgICAvLyBiYWRseSBmcmFnbWVu
dGVkIGJldHdlZW4gZnVsbCBjb2xsZWN0aW9ucy4gVGhpcyBhcmlzZXMgd2hlbiBlYWNoIGVkZW4g
Y29sbGVjdGlvbiBldmFjdWF0ZXMKKyAgICAvLyBtdWNoIGxlc3MgdGhhbiBvbmUgQ29waWVkQmxv
Y2sncyB3b3J0aCBvZiBzdHVmZi4gSXQgY2FuIGFsc28gaGFwcGVuIHdoZW4gQ29waWVkQmxvY2tz
IGdldAorICAgIC8vIHBpbm5lZCBkdWUgdG8gdmVyeSBzaG9ydC1saXZlZCBvYmplY3RzLiBJbiBz
dWNoIGEgY2FzZSwgd2Ugd2FudCB0byBnZXQgdG8gYSBmdWxsIGNvbGxlY3Rpb24KKyAgICAvLyBz
b29uZXIgcmF0aGVyIHRoYW4gbGF0ZXIuIElmIHdlIHVzZWQgbV90b3RhbEJ5dGVzQ29waWVkLCB0
aGVuIGZvciBmb3IgZWFjaCBDb3BpZWRCbG9jayB0aGF0IGFuCisgICAgLy8gZWRlbiBhbGxvY2F0
aW9uIHByb21vdGVkLCB3ZSB3b3VsZCBvbmx5IGRlZHVjdCB0aGUgb25lIG9iamVjdCdzIHNpemUg
ZnJvbSBlZGVuIHNpemUuIFRoaXMKKyAgICAvLyB3b3VsZCBtZWFuIHRoYXQgd2UgY291bGQgImxl
YWsiIG1hbnkgQ29waWVkQmxvY2tzIGJlZm9yZSB3ZSBkaWQgYSBmdWxsIGNvbGxlY3Rpb24gYW5k
CisgICAgLy8gZGVmcmFnbWVudGVkIGFsbCBvZiB0aGVtLiBJdCB3b3VsZCBiZSBncmVhdCB0byB1
c2UgbV90b3RhbEJ5dGVzQ29waWVkLCBidXQgd2UnZCBuZWVkIHRvCisgICAgLy8gYXVnbWVudCBp
dCB3aXRoIHNvbWV0aGluZyB0aGF0IGFjY291bnRzIGZvciB0aG9zZSBmcmFnbWVudGVkIGJsb2Nr
cy4KKyAgICAvLyBGSVhNRTogTWFrZSBpdCBwb3NzaWJsZSB0byBjb21wdXRlIGhlYXAgc2l6ZSB1
c2luZyBtX3RvdGFsQnl0ZXNDb3BpZWQgcmF0aGVyIHRoYW4KKyAgICAvLyBtX3N0b3JhZ2VTcGFj
ZS5jYXBhY2l0eSgpCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDI2OAorICAgIEFTU0VSVChtX3RvdGFsQnl0ZXNDb3BpZWQgPD0gbV9zdG9yYWdlU3Bh
Y2Uuc2l6ZSgpKTsKKyAgICBjdXJyZW50SGVhcFNpemUgKz0gbV9zdG9yYWdlU3BhY2UuY2FwYWNp
dHkoKTsKKworICAgIC8vIEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gZW5zdXJlIHRoYXQgZXh0cmFN
ZW1vcnlTaXplKCkgZW5kcyB1cCBjb3JyZXNwb25kaW5nIHRvIGFsbG9jYXRpb24tdGltZQorICAg
IC8vIGV4dHJhIG1lbW9yeSByZXBvcnRpbmcuCisgICAgY3VycmVudEhlYXBTaXplICs9IGV4dHJh
TWVtb3J5U2l6ZSgpOworICAgIAogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYg
Y3VycmVudEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFw
U3RhdGlzdGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CiAKQEAgLTEyODYsMTMgKzEzMTYsMjMgQEAg
dm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICAgICAgbV9zaXplQWZ0ZXJM
YXN0RnVsbENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CiAgICAgICAgIG1fYnl0ZXNBYmFuZG9u
ZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCA9IDA7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICAgICAKICAgICAgICAgQVNTRVJUKGN1
cnJlbnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxhc3RDb2xsZWN0KTsKICAgICAgICAgbV9tYXhF
ZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVhcFNpemU7CiAgICAgICAgIG1fc2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0ID0gY3VycmVudEhlYXBTaXplOworICAgICAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiTWF4IGhlYXAgc2l6ZTogIiwgbV9tYXhIZWFw
U2l6ZSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJDdXJyZW50IGhlYXAgc2l6ZTogIiwg
Y3VycmVudEhlYXBTaXplLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlNpemUgYWZ0ZXIg
bGFzdCBlZGVuIGNvbGxlY3Rpb246ICIsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0LCAiXG4i
KTsKKyAgICAgICAgfQogICAgICAgICBkb3VibGUgZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0g
KGRvdWJsZSltX21heEVkZW5TaXplIC8gKGRvdWJsZSltX21heEhlYXBTaXplOworICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkVkZW4gdG8gb2xkIGdlbmVyYXRpb24g
cmF0aW86ICIsIGVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbywgIlxuIik7CiAgICAgICAgIGRvdWJs
ZSBtaW5FZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8gPSAxLjAgLyAzLjA7CiAgICAgICAgIGlmIChl
ZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8gPCBtaW5FZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8pCiAg
ICAgICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOworICAgICAgICAvLyBU
aGlzIHNlZW1zIHN1c3BlY3QgYXQgZmlyc3QsIGJ1dCB3aGF0IGl0IGRvZXMgaXMgZW5zdXJlIHRo
YXQgdGhlIG51cnNlcnkgc2l6ZSBpcyBmaXhlZC4KICAgICAgICAgbV9tYXhIZWFwU2l6ZSArPSBj
dXJyZW50SGVhcFNpemUgLSBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogICAgICAgICBtX21heEVk
ZW5TaXplID0gbV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKICAgICAgICAgaWYgKG1f
ZnVsbEFjdGl2aXR5Q2FsbGJhY2spIHsKQEAgLTEzMDUsNyArMTM0NSw3IEBAIHZvaWQgSGVhcDo6
dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA9
IDA7CiAKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZyhjdXJyZW50
SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKKyAgICAgICAgZGF0YUxvZyhjdXJyZW50SGVhcFNp
emUgLyAxMDI0LCAiIGtiICIpOwogfQogCiB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24o
ZG91YmxlIGdjU3RhcnRUaW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gMTkxMjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHN3ZWVwTmV4
dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAKICAgICBib29sIHNob3VsZERvRnVsbENvbGxl
Y3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3Q7Ci0gICAg
c2l6ZV90IHNpemVBZnRlckNvbGxlY3QoKTsKIAogICAgIEpTU3RhY2smIHN0YWNrKCk7CiAgICAg
CkBAIC0zNTcsNyArMzU2LDkgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsK
ICAgICBib29sIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKICAgICBzaXplX3QgbV90b3RhbEJ5
dGVzVmlzaXRlZDsKKyAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlzaXRlZFRoaXNDeWNsZTsKICAg
ICBzaXplX3QgbV90b3RhbEJ5dGVzQ29waWVkOworICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNDb3Bp
ZWRUaGlzQ3ljbGU7CiAgICAgCiAgICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jl
c3M7CiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlzaW9uIDE5MTIyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDkgKzM5LDEzIEBAIGlubGluZSBib29sIEhlYXA6OnNob3VsZENvbGxlY3QoKQogewog
ICAgIGlmIChpc0RlZmVycmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1f
aXNTYWZlVG9Db2xsZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCi0gICAgICAgIHJldHVybiBtX2J5dGVzQWxs
b2NhdGVkVGhpc0N5Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIG1faXNTYWZlVG9D
b2xsZWN0ICYmIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbjsKLSAgICByZXR1
cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemUgJiYgbV9pc1NhZmVU
b0NvbGxlY3QgJiYgbV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uOworICAgICAg
ICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNp
emUoKTsKKyAgICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNp
emU7CiB9CiAKIGlubGluZSBib29sIEhlYXA6OmlzQnVzeSgpCkBAIC0yNzQsOSArMjc4LDYgQEAg
aW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aAogCiBpbmxpbmUgYm9vbCBI
ZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCkKIHsKLSAgICBpZiAoaXNEZWZlcnJlZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIXNob3VsZENvbGxlY3QoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAxOTEyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyNiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIGNvbnN0IGJvb2wgY29tcHV0ZUJhbGFuY2Ug
PSBmYWxzZTsKK3N0YXRpYyBzaXplX3QgYmFsYW5jZTsKKwogTWFya2VkQmxvY2sqIE1hcmtlZEJs
b2NrOjpjcmVhdGUoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24pCiB7CisgICAgaWYgKGNvbXB1
dGVCYWxhbmNlKSB7CisgICAgICAgIGJhbGFuY2UrKzsKKyAgICAgICAgaWYgKCEoYmFsYW5jZSAl
IDEwKSkKKyAgICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFu
Y2UsICJcbiIpOworICAgIH0KICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBmYXN0QWxpZ25lZE1h
bGxvYyhibG9ja1NpemUsIGNhcGFjaXR5KSkgTWFya2VkQmxvY2soYWxsb2NhdG9yLCBjYXBhY2l0
eSwgY2VsbFNpemUsIG5lZWRzRGVzdHJ1Y3Rpb24pOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpk
ZXN0cm95KE1hcmtlZEJsb2NrKiBibG9jaykKIHsKKyAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsK
KyAgICAgICAgYmFsYW5jZS0tOworICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQorICAgICAg
ICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7Cisg
ICAgfQogICAgIGJsb2NrLT5+TWFya2VkQmxvY2soKTsKICAgICBmYXN0QWxpZ25lZEZyZWUoYmxv
Y2spOwogfQo=
</data>
<flag name="review"
          id="288522"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>