<?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>144016</bug_id>
          
          <creation_ts>2015-04-21 15:07:38 -0700</creation_ts>
          <short_desc>Allow function allocation sinking</short_desc>
          <delta_ts>2015-04-23 19:24:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087184</commentid>
    <comment_count>0</comment_count>
      <attachid>251267</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 15:07:38 -0700</bug_when>
    <thetext>Created attachment 251267
First patch

Currently, only object allocations are sunk by the DFG allocation sinking phase.
This adds the ability to sink function allocations as well, test cases forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088085</commentid>
    <comment_count>1</comment_count>
      <attachid>251511</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-23 16:15:17 -0700</bug_when>
    <thetext>Created attachment 251511
Updated patch

Hopefully correct; still needs more testing.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;Trunk&quot; at /Volumes/Data/Baseline/OpenSource/WebKitBuild/Release/jsc
&quot;SinkNewFunction&quot; at /Volumes/Data/WIP/OpenSource/WebKitBuild/SinkNewFunction/Release/jsc

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.

                                                          Trunk                SinkNewFunction                                  
SunSpider:
   3d-cube                                            6.0558+-0.1599     ?      6.0763+-0.3087        ?
   3d-morph                                           7.6472+-0.8357            7.5072+-0.1487          might be 1.0187x faster
   3d-raytrace                                        7.5972+-0.6318            7.2291+-0.1731          might be 1.0509x faster
   access-binary-trees                                3.2697+-1.1773            3.0729+-0.3808          might be 1.0640x faster
   access-fannkuch                                    7.8368+-0.3975            7.8275+-0.3418        
   access-nbody                                       3.5932+-0.1365     ?      3.7218+-0.2385        ? might be 1.0358x slower
   access-nsieve                                      4.3672+-0.2186     ?      4.6677+-0.6555        ? might be 1.0688x slower
   bitops-3bit-bits-in-byte                           2.0238+-0.0807     ?      2.1459+-0.3880        ? might be 1.0603x slower
   bitops-bits-in-byte                                4.3754+-0.0859            4.3442+-0.0339        
   bitops-bitwise-and                                 2.9675+-0.0731            2.9280+-0.0436          might be 1.0135x faster
   bitops-nsieve-bits                                 4.3915+-0.2255            4.2960+-0.1076          might be 1.0222x faster
   controlflow-recursive                              2.7958+-0.1339     ?      3.0602+-0.3400        ? might be 1.0946x slower
   crypto-aes                                         5.2596+-0.2587     ?      5.2834+-0.3849        ?
   crypto-md5                                         2.9955+-0.0488            2.9941+-0.0879        
   crypto-sha1                                        3.1196+-0.2278            3.0096+-0.1434          might be 1.0365x faster
   date-format-tofte                                  9.6734+-0.3199            9.5031+-0.5819          might be 1.0179x faster
   date-format-xparb                                  6.8875+-0.2144     ?      7.0329+-0.3250        ? might be 1.0211x slower
   math-cordic                                        3.9131+-0.0398     ?      3.9821+-0.2475        ? might be 1.0176x slower
   math-partial-sums                                  6.4521+-0.3259            6.3316+-0.1028          might be 1.0190x faster
   math-spectral-norm                                 2.4428+-0.0526     ?      2.4634+-0.1486        ?
   regexp-dna                                         9.2357+-0.1056     ?      9.3337+-0.2050        ? might be 1.0106x slower
   string-base64                                      6.0031+-0.1161     ?      6.2082+-0.3828        ? might be 1.0342x slower
   string-fasta                                       8.1678+-0.0489     ?      8.2305+-0.0853        ?
   string-tagcloud                                   11.9602+-0.4285     ?     12.3446+-0.4499        ? might be 1.0321x slower
   string-unpack-code                                25.6421+-0.8688     ?     26.1412+-0.9284        ? might be 1.0195x slower
   string-validate-input                              6.1688+-0.1287            6.0859+-0.1378          might be 1.0136x faster

   &lt;arithmetic&gt;                                       6.3401+-0.0624     ?      6.3777+-0.0562        ? might be 1.0059x slower

                                                          Trunk                SinkNewFunction                                  
LongSpider:
   3d-cube                                         1146.0595+-4.5428     !   1158.0201+-3.2305        ! definitely 1.0104x slower
   3d-morph                                        2250.4303+-1.4919     ?   2250.4883+-1.2673        ?
   3d-raytrace                                      979.3950+-8.5092     ?    986.6629+-5.5882        ?
   access-binary-trees                             1209.9427+-5.8881         1203.7576+-6.0720        
   access-fannkuch                                  402.3108+-14.6796    ?    407.4455+-16.6382       ? might be 1.0128x slower
   access-nbody                                     815.6903+-1.5918     ^    805.0315+-0.9057        ^ definitely 1.0132x faster
   access-nsieve                                    896.6053+-10.6931         894.2331+-3.5723        
   bitops-3bit-bits-in-byte                          59.5577+-0.7368     ?     59.6522+-0.8439        ?
   bitops-bits-in-byte                              123.8816+-1.9319          120.8887+-6.0038          might be 1.0248x faster
   bitops-nsieve-bits                               917.8310+-7.4733          917.3359+-7.5826        
   controlflow-recursive                            680.5225+-0.6470     ?    680.5909+-1.1868        ?
   crypto-aes                                       808.8571+-1.9803          807.1617+-4.2809        
   crypto-md5                                       777.9714+-6.6105          776.4615+-2.4666        
   crypto-sha1                                      856.0246+-16.1174         853.6294+-15.2408       
   date-format-tofte                                754.1829+-11.4313    ?    756.5376+-11.0543       ?
   date-format-xparb                                914.3832+-2.8010     ?    922.4829+-5.3666        ?
   math-cordic                                      745.0096+-1.1358          744.5284+-0.9926        
   math-partial-sums                                622.1131+-0.2711     !    625.6687+-0.3868        ! definitely 1.0057x slower
   math-spectral-norm                               826.8765+-2.4319          825.6265+-0.7580        
   string-base64                                    472.9468+-3.7305          471.5063+-5.8218        
   string-fasta                                     600.6385+-109.2036        556.5824+-3.3802          might be 1.0792x faster
   string-tagcloud                                  276.2345+-2.4752          275.7115+-2.4843        

   &lt;geometric&gt;                                      634.9739+-4.6945          632.7599+-2.7923          might be 1.0035x faster

                                                          Trunk                SinkNewFunction                                  
V8Spider:
   crypto                                            75.9754+-3.4253           75.4352+-1.4680        
   deltablue                                        129.1040+-25.1924         124.4542+-35.4033         might be 1.0374x faster
   earley-boyer                                      58.2167+-1.7655           57.9812+-1.3112        
   raytrace                                          44.4368+-2.9330     ?     46.4924+-1.6947        ? might be 1.0463x slower
   regexp                                           104.1183+-0.5735     ?    105.5718+-1.6558        ? might be 1.0140x slower
   richards                                         102.8855+-5.0799     ?    106.6211+-4.3015        ? might be 1.0363x slower
   splay                                             50.6859+-2.7500     ?     51.6397+-2.0612        ? might be 1.0188x slower

   &lt;geometric&gt;                                       75.1464+-0.8241     ?     75.7623+-2.8337        ? might be 1.0082x slower

                                                          Trunk                SinkNewFunction                                  
Octane:
   encrypt                                           0.28961+-0.00048    ?     0.28997+-0.00054       ?
   decrypt                                           5.09789+-0.01467    ?     5.11667+-0.03976       ?
   deltablue                                x2       0.23359+-0.00062    ?     0.23395+-0.00328       ?
   earley                                            0.67858+-0.16546          0.61227+-0.00474         might be 1.1083x faster
   boyer                                             8.93664+-0.04057          8.93350+-0.03589       
   navier-stokes                            x2       7.55339+-0.00912    ?     7.55911+-0.01520       ?
   raytrace                                 x2       1.55019+-0.09143    ?     1.58211+-0.06873       ? might be 1.0206x slower
   richards                                 x2       0.13954+-0.00287    ?     0.14119+-0.00382       ? might be 1.0118x slower
   splay                                    x2       0.50037+-0.00325    ?     0.50266+-0.00225       ?
   regexp                                   x2      42.76514+-0.53758         42.74989+-0.92714       
   pdfjs                                    x2      54.54151+-0.18289    ?    54.80862+-0.14846       ?
   mandreel                                 x2      72.29088+-0.48097    ?    72.67518+-0.26812       ?
   gbemu                                    x2      55.87310+-0.97806    ?    57.72494+-3.55873       ? might be 1.0331x slower
   closure                                           0.70640+-0.00510    ?     0.70667+-0.00432       ?
   jquery                                            8.83669+-0.05497    ?     8.89807+-0.04948       ?
   box2d                                    x2      16.35254+-0.16447    ?    16.45553+-0.31206       ?
   zlib                                     x2     527.69638+-22.92335   ?   538.00974+-3.08129       ? might be 1.0195x slower
   typescript                               x2     943.27153+-16.97161       937.50557+-16.02971      

   &lt;geometric&gt;                                       8.62258+-0.10244    ?     8.65927+-0.04469       ? might be 1.0043x slower

                                                          Trunk                SinkNewFunction                                  
Kraken:
   ai-astar                                          425.685+-5.810      ?     425.736+-3.375         ?
   audio-beat-detection                              130.245+-1.715            129.153+-1.457         
   audio-dft                                         231.138+-2.045      ^     226.840+-1.632         ^ definitely 1.0189x faster
   audio-fft                                         104.089+-3.676      ?     106.617+-1.580         ? might be 1.0243x slower
   audio-oscillator                                  263.942+-0.492      ?     267.574+-8.544         ? might be 1.0138x slower
   imaging-darkroom                                  129.381+-1.329      !     138.050+-0.593         ! definitely 1.0670x slower
   imaging-desaturate                                 81.521+-2.725      ?      81.608+-2.701         ?
   imaging-gaussian-blur                             128.762+-0.977      ?     129.798+-0.893         ?
   json-parse-financial                               55.955+-1.248      ^      53.441+-0.185         ^ definitely 1.0470x faster
   json-stringify-tinderbox                           82.750+-22.699            74.050+-1.064           might be 1.1175x faster
   stanford-crypto-aes                                81.760+-0.678      ?      82.093+-0.455         ?
   stanford-crypto-ccm                                70.814+-6.670      ?      71.557+-7.930         ? might be 1.0105x slower
   stanford-crypto-pbkdf2                            218.548+-0.622      ?     219.508+-0.692         ?
   stanford-crypto-sha256-iterative                   71.678+-0.790             70.902+-0.585           might be 1.0109x faster

   &lt;arithmetic&gt;                                      148.305+-1.903      ?     148.352+-0.811         ? might be 1.0003x slower

                                                          Trunk                SinkNewFunction                                  
JSRegress:
   abs-boolean                                        3.3999+-0.1054     ?      3.4453+-0.2595        ? might be 1.0133x slower
   adapt-to-double-divide                            23.2879+-0.5269           23.2767+-0.3232        
   aliased-arguments-getbyval                         1.9814+-0.5452            1.5589+-0.1591          might be 1.2710x faster
   allocate-big-object                                3.3758+-0.1789     ?      3.5243+-0.0980        ? might be 1.0440x slower
   arguments-named-and-reflective                    16.2211+-0.6376           15.9995+-0.2070          might be 1.0139x faster
   arguments-out-of-bounds                           14.7329+-0.3443     ?     14.8163+-0.2780        ?
   arguments-strict-mode                             13.8081+-0.3342           13.7590+-0.4428        
   arguments                                         12.3942+-0.2110           12.1899+-0.3624          might be 1.0168x faster
   arity-mismatch-inlining                            1.1050+-0.0289     ?      1.1228+-0.0749        ? might be 1.0161x slower
   array-access-polymorphic-structure                 8.7386+-0.4108            8.6093+-0.2379          might be 1.0150x faster
   array-nonarray-polymorhpic-access                 40.9390+-0.9297     ?     42.7252+-1.4145        ? might be 1.0436x slower
   array-prototype-every                            115.2107+-1.2807          114.2585+-0.9108        
   array-prototype-forEach                          113.6938+-2.3269          112.0770+-2.0029          might be 1.0144x faster
   array-prototype-map                              123.7941+-1.2505     !    128.7760+-0.4525        ! definitely 1.0402x slower
   array-prototype-some                             115.5448+-0.6399          114.5569+-1.2026        
   array-splice-contiguous                           60.5459+-0.8698     ^     55.9970+-0.4623        ^ definitely 1.0812x faster
   array-with-double-add                              4.9441+-0.3316            4.8377+-0.1470          might be 1.0220x faster
   array-with-double-increment                        4.2633+-0.0918     ?      4.2902+-0.1966        ?
   array-with-double-mul-add                          6.0363+-0.4150            5.9743+-0.2063          might be 1.0104x faster
   array-with-double-sum                              4.4826+-0.0486     ?      4.5650+-0.1400        ? might be 1.0184x slower
   array-with-int32-add-sub                           8.1949+-0.1337     ?      8.4642+-0.3358        ? might be 1.0329x slower
   array-with-int32-or-double-sum                     4.5372+-0.0981     ?      4.5489+-0.2232        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     39.2582+-0.8700     ?     40.0669+-3.0310        ? might be 1.0206x slower
   ArrayBuffer-DataView-alloc-long-lived             17.7893+-0.3298           17.7627+-0.3293        
   ArrayBuffer-Int32Array-byteOffset                  5.1892+-0.0684     ?      5.2990+-0.2996        ? might be 1.0211x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     40.1953+-2.0738     ?     40.4418+-1.7068        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     29.7955+-0.7550           29.6172+-0.3910        
   ArrayBuffer-Int8Array-alloc-long-lived            16.8899+-0.3711     ?     16.9799+-0.3568        ?
   ArrayBuffer-Int8Array-alloc                       14.0555+-0.3182     ?     14.4305+-0.3694        ? might be 1.0267x slower
   asmjs_bool_bug                                    10.6202+-0.1463     ?     10.6994+-0.2374        ?
   assign-custom-setter-polymorphic                   3.8340+-0.4245            3.7025+-0.1662          might be 1.0355x faster
   assign-custom-setter                               4.8879+-0.0579            4.8844+-0.0417        
   basic-set                                         11.7330+-1.2766           11.3451+-0.8319          might be 1.0342x faster
   big-int-mul                                        4.8669+-0.1588     ?      4.9516+-0.2835        ? might be 1.0174x slower
   boolean-test                                       4.0267+-0.1106     ?      4.0734+-0.2921        ? might be 1.0116x slower
   branch-fold                                        5.0902+-0.2187            4.9797+-0.0914          might be 1.0222x faster
   by-val-generic                                    10.4959+-0.3450           10.2039+-0.0516          might be 1.0286x faster
   call-spread-apply                                 37.3091+-0.6324     ?     37.9414+-1.4357        ? might be 1.0169x slower
   call-spread-call                                  31.8012+-1.1532           31.3204+-1.1177          might be 1.0154x faster
   captured-assignments                               0.5448+-0.0194            0.5320+-0.0136          might be 1.0240x faster
   cast-int-to-double                                 6.7421+-0.0614     ?      6.8518+-0.1399        ? might be 1.0163x slower
   cell-argument                                      8.8896+-0.1756     ?      9.0823+-0.3423        ? might be 1.0217x slower
   cfg-simplify                                       4.0385+-0.0935            4.0264+-0.0987        
   chain-getter-access                               12.9458+-0.0863     ?     13.0929+-0.4136        ? might be 1.0114x slower
   cmpeq-obj-to-obj-other                            16.4757+-1.1568     ?     16.5135+-0.4348        ?
   constant-test                                      6.4360+-0.0679     ?      6.4599+-0.1436        ?
   create-lots-of-functions                          12.9023+-0.6246     ?     13.1475+-0.4476        ? might be 1.0190x slower
   DataView-custom-properties                        47.0756+-1.8637     ?     49.5034+-2.4772        ? might be 1.0516x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.6020+-0.0329     ?      0.6228+-0.0683        ? might be 1.0346x slower
   delay-tear-off-arguments-strictmode               17.0798+-0.2453     !     17.5766+-0.2280        ! definitely 1.0291x slower
   deltablue-varargs                                209.9329+-1.9116     ^    206.0461+-1.6999        ^ definitely 1.0189x faster
   destructuring-arguments                           19.3271+-0.7224     ?     20.0355+-0.5516        ? might be 1.0366x slower
   destructuring-swap                                 6.6596+-0.1285            6.6259+-0.1229        
   direct-arguments-getbyval                          1.5932+-0.1093            1.5779+-0.0704        
   div-boolean-double                                 7.6252+-0.2375            7.5154+-0.0452          might be 1.0146x faster
   div-boolean                                       11.7355+-0.0870     ?     11.7370+-0.0702        ?
   double-get-by-val-out-of-bounds                    5.8394+-0.2639            5.7353+-0.3145          might be 1.0182x faster
   double-pollution-getbyval                         12.4930+-0.2073     ^     12.0243+-0.1415        ^ definitely 1.0390x faster
   double-pollution-putbyoffset                       6.2518+-0.8303            5.4622+-0.1721          might be 1.1446x faster
   double-to-int32-typed-array-no-inline              2.8945+-0.0712     ?      2.9097+-0.1803        ?
   double-to-int32-typed-array                        2.4481+-0.1793            2.4303+-0.1429        
   double-to-uint32-typed-array-no-inline             3.3903+-0.7217            3.0542+-0.1518          might be 1.1101x faster
   double-to-uint32-typed-array                       2.4654+-0.0433     ?      2.4997+-0.1041        ? might be 1.0139x slower
   elidable-new-object-dag                           50.7652+-2.5448           50.1287+-0.6402          might be 1.0127x faster
   elidable-new-object-roflcopter                    54.9682+-1.4482           54.8502+-2.3408        
   elidable-new-object-then-call                     46.2423+-1.1315           46.0019+-0.7929        
   elidable-new-object-tree                          53.8323+-2.6113           53.3582+-2.2619        
   empty-string-plus-int                              6.6888+-0.1316     ?      6.7816+-0.2957        ? might be 1.0139x slower
   emscripten-cube2hash                              40.6670+-2.8861           39.6838+-0.8475          might be 1.0248x faster
   exit-length-on-plain-object                       17.7862+-0.5378           17.6921+-0.2034        
   external-arguments-getbyval                        1.6318+-0.1754            1.6270+-0.1447        
   external-arguments-putbyval                        2.9572+-0.1950            2.8865+-0.1044          might be 1.0245x faster
   fixed-typed-array-storage-var-index                1.6136+-0.0274     ?      1.6145+-0.0649        ?
   fixed-typed-array-storage                          1.1335+-0.0443            1.1270+-0.0279        
   Float32Array-matrix-mult                           5.4991+-0.1525            5.4430+-0.0599          might be 1.0103x faster
   Float32Array-to-Float64Array-set                  68.9124+-1.0857           68.5424+-0.5084        
   Float64Array-alloc-long-lived                     86.0849+-5.1336           82.2695+-2.2282          might be 1.0464x faster
   Float64Array-to-Int16Array-set                    85.1279+-1.1475     ?     85.2009+-1.3112        ?
   fold-double-to-int                                17.9659+-0.3470     ?     17.9780+-0.3285        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     13.8480+-1.2285     ?     14.5080+-0.8669        ? might be 1.0477x slower
   fold-get-by-id-to-multi-get-by-offset             10.9937+-0.8287           10.7315+-0.5084          might be 1.0244x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.2020+-1.3146     ?     11.5621+-1.9774        ? might be 1.1333x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.4425+-1.3248     ?     10.8192+-1.9745        ? might be 1.0361x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.8945+-1.6400     ?     10.4341+-1.0846        ? might be 1.0545x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      5.6930+-0.9979     ?      6.5261+-1.2423        ? might be 1.1464x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.3356+-2.0190           12.1596+-1.4839          might be 1.0145x faster
   fold-put-by-id-to-multi-put-by-offset             11.6135+-0.5703     ?     11.9728+-0.9390        ? might be 1.0309x slower
   fold-put-structure                                 5.2809+-0.7587            5.0601+-0.2848          might be 1.0436x faster
   for-of-iterate-array-entries                       5.7679+-0.2669     ?      6.0310+-0.3845        ? might be 1.0456x slower
   for-of-iterate-array-keys                          4.8017+-0.3987     ?      4.8314+-0.3507        ?
   for-of-iterate-array-values                        4.4502+-0.1356     ?      4.4736+-0.1647        ?
   fround                                            25.2957+-0.4140     ?     25.3485+-0.2247        ?
   ftl-library-inlining-dataview                     83.9480+-0.5773     ?     84.9423+-0.7008        ? might be 1.0118x slower
   ftl-library-inlining                             162.0490+-0.3040     ?    162.1562+-0.5429        ?
   function-dot-apply                                 2.7780+-0.0932     ?      2.7903+-0.1174        ?
   function-test                                      4.0978+-0.1102     ?      4.1375+-0.0554        ?
   function-with-eval                               131.6442+-1.7195          130.8906+-1.7076        
   gcse-poly-get-less-obvious                        20.6654+-0.1705     ?     20.8150+-0.3593        ?
   gcse-poly-get                                     23.1433+-0.1822     ?     23.4481+-0.7473        ? might be 1.0132x slower
   gcse                                               5.4810+-0.1916     ?      5.6754+-0.3167        ? might be 1.0355x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.6733+-0.1785            3.6383+-0.1370        
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.2531+-0.0596            8.1804+-0.0418        
   get-by-id-chain-from-try-block                     9.2895+-0.1992     ?      9.4149+-0.4505        ? might be 1.0135x slower
   get-by-id-check-structure-elimination              6.2816+-0.1761            6.2751+-0.1353        
   get-by-id-proto-or-self                           20.7586+-1.0152     ?     22.1797+-2.1518        ? might be 1.0685x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.2340+-0.3105            4.0663+-0.0545          might be 1.0412x faster
   get-by-id-self-or-proto                           21.3423+-1.2369     ?     21.7273+-1.8625        ? might be 1.0180x slower
   get-by-val-out-of-bounds                           5.6410+-0.2287            5.3852+-0.1599          might be 1.0475x faster
   get_callee_monomorphic                             3.3355+-0.1269     ?      3.3605+-0.2632        ?
   get_callee_polymorphic                             4.8358+-0.1860     ?      4.9346+-0.1842        ? might be 1.0204x slower
   getter-no-activation                               6.8124+-0.2224     ?      6.9586+-0.3366        ? might be 1.0215x slower
   getter-richards                                  164.8857+-21.8011         159.7603+-9.6267          might be 1.0321x faster
   getter                                             7.5975+-0.5268     ?      7.8785+-0.8698        ? might be 1.0370x slower
   global-var-const-infer-fire-from-opt               1.2217+-0.1482     ?      1.2412+-0.1056        ? might be 1.0160x slower
   global-var-const-infer                             0.9795+-0.1230     ?      1.1546+-0.3398        ? might be 1.1788x slower
   HashMap-put-get-iterate-keys                      34.1730+-1.4078           33.6089+-0.7869          might be 1.0168x faster
   HashMap-put-get-iterate                           33.7718+-0.9651           33.5199+-1.2326        
   HashMap-string-put-get-iterate                    33.6732+-1.2045     ?     34.1111+-1.5828        ? might be 1.0130x slower
   hoist-make-rope                                   11.0444+-0.6927     ?     11.0572+-0.6943        ?
   hoist-poly-check-structure-effectful-loop   
                                                      5.9280+-0.1787            5.9049+-0.2000        
   hoist-poly-check-structure                         4.5099+-0.0397     ?      4.7035+-0.2068        ? might be 1.0429x slower
   imul-double-only                                   9.7502+-0.2343     ?      9.9810+-0.7782        ? might be 1.0237x slower
   imul-int-only                                     12.0295+-0.9203           11.4329+-0.1441          might be 1.0522x faster
   imul-mixed                                         8.9814+-0.3525     ?      9.2716+-0.5015        ? might be 1.0323x slower
   in-four-cases                                     22.7079+-0.7465     !     24.9793+-0.6688        ! definitely 1.1000x slower
   in-one-case-false                                 12.8998+-1.0191     ?     14.1915+-0.3418        ? might be 1.1001x slower
   in-one-case-true                                  12.3425+-0.9739     ?     16.4780+-6.0808        ? might be 1.3351x slower
   in-two-cases                                      12.4235+-0.4865     !     14.9775+-0.9099        ! definitely 1.2056x slower
   indexed-properties-in-objects                      3.9235+-0.0303            3.9226+-0.0391        
   infer-closure-const-then-mov-no-inline             4.2638+-0.0854     ?      4.2774+-0.1533        ?
   infer-closure-const-then-mov                      25.2234+-2.0313           24.2030+-0.6968          might be 1.0422x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.5800+-0.1869           17.5057+-0.0878        
   infer-closure-const-then-put-to-scope             33.7038+-0.3759     ?     33.9355+-0.5716        ?
   infer-closure-const-then-reenter-no-inline   
                                                     82.5398+-1.1291           82.2486+-0.4925        
   infer-closure-const-then-reenter                  34.0998+-0.3059           33.9509+-0.2157        
   infer-constant-global-property                    43.6280+-0.2978     ?     43.8018+-0.6004        ?
   infer-constant-property                            3.6366+-0.0747     ?      3.6645+-0.0565        ?
   infer-one-time-closure-ten-vars                   12.0878+-0.2827           11.9136+-0.2211          might be 1.0146x faster
   infer-one-time-closure-two-vars                   11.4641+-0.2119     ?     11.5442+-0.4158        ?
   infer-one-time-closure                            11.4811+-0.3591           11.3285+-0.2372          might be 1.0135x faster
   infer-one-time-deep-closure                       18.5288+-0.6627           18.0950+-0.3185          might be 1.0240x faster
   inline-arguments-access                            5.4014+-0.1474     ?      5.4306+-0.3685        ?
   inline-arguments-aliased-access                    5.5306+-0.4374            5.3790+-0.2301          might be 1.0282x faster
   inline-arguments-local-escape                      5.7385+-0.4929     ?      5.9489+-1.4345        ? might be 1.0367x slower
   inline-get-scoped-var                              6.6644+-0.3773            6.5432+-0.1817          might be 1.0185x faster
   inlined-put-by-id-transition                      14.2867+-0.4365           13.6209+-1.2416          might be 1.0489x faster
   int-or-other-abs-then-get-by-val                   6.3645+-0.1585     ?      6.4600+-0.3463        ? might be 1.0150x slower
   int-or-other-abs-zero-then-get-by-val             23.4662+-0.7929           23.4082+-0.2240        
   int-or-other-add-then-get-by-val                   5.8218+-0.2467            5.6551+-0.1836          might be 1.0295x faster
   int-or-other-add                                   6.9211+-0.2762     ?      7.0061+-0.2975        ? might be 1.0123x slower
   int-or-other-div-then-get-by-val                   5.4639+-0.1312     ?      5.6455+-0.2717        ? might be 1.0332x slower
   int-or-other-max-then-get-by-val                   5.6665+-0.1317     ?      5.6898+-0.1692        ?
   int-or-other-min-then-get-by-val                   5.8276+-0.1989            5.7896+-0.1171        
   int-or-other-mod-then-get-by-val                   5.0000+-0.0758            4.9682+-0.0662        
   int-or-other-mul-then-get-by-val                   5.2790+-0.1399            5.2327+-0.1461        
   int-or-other-neg-then-get-by-val                   6.0826+-0.1359     ?      6.5420+-0.6837        ? might be 1.0755x slower
   int-or-other-neg-zero-then-get-by-val             22.9501+-0.3233     ?     23.6600+-0.6484        ? might be 1.0309x slower
   int-or-other-sub-then-get-by-val                   5.8338+-0.0427     ?      5.8398+-0.0330        ?
   int-or-other-sub                                   4.7829+-0.1050            4.7537+-0.0773        
   int-overflow-local                                 6.0306+-0.2159     ?      6.5289+-1.0016        ? might be 1.0826x slower
   Int16Array-alloc-long-lived                       65.2782+-3.0349     ?     65.4358+-3.1503        ?
   Int16Array-bubble-sort-with-byteLength            24.9865+-0.3973     ?     25.2877+-0.9761        ? might be 1.0121x slower
   Int16Array-bubble-sort                            24.4202+-0.3140           24.2767+-0.2445        
   Int16Array-load-int-mul                            1.9372+-0.0442     ?      1.9844+-0.0770        ? might be 1.0244x slower
   Int16Array-to-Int32Array-set                      65.2681+-0.3611           64.1526+-0.8236          might be 1.0174x faster
   Int32Array-alloc-large                            17.3995+-0.8504     ?     17.8610+-1.9985        ? might be 1.0265x slower
   Int32Array-alloc-long-lived                       70.3215+-2.7090     ?     71.9063+-2.6969        ? might be 1.0225x slower
   Int32Array-alloc                                   3.8875+-0.2323     ?      4.1591+-0.5985        ? might be 1.0699x slower
   Int32Array-Int8Array-view-alloc                    8.8730+-0.1578     ?      9.0479+-0.4057        ? might be 1.0197x slower
   int52-spill                                        8.3245+-0.4263     ?      8.3797+-0.4003        ?
   Int8Array-alloc-long-lived                        58.7860+-2.8916           58.5892+-1.9016        
   Int8Array-load-with-byteLength                     4.7588+-0.0433     ?      4.8701+-0.3496        ? might be 1.0234x slower
   Int8Array-load                                     4.7578+-0.0654            4.7362+-0.0499        
   integer-divide                                    15.0181+-0.1512     ?     15.0365+-0.2532        ?
   integer-modulo                                     2.2538+-0.0578     ?      2.2858+-0.1379        ? might be 1.0142x slower
   large-int-captured                                 5.6747+-0.2848     ?      5.6750+-0.3869        ?
   large-int-neg                                     20.9629+-0.3815           20.9384+-0.3044        
   large-int                                         19.9993+-0.1551     ?     20.0737+-0.4116        ?
   logical-not                                        5.9327+-0.2914            5.7823+-0.1301          might be 1.0260x faster
   lots-of-fields                                    14.1362+-0.2800     ?     14.3491+-0.4816        ? might be 1.0151x slower
   make-indexed-storage                               3.8891+-0.2631     ?      3.9018+-0.2663        ?
   make-rope-cse                                      5.3976+-0.1687     ?      5.4202+-0.6482        ?
   marsaglia-larger-ints                             47.4499+-0.4900     ?     47.9634+-1.0151        ? might be 1.0108x slower
   marsaglia-osr-entry                               30.2344+-0.4539           30.1836+-0.4126        
   max-boolean                                        3.7865+-0.0888     ?      3.7929+-0.0311        ?
   method-on-number                                  25.1819+-4.5212           24.7209+-0.3691          might be 1.0186x faster
   min-boolean                                        3.9197+-0.3345            3.8307+-0.1021          might be 1.0232x faster
   minus-boolean-double                               4.3709+-0.0841     ?      4.4761+-0.2577        ? might be 1.0241x slower
   minus-boolean                                      3.2108+-0.0632     ?      3.2153+-0.0279        ?
   misc-strict-eq                                    42.5302+-0.3665     ?     42.9855+-0.6410        ? might be 1.0107x slower
   mod-boolean-double                                16.1608+-0.2946     ?     16.2891+-0.6693        ?
   mod-boolean                                       12.0037+-0.1698     ?     12.0837+-0.2006        ?
   mul-boolean-double                                 5.1882+-0.2082            5.1455+-0.1142        
   mul-boolean                                        3.9460+-0.0905            3.9320+-0.1143        
   neg-boolean                                        4.3519+-0.0760     ?      4.3783+-0.0723        ?
   negative-zero-divide                               0.4233+-0.0132            0.4191+-0.0106        
   negative-zero-modulo                               0.4188+-0.0171            0.4187+-0.0166        
   negative-zero-negate                               0.4059+-0.0305     ?      0.4120+-0.0297        ? might be 1.0150x slower
   nested-function-parsing                           47.4243+-0.5401           47.1072+-0.7733        
   new-array-buffer-dead                            118.9205+-2.0967     ?    121.5295+-3.1396        ? might be 1.0219x slower
   new-array-buffer-push                              8.0500+-0.1741     ?      8.5988+-0.7101        ? might be 1.0682x slower
   new-array-dead                                    19.6549+-0.2309           18.6282+-1.0570          might be 1.0551x faster
   new-array-push                                     4.8752+-0.3796            4.8608+-0.1845        
   no-inline-constructor                            135.1361+-1.8632     ?    135.2364+-2.4331        ?
   number-test                                        4.0086+-0.1502            3.9585+-0.1064          might be 1.0127x faster
   object-closure-call                                6.9781+-0.2230            6.9049+-0.2114          might be 1.0106x faster
   object-test                                        4.0233+-0.1010     ?      4.0480+-0.0818        ?
   obvious-sink-pathology-taken                     140.7052+-2.9268          138.5920+-0.9901          might be 1.0152x faster
   obvious-sink-pathology                           136.2088+-6.8387          132.9820+-1.7763          might be 1.0243x faster
   obviously-elidable-new-object                     41.5916+-2.2868           40.0575+-1.1313          might be 1.0383x faster
   plus-boolean-arith                                 3.3011+-0.0892            3.2981+-0.0767        
   plus-boolean-double                                4.4174+-0.2169            4.3665+-0.0568          might be 1.0117x faster
   plus-boolean                                       3.6480+-0.2164            3.6182+-0.0989        
   poly-chain-access-different-prototypes-simple   
                                                      3.8614+-0.2454     ?      3.8916+-0.4153        ?
   poly-chain-access-different-prototypes             3.5074+-0.0690     ?      3.5892+-0.1294        ? might be 1.0233x slower
   poly-chain-access-simpler                          3.7676+-0.0443            3.7655+-0.0370        
   poly-chain-access                                  3.5995+-0.2587            3.4692+-0.0575          might be 1.0376x faster
   poly-stricteq                                     75.4893+-0.3383     ?     76.0457+-0.4813        ?
   polymorphic-array-call                             1.5205+-0.0670     ?      1.6516+-0.2202        ? might be 1.0862x slower
   polymorphic-get-by-id                              3.9685+-0.0247     ?      3.9806+-0.0408        ?
   polymorphic-put-by-id                             35.1902+-0.4481     ?     35.5481+-0.9757        ? might be 1.0102x slower
   polymorphic-structure                             18.9527+-0.1370     ?     19.1239+-0.3573        ?
   polyvariant-monomorphic-get-by-id                  9.8743+-1.2148     ?     10.6134+-1.4454        ? might be 1.0749x slower
   proto-getter-access                               12.9716+-0.2757           12.8059+-0.2741          might be 1.0129x faster
   put-by-id-replace-and-transition                  10.4371+-0.4745     ?     11.1864+-0.8636        ? might be 1.0718x slower
   put-by-id-slightly-polymorphic                     3.5330+-0.0880     ?      3.5917+-0.0515        ? might be 1.0166x slower
   put-by-id                                         13.7085+-0.5875           13.4425+-0.7098          might be 1.0198x faster
   put-by-val-direct                                  0.5562+-0.0309            0.5458+-0.0173          might be 1.0191x faster
   put-by-val-large-index-blank-indexing-type   
                                                      7.4006+-0.4019     ?      7.4917+-0.3353        ? might be 1.0123x slower
   put-by-val-machine-int                             3.5645+-0.1694            3.4688+-0.1157          might be 1.0276x faster
   rare-osr-exit-on-local                            21.6645+-1.5251           21.0756+-0.4299          might be 1.0279x faster
   register-pressure-from-osr                        24.8343+-0.4871           24.3025+-0.2041          might be 1.0219x faster
   setter                                             7.8890+-0.4947     ?      8.0522+-0.5356        ? might be 1.0207x slower
   simple-activation-demo                            35.1101+-0.4004     ?     35.1249+-0.3191        ?
   simple-getter-access                              17.0806+-0.3081           16.8875+-0.3432          might be 1.0114x faster
   simple-poly-call-nested                           12.8877+-0.7417           12.8057+-0.5395        
   simple-poly-call                                   1.6882+-0.0662            1.6554+-0.0317          might be 1.0198x faster
   sin-boolean                                       24.9261+-0.8228     ?     26.0091+-0.9221        ? might be 1.0434x slower
   singleton-scope                                   94.1577+-0.7094           93.8234+-0.2531        
   sink-function                                     21.8820+-1.1524     ^     14.0673+-1.0145        ^ definitely 1.5555x faster
   sinkable-new-object-dag                           82.6204+-2.5215           82.4327+-3.0211        
   sinkable-new-object-taken                         64.6302+-1.9491           64.0863+-1.1714        
   sinkable-new-object                               44.5973+-2.6627           43.2218+-0.4689          might be 1.0318x faster
   slow-array-profile-convergence                     3.5258+-0.1742     ?      3.7479+-0.3006        ? might be 1.0630x slower
   slow-convergence                                   3.3783+-0.0364     ?      3.5123+-0.3466        ? might be 1.0397x slower
   sorting-benchmark                                 30.2190+-0.3333     ?     30.6529+-0.6779        ? might be 1.0144x slower
   sparse-conditional                                 1.4833+-0.0301     ?      1.5570+-0.1026        ? might be 1.0497x slower
   splice-to-remove                                  19.4879+-0.2275     !     20.0320+-0.2181        ! definitely 1.0279x slower
   string-char-code-at                               19.6391+-0.2637     ?     19.7431+-0.3479        ?
   string-concat-object                               2.9910+-0.0983     ?      3.3200+-0.3588        ? might be 1.1100x slower
   string-concat-pair-object                          3.0854+-0.0990            2.9858+-0.1704          might be 1.0333x faster
   string-concat-pair-simple                         13.4008+-0.7647           12.7008+-0.2112          might be 1.0551x faster
   string-concat-simple                              13.8055+-1.6417           13.5256+-0.8905          might be 1.0207x faster
   string-cons-repeat                                 9.7275+-0.9873            9.3255+-0.7243          might be 1.0431x faster
   string-cons-tower                                  9.5732+-0.2590     ?      9.9065+-0.6705        ? might be 1.0348x slower
   string-equality                                   21.6092+-0.8069           21.3510+-0.2020          might be 1.0121x faster
   string-get-by-val-big-char                         9.4860+-0.3417            9.2716+-0.2783          might be 1.0231x faster
   string-get-by-val-out-of-bounds-insane             4.4837+-0.1269     ?      4.5728+-0.2321        ? might be 1.0199x slower
   string-get-by-val-out-of-bounds                    5.6753+-0.0641     ?      5.7453+-0.1000        ? might be 1.0123x slower
   string-get-by-val                                  4.0157+-0.2491     ?      4.0295+-0.2058        ?
   string-hash                                        2.5627+-0.1271            2.5491+-0.0881        
   string-long-ident-equality                        17.8746+-0.5089     ?     17.9563+-0.7332        ?
   string-out-of-bounds                              14.9657+-0.4943           14.7142+-0.2041          might be 1.0171x faster
   string-repeat-arith                               38.3680+-0.1246           38.2082+-0.2546        
   string-sub                                        75.2728+-0.7563     !     77.1105+-0.6414        ! definitely 1.0244x slower
   string-test                                        3.7490+-0.0599     ?      3.8890+-0.1406        ? might be 1.0373x slower
   string-var-equality                               36.0415+-0.0966     !     39.4209+-0.1472        ! definitely 1.0938x slower
   structure-hoist-over-transitions                   3.2940+-0.2480     ?      3.3136+-0.1305        ?
   substring-concat-weird                            51.7722+-0.4674           51.7008+-1.0010        
   substring-concat                                  54.7672+-2.0032     ?     54.7927+-1.3746        ?
   substring                                         61.8758+-0.9330     ?     62.5852+-0.8863        ? might be 1.0115x slower
   switch-char-constant                               3.6641+-0.0936            3.6227+-0.0461          might be 1.0114x faster
   switch-char                                        8.5632+-0.7290     ?      9.8455+-1.3281        ? might be 1.1498x slower
   switch-constant                                   11.7530+-0.4672           11.0983+-0.9927          might be 1.0590x faster
   switch-string-basic-big-var                       18.2638+-0.0907           18.1834+-0.0913        
   switch-string-basic-big                           18.3196+-0.1923     ?     18.3871+-0.3124        ?
   switch-string-basic-var                           17.7168+-0.2098     ?     17.9502+-0.6766        ? might be 1.0132x slower
   switch-string-basic                               17.6410+-0.3404     ?     17.8693+-0.5072        ? might be 1.0129x slower
   switch-string-big-length-tower-var                26.6746+-0.3808           26.4782+-0.2735        
   switch-string-length-tower-var                    18.5502+-0.1209           18.5240+-0.1498        
   switch-string-length-tower                        16.8087+-0.1485           16.7603+-0.0951        
   switch-string-short                               16.8464+-0.2768     ?     16.8986+-0.3607        ?
   switch                                            17.1270+-1.0656     ?     17.2012+-1.2018        ?
   tear-off-arguments-simple                          4.2629+-0.2063     ?      4.2970+-0.1643        ?
   tear-off-arguments                                 5.9936+-0.4899            5.9231+-0.4797          might be 1.0119x faster
   temporal-structure                                17.4377+-0.2923     ?     17.4447+-0.2354        ?
   to-int32-boolean                                  18.5954+-0.3948           18.4288+-0.1161        
   try-catch-get-by-val-cloned-arguments             18.5626+-0.3223     ?     18.7638+-0.6902        ? might be 1.0108x slower
   try-catch-get-by-val-direct-arguments              8.2036+-0.1786     ?      8.5107+-0.3148        ? might be 1.0374x slower
   try-catch-get-by-val-scoped-arguments             10.1815+-0.3660           10.0420+-0.3860          might be 1.0139x faster
   undefined-property-access                        322.1055+-0.4974     ?    322.6034+-1.1442        ?
   undefined-test                                     4.0368+-0.1711     ?      4.1702+-0.2753        ? might be 1.0331x slower
   unprofiled-licm                                   20.1143+-0.1412     ?     20.2863+-0.5892        ?
   varargs-call                                      19.4628+-0.1933           19.1355+-0.3765          might be 1.0171x faster
   varargs-construct-inline                          25.4820+-0.5293     ?     26.0420+-1.5046        ? might be 1.0220x slower
   varargs-construct                                 41.5338+-0.6977           41.4970+-0.9044        
   varargs-inline                                    12.3410+-0.2812           12.2428+-0.1333        
   varargs-strict-mode                               13.5096+-0.1970           13.4462+-0.1057        
   varargs                                           13.3926+-0.0833     ?     13.5978+-0.4147        ? might be 1.0153x slower
   weird-inlining-const-prop                          2.9438+-0.2240            2.8226+-0.2837          might be 1.0429x faster

   &lt;geometric&gt;                                       10.9240+-0.0367     ?     10.9664+-0.0386        ? might be 1.0039x slower

                                                          Trunk                SinkNewFunction                                  
AsmBench:
   bigfib.cpp                                       658.6932+-6.9943          657.2699+-1.9962        
   cray.c                                           580.5135+-3.0012          579.9958+-1.5288        
   dry.c                                            616.5087+-26.6806    ?    653.7879+-15.1693       ? might be 1.0605x slower
   FloatMM.c                                       1031.5182+-0.5962         1031.0532+-1.0475        
   gcc-loops.cpp                                   5234.4017+-40.0608        5213.4405+-9.3436        
   n-body.c                                        1229.7462+-0.9184         1229.2448+-0.9159        
   Quicksort.c                                      606.5915+-6.6561     ?    611.4886+-2.1544        ?
   stepanov_container.cpp                          5449.0375+-75.9359        5447.8392+-49.8665       
   Towers.c                                         350.3289+-0.9622          350.1884+-0.3470        

   &lt;geometric&gt;                                     1068.2206+-6.2764     ?   1075.2191+-3.3968        ? might be 1.0066x slower

                                                          Trunk                SinkNewFunction                                  
CompressionBench:
   huffman                                          442.9074+-2.8072     !    448.1654+-1.8558        ! definitely 1.0119x slower
   arithmetic-simple                                510.3425+-3.5839     ?    510.5959+-6.6406        ?
   arithmetic-precise                               402.8929+-14.6677         394.9258+-1.9138          might be 1.0202x faster
   arithmetic-complex-precise                       393.4967+-1.2208     ?    394.4382+-3.8564        ?
   arithmetic-precise-order-0                       526.7729+-4.8011          523.4777+-6.8427        
   arithmetic-precise-order-1                       441.6063+-2.0145     ?    441.6759+-2.5982        ?
   arithmetic-precise-order-2                       495.6534+-1.9804     ?    496.9294+-3.7131        ?
   arithmetic-simple-order-1                        491.5868+-2.9979     ?    492.2852+-3.1231        ?
   arithmetic-simple-order-2                        569.8405+-3.9782     ?    570.9934+-6.4206        ?
   lz-string                                        460.9897+-13.7496    ?    466.7519+-13.2443       ? might be 1.0125x slower

   &lt;geometric&gt;                                      470.6325+-2.2728     ?    470.9774+-1.1982        ? might be 1.0007x slower

                                                          Trunk                SinkNewFunction                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                                   82.3947+-0.3655     ?     82.6624+-0.3859        ? might be 1.0032x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088130</commentid>
    <comment_count>2</comment_count>
      <attachid>251524</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-23 18:33:15 -0700</bug_when>
    <thetext>Created attachment 251524
patch

This should be correct, and I can&apos;t think of other relevant tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088132</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 18:35:50 -0700</bug_when>
    <thetext>Attachment 251524 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088135</commentid>
    <comment_count>4</comment_count>
      <attachid>251524</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:37:29 -0700</bug_when>
    <thetext>Comment on attachment 251524
patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088137</commentid>
    <comment_count>5</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-23 18:39:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 251524 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787: 
&gt; Place brace on its own line for function definitions.  [whitespace/braces]
&gt; [4]
&gt; Total errors found: 1 in 23 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

I followed the style of other lambdas on that one ; should I fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088138</commentid>
    <comment_count>6</comment_count>
      <attachid>251524</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:48:40 -0700</bug_when>
    <thetext>Comment on attachment 251524
patch

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

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:566
&gt; +                        Node* executable = m_insertionSet.insertConstant(
&gt; +                            nodeIndex + 1, node-&gt;origin, node-&gt;cellOperand());

You could add the cellOperand as a strong constant. This means doing:

m_insertionSet.insertConstant(nodeIndex + 1, node-&gt;origin, m_graph.freezeStrong(node-&gt;cellOperand()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088139</commentid>
    <comment_count>7</comment_count>
      <attachid>251524</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:49:04 -0700</bug_when>
    <thetext>Comment on attachment 251524
patch

Clearing cq because there is one small refinement that could be made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088140</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:52:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Attachment 251524 [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; 
&gt; &gt; ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787: 
&gt; &gt; Place brace on its own line for function definitions.  [whitespace/braces]
&gt; &gt; [4]
&gt; &gt; Total errors found: 1 in 23 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against
&gt; &gt; check-webkit-style.
&gt; 
&gt; I followed the style of other lambdas on that one ; should I fix it?

It&apos;s a bug in stylebot. It doesn&apos;t parse lambdas correctly, yet.  We ignore these errors for lambdas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088141</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:56:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 251524 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251524&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:566
&gt; &gt; +                        Node* executable = m_insertionSet.insertConstant(
&gt; &gt; +                            nodeIndex + 1, node-&gt;origin, node-&gt;cellOperand());
&gt; 
&gt; You could add the cellOperand as a strong constant. This means doing:
&gt; 
&gt; m_insertionSet.insertConstant(nodeIndex + 1, node-&gt;origin,
&gt; m_graph.freezeStrong(node-&gt;cellOperand()));

Actually, cellOperand() is a FrozenValue* and it&apos;s already strong. So the current code is correct and what I&apos;m suggesting is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088142</commentid>
    <comment_count>10</comment_count>
      <attachid>251524</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:56:43 -0700</bug_when>
    <thetext>Comment on attachment 251524
patch

It&apos;s good to land!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088150</commentid>
    <comment_count>11</comment_count>
      <attachid>251524</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 19:24:46 -0700</bug_when>
    <thetext>Comment on attachment 251524
patch

Clearing flags on attachment: 251524

Committed r183235: &lt;http://trac.webkit.org/changeset/183235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088151</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-23 19:24:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251267</attachid>
            <date>2015-04-21 15:07:38 -0700</date>
            <delta_ts>2015-04-23 16:15:17 -0700</delta_ts>
            <desc>First patch</desc>
            <filename>sink_function2.patch</filename>
            <type>text/plain</type>
            <size>15124</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAppbmRleCBjMzQ3ZGI2Li5kZTE4MzQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xMzU2LDYgKzEzNTYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2Ug
UGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAg
ICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYTcyNmJkNy4uYWZk
YTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTg2
Miw2ICs4NjIsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBj
b25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3U3RyaW5n
T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICByZWFkKEhl
YXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBhNmFk
YWY3Li4zMjYyNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0xOTgsNiArMTk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQ
aGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6
CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA1NTZiZmExLi4zYTJmZWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwMzYsNiArMTAzNiw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVl
biBjbGVhbmVkIHVwLgogICAgICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3T2JqZWN0OgorICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAg
ICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21D
bG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGNjNDk2NGYuLjRhMzI2OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01NzksNyArNTc5LDE3IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgbV9vcEluZm8yID0gMDsKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7
CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3RnVuY3Rpb24pOworICAgICAgICBtX29w
ID0gUGhhbnRvbU5ld0Z1bmN0aW9uOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJh
dGU7CisgICAgICAgIG1fb3BJbmZvID0gMDsKKyAgICAgICAgbV9vcEluZm8yID0gMDsKKyAgICAg
ICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0
UGhhbnRvbVRvUGhhbnRvbUxvY2FsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IFBo
YW50b20gJiYgKGNoaWxkMSgpLT5vcCgpID09IFBoaSB8fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRM
b2NhbCB8fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRBcmd1bWVudCkpOwpAQCAtMTM1Niw2ICsxMzY2
LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xv
bmVkQXJndW1lbnRzOgorICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGY5ODk5MTQu
LjllZGRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI0
Miw2ICsyNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
UHV0SGludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlSW1t
ZWRpYXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0ZXJpYWxpemVOZXdPYmpl
Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUGhhbnRvbU5l
d0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAg
IC8qIE5vZGVzIGZvciBtaXNjIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEJyZWFrcG9pbnQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IGYyZDE5
ZmEuLjc1OTVjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNTA5LDEzICs1MDks
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5v
ZGVJbmRleCk7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAg
ICAgICAgICAgY2FzZSBQdXRCeU9mZnNldDogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9z
aW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQorICAgICAgICAg
ICAgICAgICAgICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSAmJiBt
X3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9QdXRCeU9mZnNldEhpbnQoKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9z
aW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlvbigpICYm
IG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogc3RydWN0dXJlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT5vcmlnaW4sIEpTVmFs
dWUobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QdXRTdHJ1Y3R1cmVIaW50KHN0cnVjdHVyZSk7CkBAIC01NTYsMTAgKzU1
OCwyOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisKKyAg
ICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBleGVjdXRhYmxlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLCBu
b2RlLT5jZWxsT3BlcmFuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEZ1bmN0aW9u
RXhlY3V0YWJsZVBMb2MsIG5vZGUpLmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPm9yaWdpbiwgZXhlY3V0YWJsZSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv
bW90ZWRIZWFwTG9jYXRpb24oRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgbm9kZSkuY3JlYXRlSGlu
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJy
aWVyV2l0aE51bGxDaGVjazogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlk
YXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQorICAgICAgICAgICAgICAgICAg
ICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSAmJiBtX3NpbmtDYW5k
aWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTc1Nyw3ICs3NzcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlKGVkZ2Uubm9kZSgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgCisKKyAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICAg
ICAgICAgIHNpbmtDYW5kaWRhdGUoKTsKKyAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVu
KAorICAgICAgICAgICAgICAgIG5vZGUsCisgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlKGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6CiAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9m
ZnNldDoKQEAgLTgxMyw3ICs4NDIsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBPcElu
Zm8oZGF0YSksIE9wSW5mbygpLCAwLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICAgICAg
cmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRp
Y3Rpb24oKSwgTmV3RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgTm9kZU9yaWdpbigKKyAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICB3aGVyZS0+b3JpZ2luLmZvckV4aXQpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhlc2Nh
cGVlLT5jZWxsT3BlcmFuZCgpKSwKKyAgICAgICAgICAgICAgICBlc2NhcGVlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZH
X0NSQVNIKG1fZ3JhcGgsIGVzY2FwZWUsICJCYWQgZXNjYXBlZSBvcCIpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC04NzIsNyArOTExLDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZmly
c3RDaGlsZCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNh
c2UgTmV3RnVuY3Rpb246IHsKKyAgICAgICAgICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlv
bj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNGb3JBbGxvY2F0aW9uLmdldChlc2NhcGVlKTsKKwor
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5zaXplKCkgPT0gMik7CisKKyAgICAgICAgICAg
IFByb21vdGVkSGVhcExvY2F0aW9uIGV4ZWN1dGFibGUoRnVuY3Rpb25FeGVjdXRhYmxlUExvYywg
ZXNjYXBlZSk7CisgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zLmNvbnRhaW5zKGV4ZWN1dGFi
bGUpKTsKKworICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gYWN0aXZhdGlvbihGdW5j
dGlvbkFjdGl2YXRpb25QTG9jLCBlc2NhcGVlKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlv
bnMuY29udGFpbnMoYWN0aXZhdGlvbikpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbG9jYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNo
IChsb2NhdGlvbnNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBGdW5jdGlvbkV4
ZWN1dGFibGVQTG9jOiB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnNbaV0g
PT0gZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgRnVuY3Rpb25BY3RpdmF0aW9uUExvYzogewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zW2ldID09IGFjdGl2YXRpb24pOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bm9kZSwgIkJhZCBsb2NhdGlvbiBraW5kIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBtYXRlcmlhbGl6ZSBv
cCIpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDgxNWM3
MDAuLjc5N2QzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NDIsNiArNTQyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBCb29sZWFuVG9O
dW1iZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggOGM4M2M0Mi4uNzcxNTY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAK
QEAgLTgyLDYgKzgyLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQ
cm9tb3RlZExvY2F0aW9uS2luZCBraW5kKQogICAgIGNhc2UgQXJndW1lbnRzQ2FsbGVlUExvYzoK
ICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudHNDYWxsZWVQTG9jIik7CiAgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlUExvYzoKKyAgICAgICAgb3V0LnByaW50
KCJGdW5jdGlvbkV4ZWN1dGFibGVQTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2Ug
RnVuY3Rpb25BY3RpdmF0aW9uUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJGdW5jdGlvbkFjdGl2
YXRpb25QTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAppbmRleCBjNjc0ZjBlLi41MWY3YjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5o
CkBAIC00MCw3ICs0MCwxMCBAQCBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAgICBOYW1l
ZFByb3BlcnR5UExvYywKICAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRDb3VudFBMb2Ms
Ci0gICAgQXJndW1lbnRzQ2FsbGVlUExvYworICAgIEFyZ3VtZW50c0NhbGxlZVBMb2MsCisKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCiB9
OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGU1MzBhNTIuLmMzYzBkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNzMs
NiArMjczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RW51bWVyYXRvckdlbmVyaWNQ
bmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBj
YXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCAyY2IwODU3Li41OTI5N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ2NTQsNiAr
NDY1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFB1dEhp
bnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKaW5kZXggNDQ5ODBiMS4uZWIwNWQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NzM5LDYgKzQ3
MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21O
ZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBHZXRNeUFy
Z3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJ
bW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4
IGE3MGM4YmUuLjA1MDAyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCkBAIC00MzgsNiArNDM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IFVwc2lsb246CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCA0MGJmNmQ4Li4xMzRkZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb0lu
ZGV4U3RyaW5nOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2Jq
ZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCmluZGV4IGVhMjllYjQuLmMzYzMyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC04NTAsNiArODUwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246
CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFu
dG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCAwZDliZTNlLi4zODNmOTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTkyLDcg
KzkyLDI4IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVy
aWFsaXplT2JqZWN0SW5PU1IoCiAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
ICAgICAgICAKKworICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOiB7CisgICAgICAgIC8vIEZp
cnN0IGZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgc2NvcGUgYXJlCisgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAgICAgIEpTU2Nv
cGUqIGFjdGl2YXRpb24gPSBudWxscHRyOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRl
cmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNv
bnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVy
dGllcygpW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgIT0gUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IoTmV3RnVuY3Rpb25QTG9jKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKKyAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlY3V0YWJsZSAmJiBhY3RpdmF0aW9u
KTsKKworICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czogewogICAgICAgICBpZiAoIW1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCku
aW5saW5lQ2FsbEZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251511</attachid>
            <date>2015-04-23 16:15:17 -0700</date>
            <delta_ts>2015-04-23 18:33:15 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>sink_new_function.patch</filename>
            <type>text/plain</type>
            <size>18544</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstZnVu
Y3Rpb24uanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW5rLWZ1bmN0
aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOGVkNzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zaW5rLWZ1
bmN0aW9uLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2Z1bmN0aW9uIGZvbyhwKSB7CisgICAgdmFyIGYx
ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYyID0gZnVuY3Rpb24gKHgp
IHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYzID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07
CisgICAgdmFyIGY0ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGY1ID0g
ZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGY2ID0gZnVuY3Rpb24gKHgpIHsg
cmV0dXJuIHg7IH07CisgICAgdmFyIGY3ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07Cisg
ICAgdmFyIGY4ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGY5ID0gZnVu
Y3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYxMCA9IGZ1bmN0aW9uICh4KSB7IHJl
dHVybiB4OyB9OworICAgIHZhciBmMTEgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAg
ICB2YXIgZjEyID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYxMyA9IGZ1
bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMTQgPSBmdW5jdGlvbiAoeCkgeyBy
ZXR1cm4geDsgfTsKKyAgICB2YXIgZjE1ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07Cisg
ICAgdmFyIGYxNiA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMTcgPSBm
dW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAgICB2YXIgZjE4ID0gZnVuY3Rpb24gKHgpIHsg
cmV0dXJuIHg7IH07CisgICAgdmFyIGYxOSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9Owor
ICAgIGlmIChwKQorICAgICAgICByZXR1cm4gZjEoZjIoZjMoZjQoZjUoZjYoZjcoZjgoZjkoZjEw
KGYxMShmMTIoZjEzKGYxNChmMTUoZjE2KGYxNyhmMTgoZjE5KHApKSkpKSkpKSkpKSkpKSkpKSkp
OworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSBmb28oZmFsc2UpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9
IGZvbyh0cnVlKTsKK2lmIChyZXN1bHQgIT09IHRydWUpCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNzFmODFkMi4uNTk2
ZmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTM1Myw2ICsxMzUzLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50
b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAg
IGNhc2UgQm90dG9tVmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IDg5MGM5ZGMuLjQ1YjhkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC04NTcsNiArODU3LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKICAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICB3cml0ZShIZWFw
T2JqZWN0Q291bnQpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKaW5kZXggMzY0NjA3NS4uOTdhYjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTk3LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJv
dHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21O
ZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNjk5OGJlOS4u
NWU1Mzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xMDM1LDYgKzEwMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElkZW50aXR5OiAv
LyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCB1cC4KICAgICAgICAgY2FzZSBCb29sZWFu
VG9OdW1iZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoK
ICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIEZvcndh
cmRWYXJhcmdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBiZWM1ODEzLi5l
ODM1NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTgxLDcgKzU4MSwx
NyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IDA7CiAgICAgICAgIGNoaWxk
cmVuID0gQWRqYWNlbmN5TGlzdCgpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29udmVydFRv
UGhhbnRvbU5ld0Z1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld0Z1
bmN0aW9uKTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21OZXdGdW5jdGlvbjsKKyAgICAgICAgbV9m
bGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IDA7CisgICAgICAg
IG1fb3BJbmZvMiA9IDA7CisgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOworICAg
IH0KKwogICAgIHZvaWQgY29udmVydFBoYW50b21Ub1BoYW50b21Mb2NhbCgpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9vcCA9PSBQaGFudG9tICYmIChjaGlsZDEoKS0+b3AoKSA9PSBQaGkgfHwg
Y2hpbGQxKCktPm9wKCkgPT0gU2V0TG9jYWwgfHwgY2hpbGQxKCktPm9wKCkgPT0gU2V0QXJndW1l
bnQpKTsKQEAgLTE0MjcsNiArMTQzNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3T2JqZWN0OgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKKyAgICAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAppbmRleCBiMmZkNzQzLi5iNDJkY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCkBAIC0yNDYsNiArMjQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKFB1dEhpbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhDaGVja1N0cnVjdHVyZUltbWVkaWF0ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKE1hdGVyaWFsaXplTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykg
XAorICAgIG1hY3JvKFBoYW50b21OZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbWlzYyBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhCcmVha3BvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAppbmRleCA0NjM2ZjdkLi5jOThhODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKQEAgLTUxMCwxMyArNTEwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hp
bGQyKCkubm9kZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5pc1BoYW50b21P
YmplY3RBbGxvY2F0aW9uKCkgJiYgbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0QnlPZmZzZXRIaW50KCk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hpbGQx
KCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiB0YXJnZXQgPSBub2RlLT5j
aGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPmlzUGhhbnRv
bU9iamVjdEFsbG9jYXRpb24oKSAmJiBtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHN0cnVjdHVyZSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCwgbm9kZS0+b3JpZ2luLCBKU1ZhbHVlKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUHV0U3RydWN0dXJlSGludChzdHJ1
Y3R1cmUpOwpAQCAtNTU3LDEwICs1NTksMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogewor
ICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXhlY3V0YWJsZSA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydENvbnN0YW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRl
eCArIDEsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2VsbE9wZXJhbmQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3Rl
ZEhlYXBMb2NhdGlvbihGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLCBub2RlKS5jcmVhdGVIaW50KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sIGV4
ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEZ1bmN0aW9uQWN0aXZhdGlv
blBMb2MsIG5vZGUpLmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICAgICAg
ICAgICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6IHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KSkKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9k
ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5pc1BoYW50b21PYmplY3RBbGxv
Y2F0aW9uKCkgJiYgbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC03NTksNyArNzc5LDE2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdlLm5vZGUoKSk7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCisgICAgICAgIGNh
c2UgTmV3RnVuY3Rpb246CisgICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CisgICAgICAgICAg
ICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKKyAgICAgICAgICAgICAgICBub2RlLAorICAgICAgICAg
ICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CisgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdl
Lm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAg
ICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CkBAIC04MTUsNyArODQ0LDE3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgT3BJbmZvKGRhdGEpLCBPcEluZm8oKSwgMCwgMCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKKyAgICAgICAg
ICAgICAgICBlc2NhcGVlLT5wcmVkaWN0aW9uKCksIE5ld0Z1bmN0aW9uLAorICAgICAgICAgICAg
ICAgIE5vZGVPcmlnaW4oCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZWUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUtPm9yaWdpbi5mb3JFeGl0KSwKKyAgICAg
ICAgICAgICAgICBPcEluZm8oZXNjYXBlZS0+Y2VsbE9wZXJhbmQoKSksCisgICAgICAgICAgICAg
ICAgZXNjYXBlZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBlc2NhcGVlLCAiQmFkIGVzY2Fw
ZWUgb3AiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODc0LDcgKzkxMyw0MCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5z
aXplKCkgLSBmaXJzdENoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgICAgICAKKworICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgICAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBM
b2NhdGlvbj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNGb3JBbGxvY2F0aW9uLmdldChlc2NhcGVl
KTsKKworICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnMuc2l6ZSgpID09IDIpOworCisg
ICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gZXhlY3V0YWJsZShGdW5jdGlvbkV4
ZWN1dGFibGVQTG9jLCBlc2NhcGVlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25z
LmNvbnRhaW5zKGV4ZWN1dGFibGUpKTsKKworICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExv
Y2F0aW9uIGFjdGl2YXRpb24oRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgZXNjYXBlZSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhhY3RpdmF0aW9uKSk7CisKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYXRpb25zLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobG9jYXRpb25zW2ldLmtpbmQoKSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2M6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnNbaV0gPT0gZXhlY3V0YWJsZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRnVuY3Rpb25BY3RpdmF0aW9uUExvYzogeworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uc1tpXSA9PSBhY3RpdmF0aW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIGxvY2F0aW9uIGtpbmQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZH
X0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgbWF0ZXJpYWxpemUgb3AiKTsKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZWIwYTc4Li5mNjNmMGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTQyLDYgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgSWRlbnRpdHk6CiAgICAgICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAgICAgICBj
YXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgog
ICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24u
Y3BwCmluZGV4IDhjODNjNDIuLjc3MTU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkBAIC04Miw2ICs4MiwxNCBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHJvbW90ZWRMb2NhdGlvbktp
bmQga2luZCkKICAgICBjYXNlIEFyZ3VtZW50c0NhbGxlZVBMb2M6CiAgICAgICAgIG91dC5wcmlu
dCgiQXJndW1lbnRzQ2FsbGVlUExvYyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEZ1
bmN0aW9uRXhlY3V0YWJsZVBMb2M6CisgICAgICAgIG91dC5wcmludCgiRnVuY3Rpb25FeGVjdXRh
YmxlUExvYyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEZ1bmN0aW9uQWN0aXZhdGlv
blBMb2M6CisgICAgICAgIG91dC5wcmludCgiRnVuY3Rpb25BY3RpdmF0aW9uUExvYyIpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmgKaW5kZXggYzY3NGYwZS4uNTFmN2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaApAQCAtNDAsNyArNDAsMTAg
QEAgZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAgICAgTmFtZWRQcm9wZXJ0eVBMb2MsCiAg
ICAgQXJndW1lbnRQTG9jLAogICAgIEFyZ3VtZW50Q291bnRQTG9jLAotICAgIEFyZ3VtZW50c0Nh
bGxlZVBMb2MKKyAgICBBcmd1bWVudHNDYWxsZWVQTG9jLAorCisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlUExvYywKKyAgICBGdW5jdGlvbkFjdGl2YXRpb25QTG9jLAogfTsKIAogY2xhc3MgUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCBkYWE0ZWY4Li5kMjlmMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjcyLDYgKzI3Miw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldEVudW1lcmF0b3JHZW5lcmljUG5hbWU6CiAgICAgY2FzZSBU
b0luZGV4U3RyaW5nOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50
b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXgg
MzdmNDQ2Mi4uOWZlY2UyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00NjU2LDYgKzQ2NTYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0JhZENlbGw6
CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CisgICAg
Y2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IDY5OGRjNTguLjhlNThkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDc0MSw2ICs0NzQxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgog
ICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAg
IGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBjYTFlOThmLi41M2U3Mjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNDUyLDYg
KzQ1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggMGRhY2E3Ni4uNzkzOTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMTgwLDYgKzE4MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBj
YXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBo
YW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVj
dHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCA2OWQ2OTYy
Li5hMzVhYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcApAQCAtODQ5LDYgKzg0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTW92
SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICBjYXNlIFBoYW50b21OZXdP
YmplY3Q6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBo
YW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50
czoKICAgICAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAKaW5kZXggMGQ5YmUzZS4uYWY1N2YyNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC05Miw3ICs5MiwyNSBAQCBleHRlcm4g
IkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NS
KAogICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAgICAgCisKKyAgICBj
YXNlIFBoYW50b21OZXdGdW5jdGlvbjogeworICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdGhl
IGV4ZWN1dGFibGUgYW5kIGFjdGl2YXRpb24gYXJlCisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAgICAgIEpTU2NvcGUqIGFjdGl2YXRpb24gPSBu
dWxscHRyOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoRnVuY3Rpb25FeGVjdXRhYmxlUExvYykpCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9u
RGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkKKyAgICAgICAgICAgICAgICBhY3Rp
dmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlY3V0YWJsZSAmJiBhY3RpdmF0aW9u
KTsKKworICAgICAgICBKU0Z1bmN0aW9uKiByZXN1bHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czogewogICAgICAgICBpZiAoIW1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCku
aW5saW5lQ2FsbEZyYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYWMxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5q
cwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisJdmFyIGcgPSBmdW5j
dGlvbih4KSB7IHJldHVybiB4OyB9OworCWlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVy
biBnOyB9CisJcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHg7IH07Cit9Citub0lubGluZShz
aW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBz
aW5rKHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3Vs
dCAhPSA0MikKKwl0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBk
b3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkg
YWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJl
c3VsdCA9IGYoNDIpOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVj
dGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1wdXQuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNzRmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctcHV0LmpzCkBA
IC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKwl2YXIgZyA9IGZ1bmN0aW9u
KHgpIHsgcmV0dXJuIHg7IH07CisJaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJu
IGc7IH0KKwlyZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4geDsgfTsKK30KK25vSW5saW5lKHNp
bmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNp
bmsodHJ1ZSwgdHJ1ZSk7CisgICAgdmFyIHJlc3VsdCA9IGYoNDIpOworICAgIGlmIChyZXN1bHQg
IT0gNDIpCisJdGhyb3cgIkVycm9yOiBleHBlY3RlZCA0MiBidXQgZ290ICIgKyByZXN1bHQ7Cit9
CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93
biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlu
bmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOwordmFyIHJlc3VsdCA9
IGYoMTIpOworaWYgKHJlc3VsdCAhPSAxMikKKyAgICAvLyBUaGlzIHNob3VsZG4ndCBtYXR0ZXIg
YXMgaXQgc2hvdWxkIGJlIGVpdGhlciBjb3JyZWN0IG9yIGNvbXBsZXRlbHkgY3Jhc2gKKyAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDEyIGJ1dCBnb3QgIiArIHJlc3VsdDsKKworLy8gQ2hlY2sg
dGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBhc3Np
Z25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsK
K2lmIChyZXN1bHQgIT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIg
YnV0IGlzICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251524</attachid>
            <date>2015-04-23 18:33:15 -0700</date>
            <delta_ts>2015-04-23 19:24:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>new_function_sink.patch</filename>
            <type>text/plain</type>
            <size>24711</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDJhZWI4Li4yMTc3OWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDQt
MjMgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IGZ1bmN0aW9uIGFsbG9jYXRpb24gc2lua2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgaW4gSlNSZWdyZXNzIHRv
IGNoZWNrIGZ1bmN0aW9uIHNpbmtpbmcgaXMgYmVpbmcKKyAgICAgICAgcGVyZm9ybWVkLgorCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2luay1mdW5jdGlvbi5qczogQWRkZWQu
CisgICAgICAgIChmb28uZjEpOgorICAgICAgICAoZm9vLmYyKToKKyAgICAgICAgKGZvby5mMyk6
CisgICAgICAgIChmb28uZjQpOgorICAgICAgICAoZm9vLmY1KToKKyAgICAgICAgKGZvby5mNik6
CisgICAgICAgIChmb28uZjcpOgorICAgICAgICAoZm9vLmY4KToKKyAgICAgICAgKGZvby5mOSk6
CisgICAgICAgIChmb28uZjEwKToKKyAgICAgICAgKGZvby5mMTEpOgorICAgICAgICAoZm9vLmYx
Mik6CisgICAgICAgIChmb28uZjEzKToKKyAgICAgICAgKGZvby5mMTQpOgorICAgICAgICAoZm9v
LmYxNSk6CisgICAgICAgIChmb28uZjE2KToKKyAgICAgICAgKGZvby5mMTcpOgorICAgICAgICAo
Zm9vLmYxOCk6CisgICAgICAgIChmb28uZjE5KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTUtMDQt
MjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgZWRpdGlu
Zy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LWNoYXJhY3Rlci0wMDcuaHRtbCBzaG91bGQgcGFzcyBvbiBP
UyBYIDEwLjEwLjMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zaW5rLWZ1bmN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc2luay1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
YThlZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc2luay1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBmb28ocCkg
eworICAgIHZhciBmMSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMiA9
IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMyA9IGZ1bmN0aW9uICh4KSB7
IHJldHVybiB4OyB9OworICAgIHZhciBmNCA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9Owor
ICAgIHZhciBmNSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmNiA9IGZ1
bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmNyA9IGZ1bmN0aW9uICh4KSB7IHJl
dHVybiB4OyB9OworICAgIHZhciBmOCA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAg
IHZhciBmOSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMTAgPSBmdW5j
dGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAgICB2YXIgZjExID0gZnVuY3Rpb24gKHgpIHsgcmV0
dXJuIHg7IH07CisgICAgdmFyIGYxMiA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAg
IHZhciBmMTMgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAgICB2YXIgZjE0ID0gZnVu
Y3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYxNSA9IGZ1bmN0aW9uICh4KSB7IHJl
dHVybiB4OyB9OworICAgIHZhciBmMTYgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAg
ICB2YXIgZjE3ID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgdmFyIGYxOCA9IGZ1
bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworICAgIHZhciBmMTkgPSBmdW5jdGlvbiAoeCkgeyBy
ZXR1cm4geDsgfTsKKyAgICBpZiAocCkKKyAgICAgICAgcmV0dXJuIGYxKGYyKGYzKGY0KGY1KGY2
KGY3KGY4KGY5KGYxMChmMTEoZjEyKGYxMyhmMTQoZjE1KGYxNihmMTcoZjE4KGYxOShwKSkpKSkp
KSkpKSkpKSkpKSkpKTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKGZhbHNlKTsKKyAgICBpZiAocmVz
dWx0KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisK
K3ZhciByZXN1bHQgPSBmb28odHJ1ZSk7CitpZiAocmVzdWx0ICE9PSB0cnVlKQorICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZjhlOTVkNy4uNWFkNThiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODMgQEAKKzIwMTUtMDQtMjMgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IGZ1bmN0aW9uIGFsbG9jYXRpb24gc2lua2luZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDE2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIHRo
ZSBhYmlsaXR5IHRvIHNpbmsgZnVuY3Rpb24gYWxsb2NhdGlvbnMgaW4gdGhlCisgICAgICAgIERG
R09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZW5h
YmxlIHRoaXMsIHdlIGFkZCBhIG5ldyBQaGFudG9tTmV3RnVuY3Rpb24gbm9kZSB0aGF0IGlzCisg
ICAgICAgIHVzZWQgc2ltaWxhcmlseSB0byB0aGUgUGhhbnRvbU5ld09iamVjdCBub2RlLCBpLmUu
IGFzIGEgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZQorICAgICAgICBhIHN1bmsgTmV3RnVuY3Rpb24g
YW5kIGtlZXAgdHJhY2sgb2YgdGhlIGFsbG9jYXRpb25zIHRoYXQgaGF2ZSB0byBiZSBwZXJmb3Jt
ZWQKKyAgICAgICAgaW4gY2FzZSBvZiBPU1IgZXhpdCBhZnRlciB0aGUgc3VuayBhbGxvY2F0aW9u
IGJ1dCBiZWZvcmUgdGhlIHJlYWwgb25lLgorICAgICAgICBUaGUgRnVuY3Rpb25FeGVjdXRhYmxl
IGFuZCBKU0xleGljYWxFbnZpcm9ubWVudCAoYWN0aXZhdGlvbikgb2YgdGhlIGZ1bmN0aW9uCisg
ICAgICAgIGFyZSBzdG9yZWQgb250byB0aGUgUGhhbnRvbU5ld0Z1bmN0aW9uIHRocm91Z2ggUHV0
SGludHMgaW4gb3JkZXIgZm9yIHRoZW0KKyAgICAgICAgdG8gYmUgcmVjb3ZlcmVkIG9uIE9TUiBl
eGl0LgorCisgICAgICAgIENvbnRyYXJ5IHRvIHN1bmsgb2JqZWN0IGFsbG9jYXRpb25zLCBzdW5r
IGZ1bmN0aW9uIGFsbG9jYXRpb25zIGRvIG5vdAorICAgICAgICBzdXBwb3J0IGFueSBraW5kIG9m
IG9wZXJhdGlvbnMgKGUuZy4gc3RvcmluZyBpbnRvIGEgZmllbGQpIDsgYW55IHN1Y2ggb3BlcmF0
aW9uCisgICAgICAgIHdpbGwgbWFyayB0aGUgZnVuY3Rpb24gYWxsb2NhdGlvbiBhcyBlc2NhcGlu
ZyBhbmQgdHJpZ2dlciBtYXRlcmlhbGl6YXRpb24uIEFzCisgICAgICAgIHN1Y2gsIGZ1bmN0aW9u
IGFsbG9jYXRpb25zIGNhbiBvbmx5IGJlIHN1bmsgdG8gcGxhY2VzIHdoZXJlIGl0IHdvdWxkIGhh
dmUgYmVlbgorICAgICAgICBjb3JyZWN0IHRvIHN5bnRhY3RpY2FsbHkgbW92ZSB0aGVtLCBhbmQg
d2UgZG9uJ3QgbmVlZCBhIHNwZWNpYWwKKyAgICAgICAgTWF0ZXJpYWxpemVOZXdGdW5jdGlvbiBu
b2RlIHRvIHJlY292ZXIgcG9zc2libGUgb3BlcmF0aW9ucyBvbiB0aGUgZnVuY3Rpb24uIEEKKyAg
ICAgICAgc3VuayBOZXdGdW5jdGlvbiBub2RlIHdpbGwgc2ltcGx5IGNyZWF0ZSBuZXcgTmV3RnVu
Y3Rpb24gbm9kZXMsIHRoZW4gcmVwbGFjZQorICAgICAgICBpdHNlbGYgd2l0aCBhIFBoYW50b21O
ZXdGdW5jdGlvbiBub2RlLgorCisgICAgICAgIEluIGl0c2VsZiwgdGhpcyBjaGFuZ2UgaXMgbm90
IGV4cGVjdGVkIHRvIGhhdmUgYSBzaWduaWZpY2FudCBpbXBhY3Qgb24KKyAgICAgICAgcGVyZm9y
bWFuY2VzIG90aGVyIHRoYW4gaW4gZGVnZW5lcmF0ZSBjYXNlcyAoc2VlIGUuZy4KKyAgICAgICAg
SlNSZWdyZXNzL3NpbmstZnVuY3Rpb24pLCBidXQgaXQgaXMgYSBzdGVwIHRvd2FyZHMgYmVpbmcg
YWJsZSB0byBzaW5rIHJlY3Vyc2l2ZQorICAgICAgICBjbG9zdXJlcyBvbmNlcyB3ZSBzdXBwb3J0
IENyZWF0ZUFjdGl2YXRpb24gc2lua2luZyBhcyB3ZWxsIGFzIGFsbG9jYXRpb24gY3ljbGVzCisg
ICAgICAgIHNpbmtpbmcuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNv
bnZlcnRUb1BoYW50b21OZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNQ
aGFudG9tQWxsb2NhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAg
ICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6Omxvd2VyTm9uUmVhZGluZ09wZXJh
dGlvbnNPblBoYW50b21BbGxvY2F0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6T2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6T2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6Y3JlYXRlTWF0ZXJpYWxpemUpOgorICAgICAgICAo
SlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OnBvcHVsYXRlTWF0ZXJpYWxp
emUpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9u
Lmg6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGVDUFMpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9j
YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKGNhbGwpOgorICAgICAgICAoLmYpOgorICAgICAgICAo
c2luayk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5q
czogQWRkZWQuCisgICAgICAgICguZyk6CisgICAgICAgIChzaW5rKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1wdXQuanM6IEFkZGVkLgorICAgICAgICAoLmcpOgor
ICAgICAgICAoc2luayk6CisKIDIwMTUtMDQtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGluc2VydCBQaGFudG9tcyBsYXRlIHVzaW5nIEJ5
dGVjb2RlS2lsbHMgYW5kIGJsb2NrLWxvY2FsIE9TUiBhdmFpbGFiaWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA3MWY4MWQyLi41OTZmYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xMzUz
LDYgKzEzNTMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAg
ICAgICAgCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1
bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50
b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODkwYzlkYy4uNDViOGQwNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTg1Nyw2ICs4NTcsNyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAg
IGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0Ogor
ICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3Vu
dCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAzNjQ2MDc1Li45N2FiMzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTcsNiArMTk3
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hl
Y2tCYWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2Jq
ZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVj
dEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCA2OTk4YmU5Li41ZTUzNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwMzUsNiArMTAzNSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSWRlbnRpdHk6IC8vIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkIHVw
LgogICAgICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3
T2JqZWN0OgorICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IGJlYzU4MTMuLmU4MzU0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC01ODEsNyArNTgxLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgbV9vcElu
Zm8yID0gMDsKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fb3AgPT0gTmV3RnVuY3Rpb24pOworICAgICAgICBtX29wID0gUGhhbnRvbU5l
d0Z1bmN0aW9uOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7CisgICAgICAg
IG1fb3BJbmZvID0gMDsKKyAgICAgICAgbV9vcEluZm8yID0gMDsKKyAgICAgICAgY2hpbGRyZW4g
PSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0UGhhbnRvbVRvUGhh
bnRvbUxvY2FsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IFBoYW50b20gJiYgKGNo
aWxkMSgpLT5vcCgpID09IFBoaSB8fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRMb2NhbCB8fCBjaGls
ZDEoKS0+b3AoKSA9PSBTZXRBcmd1bWVudCkpOwpAQCAtMTQyNyw2ICsxNDM3LDcgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhh
bnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRz
OgorICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGIyZmQ3NDMuLmI0MmRjZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI0Niw2ICsyNDYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0SGludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlSW1tZWRpYXRlLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0ZXJpYWxpemVOZXdPYmplY3QsIE5vZGVSZXN1
bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld0Z1bmN0aW9uLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZv
ciBtaXNjIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEJyZWFrcG9pbnQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDQ2MzZmN2QuLmM5OGE4MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNTEwLDEzICs1MTAsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRCeU9mZnNldDogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyhub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQorICAgICAgICAgICAgICAgICAgICBO
b2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDIoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAg
IGlmICh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSAmJiBtX3NpbmtDYW5kaWRh
dGVzLmNvbnRhaW5zKHRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9QdXRCeU9mZnNldEhpbnQoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNl
IFB1dFN0cnVjdHVyZTogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlvbigpICYmIG1fc2lua0NhbmRp
ZGF0ZXMuY29udGFpbnModGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSog
c3RydWN0dXJlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT5vcmlnaW4sIEpTVmFsdWUobm9kZS0+dHJh
bnNpdGlvbigpLT5uZXh0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9QdXRTdHJ1Y3R1cmVIaW50KHN0cnVjdHVyZSk7CkBAIC01NTcsMTAgKzU1OSwyOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5k
aWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBl
eGVjdXRhYmxlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jZWxsT3Bl
cmFuZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MsIG5vZGUpLmNyZWF0ZUhpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIG5vZGUtPm9yaWdpbiwgZXhlY3V0YWJsZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9j
YXRpb24oRnVuY3Rpb25BY3RpdmF0aW9uUExvYywgbm9kZSkuY3JlYXRlSGludCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGls
ZDEoKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1Bo
YW50b21OZXdGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2Ug
U3RvcmVCYXJyaWVyOgogICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxD
aGVjazogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlu
cyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQorICAgICAgICAgICAgICAgICAgICBOb2RlKiB0YXJn
ZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YXJn
ZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSAmJiBtX3NpbmtDYW5kaWRhdGVzLmNvbnRh
aW5zKHRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFu
dG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAg
LTc1OSw3ICs3NzksMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKGVk
Z2Uubm9kZSgpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisKKyAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICAgICAgICAgIHNpbmtD
YW5kaWRhdGUoKTsKKyAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAorICAgICAgICAg
ICAgICAgIG5vZGUsCisgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZXNjYXBlKGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
IGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKQEAgLTgx
NSw3ICs4NDQsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBPcEluZm8oZGF0YSksIE9w
SW5mbygpLCAwLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAg
ICAKKworICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgICAgICAgICAgcmVzdWx0ID0gbV9n
cmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRpY3Rpb24oKSwgTmV3
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgTm9kZU9yaWdpbigKKyAgICAgICAgICAgICAgICAg
ICAgZXNjYXBlZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICB3aGVyZS0+
b3JpZ2luLmZvckV4aXQpLAorICAgICAgICAgICAgICAgIE9wSW5mbyhlc2NhcGVlLT5jZWxsT3Bl
cmFuZCgpKSwKKyAgICAgICAgICAgICAgICBlc2NhcGVlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIGVzY2FwZWUsICJCYWQgZXNjYXBlZSBvcCIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04
NzQsNyArOTEzLDQwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246IHsKKyAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0Zv
ckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOworCisgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0
aW9ucy5zaXplKCkgPT0gMik7CisKKyAgICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlv
biBleGVjdXRhYmxlKEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsIGVzY2FwZWUpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChsb2NhdGlvbnMuY29udGFpbnMoZXhlY3V0YWJsZSkpOworCisgICAgICAg
ICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24gYWN0aXZhdGlvbihGdW5jdGlvbkFjdGl2YXRp
b25QTG9jLCBlc2NhcGVlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zLmNvbnRh
aW5zKGFjdGl2YXRpb24pKTsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsb2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChsb2NhdGlvbnNbaV0ua2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRnVuY3Rp
b25FeGVjdXRhYmxlUExvYzogeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvY2F0
aW9uc1tpXSA9PSBleGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBGdW5jdGlv
bkFjdGl2YXRpb25QTG9jOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobG9jYXRp
b25zW2ldID09IGFjdGl2YXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgbG9jYXRp
b24ga2luZCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBtYXRlcmlh
bGl6ZSBvcCIpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IGZlYjBhNzguLmY2M2YwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NDIsNiArNTQy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJZGVudGl0eToKICAgICAgICAgY2FzZSBCb29s
ZWFuVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggOGM4M2M0Mi4uNzcxNTY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5jcHAKQEAgLTgyLDYgKzgyLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQcm9tb3RlZExvY2F0aW9uS2luZCBraW5kKQogICAgIGNhc2UgQXJndW1lbnRzQ2FsbGVl
UExvYzoKICAgICAgICAgb3V0LnByaW50KCJBcmd1bWVudHNDYWxsZWVQTG9jIik7CiAgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlUExvYzoKKyAgICAgICAgb3V0
LnByaW50KCJGdW5jdGlvbkV4ZWN1dGFibGVQTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgRnVuY3Rpb25BY3RpdmF0aW9uUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJGdW5jdGlv
bkFjdGl2YXRpb25QTG9jIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAppbmRleCBjNjc0ZjBlLi41MWY3YjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5oCkBAIC00MCw3ICs0MCwxMCBAQCBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKICAg
ICBOYW1lZFByb3BlcnR5UExvYywKICAgICBBcmd1bWVudFBMb2MsCiAgICAgQXJndW1lbnRDb3Vu
dFBMb2MsCi0gICAgQXJndW1lbnRzQ2FsbGVlUExvYworICAgIEFyZ3VtZW50c0NhbGxlZVBMb2Ms
CisKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAorICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBM
b2MsCiB9OwogCiBjbGFzcyBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGRhYTRlZjguLmQyOWYz
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBA
IC0yNzIsNiArMjcyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RW51bWVyYXRvckdl
bmVyaWNQbmFtZToKICAgICBjYXNlIFRvSW5kZXhTdHJpbmc6CiAgICAgY2FzZSBQaGFudG9tTmV3
T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUHV0SGludDoK
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCAzN2Y0NDYyLi45ZmVjZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ2
NTYsNiArNDY1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2Ug
UGhhbnRvbU5ld09iamVjdDoKKyAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNjk4ZGM1OC4uOGU1OGQwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NzQx
LDYgKzQ3NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBo
YW50b21OZXdPYmplY3Q6CisgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CmluZGV4IGNhMWU5OGYuLjUzZTcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCkBAIC00NTIsNiArNDUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIFVwc2lsb246CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgICAgICAgICBjYXNl
IFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKICAgICAgICAgICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAwZGFjYTc2Li43OTM5NzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODAsNiArMTgwLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBUb0luZGV4U3RyaW5nOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9t
TmV3T2JqZWN0OgorICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUHV0SGlu
dDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCmluZGV4IDY5ZDY5NjIuLmEzNWFhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC04NDksNiArODQ5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVu
Y3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCAwZDliZTNlLi5hZjU3
ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAg
LTkyLDcgKzkyLDI1IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgICAgICAKKworICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOiB7CisgICAgICAg
IC8vIEZpZ3VyZSBvdXQgd2hhdCB0aGUgZXhlY3V0YWJsZSBhbmQgYWN0aXZhdGlvbiBhcmUKKyAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAg
SlNTY29wZSogYWN0aXZhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5w
cm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkV4ZWN1dGFibGVQTG9jKSkKKyAgICAg
ICAgICAgICAgICBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlv
bigpID09IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEZ1bmN0aW9uQWN0aXZhdGlvblBMb2Mp
KQorICAgICAgICAgICAgICAgIGFjdGl2YXRpb24gPSBqc0Nhc3Q8SlNTY29wZSo+KEpTVmFsdWU6
OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eGVjdXRhYmxlICYmIGFjdGl2YXRpb24pOworCisgICAgICAgIEpTRnVuY3Rpb24qIHJlc3VsdCA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CiAgICAgICAgIGlmICghbWF0
ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1uby1kb3Vi
bGUtYWxsb2NhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRmMmY1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpz
CkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGlu
ZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBmID0gZnVuY3Rpb24g
KCkgeyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRp
b24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30K
K25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAg
IHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9
CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93
biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFs
bG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworaWYgKGYueCAh
PSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z1
bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZnVuY3Rpb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjdmMzNjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Z1bmN0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsx
LDIxIEBACitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSBmdW5jdGlvbih4KSB7
IHJldHVybiB4OyB9OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9
CisgICAgcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHg7IH07Cit9Citub0lubGluZShzaW5r
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5r
KHRydWUsIGZhbHNlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYgKHJlc3VsdCAh
PSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiArIHJlc3VsdDsK
K30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBk
b3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkg
YWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Cit2YXIgcmVz
dWx0ID0gZig0Mik7CitpZiAocmVzdWx0ICE9IDQyKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0
ZWQgNDIgYnV0IGdvdCAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1zaW5raW5nLXB1dC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViOWU2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnVuY3Rpb24tc2lua2luZy1wdXQuanMKQEAg
LTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0gZnVuY3Rp
b24oeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQyOyBy
ZXR1cm4gZzsgfQorICAgIHJldHVybiBmdW5jdGlvbih4KSB7IHJldHVybiB4OyB9OworfQorbm9J
bmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZh
ciBmID0gc2luayh0cnVlLCB0cnVlKTsKKyAgICB2YXIgcmVzdWx0ID0gZig0Mik7CisgICAgaWYg
KHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGV4cGVjdGVkIDQyIGJ1dCBnb3QgIiAr
IHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBj
b21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0aGUg
aW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luayh0cnVlLCBmYWxzZSk7Cit2
YXIgcmVzdWx0ID0gZigxMik7CitpZiAocmVzdWx0ICE9IDEyKQorICAgIC8vIFRoaXMgc2hvdWxk
bid0IG1hdHRlciBhcyBpdCBzaG91bGQgYmUgZWl0aGVyIGNvcnJlY3Qgb3IgY29tcGxldGVseSBj
cmFzaAorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgMTIgYnV0IGdvdCAiICsgcmVzdWx0Owor
CisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHBy
b3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3ZhciByZXN1bHQg
PSBmLmlubmVyOworaWYgKHJlc3VsdCAhPSA0MikKKyAgICB0aHJvdyAiRXJyb3I6IGlubmVyIHNo
b3VsZCBiZSA0MiBidXQgaXMgIiArIHJlc3VsdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>