<?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>144300</bug_id>
          
          <creation_ts>2015-04-27 17:54:04 -0700</creation_ts>
          <short_desc>Allow CreateActivation sinking</short_desc>
          <delta_ts>2015-05-05 11:01:44 -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="Basile Clement">basile_clement</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1089310</commentid>
    <comment_count>0</comment_count>
      <attachid>251798</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-27 17:54:04 -0700</bug_when>
    <thetext>Created attachment 251798
WIP

Currently we sink object allocation &amp; function allocation.
This will allow to sink activation allocation as well.

Attached patch is a WIP and still needs more testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089829</commentid>
    <comment_count>1</comment_count>
      <attachid>251910</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-28 18:26:32 -0700</bug_when>
    <thetext>Created attachment 251910
Seems to be working

Still need to run the full benchmarks + write ChangeLog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090045</commentid>
    <comment_count>2</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-29 10:09:59 -0700</bug_when>
    <thetext>Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1).

VMs tested:
&quot;Baseline&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc
&quot;SinkCreateActivation&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/SinkCreateActivation/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.

                                                         Baseline            SinkCreateActivation                               
SunSpider:
   3d-cube                                           15.2308+-0.2606     ?     15.3732+-0.2779        ?
   3d-morph                                          16.8042+-0.0985     ?     16.8384+-0.3182        ?
   3d-raytrace                                       19.4455+-0.7497           19.0424+-0.1963          might be 1.0212x faster
   access-binary-trees                                6.6882+-0.2881            6.6045+-0.2820          might be 1.0127x faster
   access-fannkuch                                   17.8009+-0.4887           17.3639+-0.1420          might be 1.0252x faster
   access-nbody                                       8.4720+-0.0432            8.4393+-0.0524        
   access-nsieve                                     10.1578+-0.1661     ?     10.1596+-0.2037        ?
   bitops-3bit-bits-in-byte                           4.6283+-0.1024     ?      4.6600+-0.0800        ?
   bitops-bits-in-byte                                9.6589+-0.0962     ?      9.6752+-0.0524        ?
   bitops-bitwise-and                                 6.3514+-0.0313            6.3483+-0.0450        
   bitops-nsieve-bits                                 9.6525+-0.0521     ?      9.6761+-0.1023        ?
   controlflow-recursive                              6.6254+-0.2120            6.5560+-0.0603          might be 1.0106x faster
   crypto-aes                                        13.3934+-0.2093     ?     13.4657+-0.4751        ?
   crypto-md5                                         7.8489+-0.1196            7.7206+-0.1449          might be 1.0166x faster
   crypto-sha1                                        7.2194+-0.0991     ?      7.2682+-0.0436        ?
   date-format-tofte                                 27.5433+-0.2852           27.4781+-0.4237        
   date-format-xparb                                 16.5758+-0.2804     ?     17.0672+-0.9329        ? might be 1.0296x slower
   math-cordic                                        9.1323+-0.2523            9.0755+-0.0807        
   math-partial-sums                                 15.5910+-0.2883     ?     15.6965+-0.1812        ?
   math-spectral-norm                                 5.7548+-0.1556            5.5647+-0.0635          might be 1.0342x faster
   regexp-dna                                        21.6370+-0.4686     ?     21.6921+-0.2880        ?
   string-base64                                     13.5455+-0.1669           13.4997+-0.0765        
   string-fasta                                      19.2194+-0.1661           19.1816+-0.0597        
   string-tagcloud                                   27.8363+-0.2504           27.5601+-0.1739          might be 1.0100x faster
   string-unpack-code                                57.0535+-0.4747     !     58.0085+-0.4252        ! definitely 1.0167x slower
   string-validate-input                             14.1135+-0.4711           13.9809+-0.1779        

   &lt;arithmetic&gt;                                      14.9223+-0.0618     ?     14.9229+-0.0366        ? might be 1.0000x slower

                                                         Baseline            SinkCreateActivation                               
LongSpider:
   3d-cube                                         2605.8180+-5.5153     !   2619.3201+-6.3255        ! definitely 1.0052x slower
   3d-morph                                        4684.6396+-3.9522     ?   4690.7627+-5.1025        ?
   3d-raytrace                                     2256.9155+-17.0795        2235.4811+-10.1420       
   access-binary-trees                             2677.4224+-7.1810     !   2695.9914+-9.2173        ! definitely 1.0069x slower
   access-fannkuch                                 1001.2788+-19.2084    ?   1002.4358+-16.7375       ?
   access-nbody                                    1863.4218+-2.0027     !   1869.9792+-1.9519        ! definitely 1.0035x slower
   access-nsieve                                   1943.4358+-9.0243     ?   1952.3350+-16.7100       ?
   bitops-3bit-bits-in-byte                         139.7401+-0.8997     ?    140.2193+-1.2893        ?
   bitops-bits-in-byte                              279.5860+-9.0475          278.6299+-3.9369        
   bitops-nsieve-bits                              2005.1554+-10.5537        2000.0580+-5.8653        
   controlflow-recursive                           1501.2905+-2.0802     !   1526.7780+-2.5516        ! definitely 1.0170x slower
   crypto-aes                                      1987.7439+-15.6631    ?   2000.2041+-9.4531        ?
   crypto-md5                                      1568.7516+-14.5682        1556.8435+-5.6473        
   crypto-sha1                                     1888.8077+-9.5359     ^   1865.0993+-5.2576        ^ definitely 1.0127x faster
   date-format-tofte                               2173.8532+-17.4089    ?   2210.2321+-29.0635       ? might be 1.0167x slower
   date-format-xparb                               2238.7920+-71.0694    ?   2295.0495+-73.4851       ? might be 1.0251x slower
   math-cordic                                     1807.6766+-2.4152     ?   1807.8344+-2.9796        ?
   math-partial-sums                               1549.7797+-4.2439     ?   1550.3994+-3.9295        ?
   math-spectral-norm                              1724.2199+-2.9488         1722.3521+-1.4815        
   string-base64                                   1035.4383+-3.8513     ?   1039.8466+-12.0856       ?
   string-fasta                                    1292.6444+-6.7018         1283.0874+-7.1106        
   string-tagcloud                                  658.8303+-5.7542          653.0769+-2.6994        

   &lt;geometric&gt;                                     1455.1527+-4.1435     ?   1457.9673+-2.4997        ? might be 1.0019x slower

                                                         Baseline            SinkCreateActivation                               
V8Spider:
   crypto                                           151.8524+-0.3259          151.8375+-0.7479        
   deltablue                                        195.1786+-1.9764     ?    198.5157+-2.7638        ? might be 1.0171x slower
   earley-boyer                                     127.8052+-1.0097     ?    129.4010+-1.8085        ? might be 1.0125x slower
   raytrace                                          90.1626+-1.7616           89.7376+-1.1651        
   regexp                                           236.2794+-0.8874     ?    238.3618+-2.1157        ?
   richards                                         216.9584+-2.3612     ?    218.4007+-0.8912        ?
   splay                                            105.0519+-3.9272          104.0003+-3.2986          might be 1.0101x faster

   &lt;geometric&gt;                                      151.5705+-0.5961     ?    152.2237+-0.9720        ? might be 1.0043x slower

                                                         Baseline            SinkCreateActivation                               
Octane:
   encrypt                                           0.67941+-0.00526    ?     0.68721+-0.00689       ? might be 1.0115x slower
   decrypt                                          11.90240+-0.06020    ?    11.90918+-0.05915       ?
   deltablue                                x2       0.61107+-0.00966    ?     0.61883+-0.01743       ? might be 1.0127x slower
   earley                                            1.38153+-0.01007    ^     1.31915+-0.00942       ^ definitely 1.0473x faster
   boyer                                            19.80787+-0.06570    ?    19.85438+-0.03163       ?
   navier-stokes                            x2      15.90604+-0.02342    ?    15.91019+-0.02697       ?
   raytrace                                 x2       3.78965+-0.16599    ?     3.91482+-0.22869       ? might be 1.0330x slower
   richards                                 x2       0.35523+-0.00245          0.35363+-0.00322       
   splay                                    x2       1.02838+-0.01377          1.02741+-0.02745       
   regexp                                   x2      90.29128+-0.36288         90.18459+-0.15549       
   pdfjs                                    x2     139.83003+-1.61314        138.84315+-0.21660       
   mandreel                                 x2     202.51934+-1.07573        201.86519+-0.83204       
   gbemu                                    x2     191.47769+-4.54699        191.00860+-4.75776       
   closure                                           1.77573+-0.01011          1.76225+-0.01348       
   jquery                                           23.33940+-0.27919         23.22411+-0.17876       
   box2d                                    x2      51.24721+-0.20734    ?    51.29475+-0.11463       ?
   zlib                                     x2    1127.39315+-4.65331    ?  1127.85461+-4.76934       ?
   typescript                               x2    2374.48250+-36.66609      2358.93408+-35.57490      

   &lt;geometric&gt;                                      21.33608+-0.07907         21.33288+-0.13985         might be 1.0002x faster

                                                         Baseline            SinkCreateActivation                               
Kraken:
   ai-astar                                         1082.391+-17.304          1063.232+-16.671          might be 1.0180x faster
   audio-beat-detection                              371.812+-3.696            370.834+-1.832         
   audio-dft                                         423.334+-7.608            419.590+-5.866         
   audio-fft                                         230.597+-1.381      ?     230.821+-1.156         ?
   audio-oscillator                                  625.774+-0.382            625.518+-0.361         
   imaging-darkroom                                  318.562+-5.888            318.119+-2.398         
   imaging-desaturate                                195.524+-1.360      ?     196.746+-1.215         ?
   imaging-gaussian-blur                             341.756+-15.437           336.412+-0.530           might be 1.0159x faster
   json-parse-financial                              136.365+-1.411            135.615+-0.690         
   json-stringify-tinderbox                          168.725+-0.275      !     171.985+-0.164         ! definitely 1.0193x slower
   stanford-crypto-aes                               187.195+-1.443      ?     187.397+-2.588         ?
   stanford-crypto-ccm                               162.675+-1.748      ?     163.403+-1.725         ?
   stanford-crypto-pbkdf2                            510.317+-2.943            509.687+-3.692         
   stanford-crypto-sha256-iterative                  165.924+-1.778      ?     166.958+-1.323         ?

   &lt;arithmetic&gt;                                      351.496+-1.389            349.737+-1.240           might be 1.0050x faster

                                                         Baseline            SinkCreateActivation                               
JSRegress:
   abs-boolean                                        7.6620+-0.0517            7.6601+-0.0768        
   adapt-to-double-divide                            48.4624+-0.6026     ?     48.7999+-0.1906        ?
   aliased-arguments-getbyval                         3.7690+-0.0598     ?      3.9327+-0.1345        ? might be 1.0434x slower
   allocate-big-object                                7.1575+-0.1440     ?      7.4318+-0.3009        ? might be 1.0383x slower
   arguments-named-and-reflective                    34.3776+-0.2985     ?     34.4915+-0.1452        ?
   arguments-out-of-bounds                           42.4955+-0.1753     ?     42.5774+-0.2522        ?
   arguments-strict-mode                             31.5420+-0.3011     ?     31.8964+-0.2322        ? might be 1.0112x slower
   arguments                                         27.8750+-0.5124           27.7136+-0.0620        
   arity-mismatch-inlining                            2.6956+-0.0664            2.6816+-0.1170        
   array-access-polymorphic-structure                18.5507+-0.1944           18.3924+-0.1667        
   array-nonarray-polymorhpic-access                102.8219+-4.3148          102.5087+-3.7613        
   array-prototype-every                            251.5081+-1.8193     !    258.8390+-0.4801        ! definitely 1.0291x slower
   array-prototype-forEach                          245.9705+-0.2645     !    263.0199+-0.7505        ! definitely 1.0693x slower
   array-prototype-map                              271.3571+-2.0051     !    281.7268+-2.8361        ! definitely 1.0382x slower
   array-prototype-some                             251.0243+-1.3578     !    258.3754+-0.1397        ! definitely 1.0293x slower
   array-splice-contiguous                          125.7358+-0.8322     ^    123.8507+-0.8114        ^ definitely 1.0152x faster
   array-with-double-add                             11.8885+-0.0631           11.8005+-0.0520        
   array-with-double-increment                        9.4525+-0.0506     ^      9.3014+-0.0965        ^ definitely 1.0162x faster
   array-with-double-mul-add                         14.5861+-0.0508     !     14.6913+-0.0503        ! definitely 1.0072x slower
   array-with-double-sum                              9.5109+-0.0199     ?      9.5290+-0.1281        ?
   array-with-int32-add-sub                          19.0627+-0.0939     ?     19.1482+-0.0933        ?
   array-with-int32-or-double-sum                     9.7362+-0.2885            9.5729+-0.0561          might be 1.0171x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     89.5254+-5.8153     !    104.9825+-0.4825        ! definitely 1.1727x slower
   ArrayBuffer-DataView-alloc-long-lived             44.4746+-6.0281     !     54.4758+-3.8476        ! definitely 1.2249x slower
   ArrayBuffer-Int32Array-byteOffset                 11.2135+-0.0799     ?     11.3538+-0.0926        ? might be 1.0125x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     90.8363+-1.1122     ?     94.8100+-5.2131        ? might be 1.0437x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     65.0555+-1.6419     ?     67.3167+-4.6640        ? might be 1.0348x slower
   ArrayBuffer-Int8Array-alloc-long-lived            37.2546+-0.9107     ?     39.0086+-4.2124        ? might be 1.0471x slower
   ArrayBuffer-Int8Array-alloc                       31.0621+-0.2093     ?     33.8400+-4.1187        ? might be 1.0894x slower
   asmjs_bool_bug                                    22.3575+-0.4179     ?     22.3695+-0.1910        ?
   assign-custom-setter-polymorphic                   9.0293+-0.1958     ?      9.6794+-0.5932        ? might be 1.0720x slower
   assign-custom-setter                              12.2419+-0.0607     !     13.1855+-0.0591        ! definitely 1.0771x slower
   basic-set                                         25.1545+-1.0421           24.5030+-0.1395          might be 1.0266x faster
   big-int-mul                                       11.9106+-0.8976           11.5823+-0.0520          might be 1.0283x faster
   boolean-test                                       8.8280+-0.0241     ?      8.9140+-0.0698        ?
   branch-fold                                       10.7896+-0.1599           10.7455+-0.1488        
   by-val-generic                                    22.5245+-0.1370           22.4190+-0.1320        
   call-spread-apply                                 83.4627+-2.6047     ?     83.5333+-0.9949        ?
   call-spread-call                                  69.4841+-0.4586     ?     70.2646+-0.4773        ? might be 1.0112x slower
   captured-assignments                               1.4035+-0.0118            1.3854+-0.0298          might be 1.0131x faster
   cast-int-to-double                                15.1476+-0.0678           15.1217+-0.0944        
   cell-argument                                     23.9282+-0.1676     ?     23.9354+-0.3385        ?
   cfg-simplify                                       8.5890+-0.3270     ?      8.6691+-0.3046        ?
   chain-getter-access                               28.5352+-0.3303     ?     28.6180+-0.3082        ?
   cmpeq-obj-to-obj-other                            28.8628+-0.3170     ^     27.7098+-0.0853        ^ definitely 1.0416x faster
   constant-test                                     14.3040+-0.1065           14.2166+-0.0417        
   create-lots-of-functions                          27.8652+-0.2748     ?     28.0523+-0.3293        ?
   DataView-custom-properties                       104.2128+-5.8340     !    121.1982+-1.4448        ! definitely 1.1630x slower
   deconstructing-parameters-overridden-by-function   
                                                      1.4757+-0.0371     ?      1.4922+-0.0614        ? might be 1.0112x slower
   delay-tear-off-arguments-strictmode               39.3905+-0.1302     ?     40.1134+-0.8425        ? might be 1.0184x slower
   deltablue-varargs                                580.3584+-3.3911     ^    573.7974+-2.1380        ^ definitely 1.0114x faster
   destructuring-arguments                           44.7935+-0.4037     ?     44.9631+-0.2772        ?
   destructuring-swap                                14.6549+-0.0524           14.4786+-0.1370          might be 1.0122x faster
   direct-arguments-getbyval                          3.8108+-0.1756            3.7918+-0.2137        
   div-boolean-double                                15.0802+-0.3650           14.9481+-0.1036        
   div-boolean                                       22.4364+-0.0451     ?     22.4636+-0.0477        ?
   double-get-by-val-out-of-bounds                   12.3687+-0.2761           12.2115+-0.0706          might be 1.0129x faster
   double-pollution-getbyval                         26.1724+-1.2495           25.7424+-0.1574          might be 1.0167x faster
   double-pollution-putbyoffset                      12.3289+-0.1430     ?     12.4875+-0.1387        ? might be 1.0129x slower
   double-to-int32-typed-array-no-inline              6.5521+-0.1455            6.5322+-0.0717        
   double-to-int32-typed-array                        5.7159+-0.0776     ?      5.7320+-0.0413        ?
   double-to-uint32-typed-array-no-inline             6.6697+-0.1272     ?      6.7008+-0.0537        ?
   double-to-uint32-typed-array                       5.9235+-0.1042            5.8881+-0.0763        
   elidable-new-object-dag                          107.4023+-1.5049          106.2279+-1.5121          might be 1.0111x faster
   elidable-new-object-roflcopter                   119.3927+-0.7580          118.9171+-1.2160        
   elidable-new-object-then-call                     99.8843+-3.1136     ?    100.0874+-3.5336        ?
   elidable-new-object-tree                         113.3365+-1.3235     ?    113.4227+-1.2815        ?
   empty-string-plus-int                             15.3570+-0.1868           15.2655+-0.1105        
   emscripten-cube2hash                             106.7234+-0.7513     ?    107.5250+-0.6766        ?
   exit-length-on-plain-object                       38.9550+-0.6398     ?     39.6525+-1.1237        ? might be 1.0179x slower
   external-arguments-getbyval                        3.6904+-0.1075            3.6735+-0.0869        
   external-arguments-putbyval                        6.6482+-0.1063            6.5704+-0.1519          might be 1.0118x faster
   fixed-typed-array-storage-var-index                3.7124+-0.0344     ?      3.7171+-0.0801        ?
   fixed-typed-array-storage                          2.9018+-0.0923     ?      2.9773+-0.0640        ? might be 1.0260x slower
   Float32Array-matrix-mult                          13.2521+-0.0767     ?     13.2524+-0.0734        ?
   Float32Array-to-Float64Array-set                 167.0979+-0.4091     ^    156.0801+-0.4926        ^ definitely 1.0706x faster
   Float64Array-alloc-long-lived                    184.3547+-0.7093          183.7322+-0.6190        
   Float64Array-to-Int16Array-set                   210.6015+-0.4701     ^    205.3070+-0.5772        ^ definitely 1.0258x faster
   fold-double-to-int                                41.4299+-0.0446           41.3328+-0.1039        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     23.5845+-0.6024     ?     23.5899+-0.5094        ?
   fold-get-by-id-to-multi-get-by-offset             20.1393+-0.6586           20.0421+-0.3849        
   fold-multi-get-by-offset-to-get-by-offset   
                                                     18.6449+-1.2593     ?     19.5591+-0.2194        ? might be 1.0490x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     19.1177+-1.8788           19.0630+-1.4070        
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     17.8298+-0.2832     ?     17.8652+-0.2499        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                     13.7298+-0.1744           13.5667+-0.9915          might be 1.0120x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     28.0477+-1.8488           27.9576+-1.0303        
   fold-put-by-id-to-multi-put-by-offset             19.4270+-0.3417           19.1707+-0.2431          might be 1.0134x faster
   fold-put-structure                                12.1548+-1.3867           11.6137+-0.3997          might be 1.0466x faster
   for-of-iterate-array-entries                      13.0157+-0.1600     ^     12.7634+-0.0855        ^ definitely 1.0198x faster
   for-of-iterate-array-keys                         10.3339+-0.1426           10.2268+-0.1386          might be 1.0105x faster
   for-of-iterate-array-values                       10.1624+-0.2469     ?     10.6329+-0.4679        ? might be 1.0463x slower
   fround                                            56.2403+-0.5572           54.9210+-1.3099          might be 1.0240x faster
   ftl-library-inlining-dataview                    202.9241+-1.9870     ^    194.6668+-1.0657        ^ definitely 1.0424x faster
   ftl-library-inlining                             211.8142+-39.0227    ?    243.0648+-69.4401       ? might be 1.1475x slower
   function-dot-apply                                 6.4801+-0.0934     ?      6.5144+-0.0958        ?
   function-test                                      9.7388+-0.0909            9.6450+-0.0352        
   function-with-eval                               287.0354+-4.2671          282.3612+-1.8735          might be 1.0166x faster
   gcse-poly-get-less-obvious                        53.6429+-1.5351     !     60.4338+-5.0574        ! definitely 1.1266x slower
   gcse-poly-get                                     73.7610+-8.5911           70.2148+-8.3355          might be 1.0505x faster
   gcse                                              12.4730+-0.0469     ?     12.4916+-0.0359        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      7.9631+-0.0948     ?      8.0218+-0.1494        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                     17.9161+-0.1372     ?     17.9169+-0.4513        ?
   get-by-id-chain-from-try-block                    19.6722+-0.1365     !     20.0253+-0.0668        ! definitely 1.0180x slower
   get-by-id-check-structure-elimination             15.0345+-0.1165           15.0129+-0.0650        
   get-by-id-proto-or-self                           50.0388+-2.2341           49.4788+-1.4120          might be 1.0113x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      8.4809+-0.0630     ?      8.5191+-0.0359        ?
   get-by-id-self-or-proto                           50.9825+-1.2637           49.2923+-0.8574          might be 1.0343x faster
   get-by-val-out-of-bounds                          11.9576+-0.2027           11.9283+-0.1083        
   get_callee_monomorphic                             7.0100+-0.1343            6.8885+-0.1011          might be 1.0176x faster
   get_callee_polymorphic                            10.3989+-0.1554           10.3543+-0.1695        
   getter-no-activation                              13.8000+-0.0739     ?     13.8722+-0.1722        ?
   getter-richards                                  267.9701+-2.7306     ?    273.0392+-3.1261        ? might be 1.0189x slower
   getter                                            15.1411+-0.0796     ?     15.1647+-0.0826        ?
   global-var-const-infer-fire-from-opt               3.0994+-0.3742     ?      3.1920+-0.2459        ? might be 1.0299x slower
   global-var-const-infer                             2.3979+-0.0460            2.3970+-0.0668        
   HashMap-put-get-iterate-keys                      76.5017+-0.9554           76.1044+-1.0110        
   HashMap-put-get-iterate                           75.8674+-0.5097           75.4397+-0.8793        
   HashMap-string-put-get-iterate                    71.4384+-0.7470           71.3312+-0.9392        
   hoist-make-rope                                   33.2646+-1.7834           32.4360+-3.3899          might be 1.0255x faster
   hoist-poly-check-structure-effectful-loop   
                                                     14.4287+-0.1482     ?     14.4838+-0.2783        ?
   hoist-poly-check-structure                        10.8219+-0.2709           10.6787+-0.0578          might be 1.0134x faster
   imul-double-only                                  23.9904+-2.4356     ^     21.3295+-0.1705        ^ definitely 1.1247x faster
   imul-int-only                                     27.4099+-1.1416           27.2009+-0.5331        
   imul-mixed                                        21.8000+-0.2002     ?     22.1077+-0.9228        ? might be 1.0141x slower
   in-four-cases                                     60.2956+-0.1717     ?     60.4297+-0.1220        ?
   in-one-case-false                                 28.9259+-1.3318           28.4379+-0.3937          might be 1.0172x faster
   in-one-case-true                                  28.9437+-1.2913           28.2461+-0.1050          might be 1.0247x faster
   in-two-cases                                      29.4427+-0.0478     ^     29.1007+-0.0755        ^ definitely 1.0118x faster
   indexed-properties-in-objects                      8.3516+-0.0951     ?      8.3780+-0.0348        ?
   infer-closure-const-then-mov-no-inline            11.6923+-0.0565     ?     11.8330+-0.0932        ? might be 1.0120x slower
   infer-closure-const-then-mov                      57.8680+-0.8780           57.2691+-0.2509          might be 1.0105x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     40.4451+-0.1807           40.3698+-0.1736        
   infer-closure-const-then-put-to-scope             66.5392+-1.5651           66.0340+-0.3896        
   infer-closure-const-then-reenter-no-inline   
                                                    195.8131+-0.3759     ?    195.9125+-0.4343        ?
   infer-closure-const-then-reenter                  67.1307+-1.2089           66.6642+-1.0258        
   infer-constant-global-property                    90.0964+-0.1499     ?     90.5408+-1.3832        ?
   infer-constant-property                            7.7470+-0.0667     ?      7.7537+-0.0142        ?
   infer-one-time-closure-ten-vars                   35.1518+-0.2975     ?     35.2921+-0.0877        ?
   infer-one-time-closure-two-vars                   34.2609+-0.0393           34.2204+-0.0929        
   infer-one-time-closure                            33.9464+-0.2414     ?     34.0379+-0.2428        ?
   infer-one-time-deep-closure                       60.4379+-0.3067     ?     61.0626+-1.2542        ? might be 1.0103x slower
   inline-arguments-access                           11.6501+-0.1811           11.5446+-0.1533        
   inline-arguments-aliased-access                   11.6898+-0.3650           11.6298+-0.2133        
   inline-arguments-local-escape                     11.5908+-0.2394     ?     11.6827+-0.2759        ?
   inline-get-scoped-var                             13.7388+-0.2763           13.5427+-0.1285          might be 1.0145x faster
   inlined-put-by-id-transition                      28.7412+-1.3737           28.5433+-1.7657        
   int-or-other-abs-then-get-by-val                  13.6032+-0.2948           13.5238+-0.0243        
   int-or-other-abs-zero-then-get-by-val             51.1622+-0.2671     ^     50.4635+-0.3243        ^ definitely 1.0138x faster
   int-or-other-add-then-get-by-val                  12.4114+-0.2828     ?     12.4683+-0.0692        ?
   int-or-other-add                                  15.2410+-0.1027     ?     15.3905+-0.3374        ?
   int-or-other-div-then-get-by-val                  12.3795+-0.0346           12.3244+-0.0358        
   int-or-other-max-then-get-by-val                  12.4672+-0.0809     ?     12.5608+-0.1893        ?
   int-or-other-min-then-get-by-val                  12.8033+-0.0938           12.7994+-0.0370        
   int-or-other-mod-then-get-by-val                  11.4681+-0.1165     ?     11.7581+-0.4203        ? might be 1.0253x slower
   int-or-other-mul-then-get-by-val                  11.5080+-0.0802     ?     11.5335+-0.0582        ?
   int-or-other-neg-then-get-by-val                  12.8645+-0.0511           12.8332+-0.0876        
   int-or-other-neg-zero-then-get-by-val             51.6731+-0.1948     !     53.6154+-0.7744        ! definitely 1.0376x slower
   int-or-other-sub-then-get-by-val                  13.0435+-0.1024     ?     13.1975+-0.1462        ? might be 1.0118x slower
   int-or-other-sub                                  10.2081+-0.0801     ?     10.2421+-0.0711        ?
   int-overflow-local                                12.8851+-0.1616           12.8139+-0.2362        
   Int16Array-alloc-long-lived                      135.9182+-0.3270     ?    136.3630+-0.9432        ?
   Int16Array-bubble-sort-with-byteLength            58.9623+-1.7533     ?     60.2675+-0.2316        ? might be 1.0221x slower
   Int16Array-bubble-sort                            57.5298+-0.2604     ?     58.1921+-1.0643        ? might be 1.0115x slower
   Int16Array-load-int-mul                            4.3961+-0.0267     ?      4.4248+-0.0522        ?
   Int16Array-to-Int32Array-set                     152.4517+-0.2189     !    164.9148+-0.1712        ! definitely 1.0818x slower
   Int32Array-alloc-large                            47.2921+-0.5193           46.6580+-0.5149          might be 1.0136x faster
   Int32Array-alloc-long-lived                      147.5621+-0.3060     ?    148.0221+-0.8888        ?
   Int32Array-alloc                                   8.0203+-0.1220     ?      8.1903+-0.3951        ? might be 1.0212x slower
   Int32Array-Int8Array-view-alloc                   19.8201+-0.5111     ?     19.8759+-0.2788        ?
   int52-spill                                       18.2853+-0.4403           18.1938+-0.1116        
   Int8Array-alloc-long-lived                       123.7491+-0.8435     ?    124.0025+-0.5760        ?
   Int8Array-load-with-byteLength                     9.6685+-0.0616     ?      9.6951+-0.0367        ?
   Int8Array-load                                     9.8639+-0.3912            9.7605+-0.1023          might be 1.0106x faster
   integer-divide                                    33.0208+-0.1981     ?     33.0500+-0.4051        ?
   integer-modulo                                     6.1027+-0.1733            5.9552+-0.2416          might be 1.0248x faster
   large-int-captured                                12.1128+-0.2747           11.8653+-0.1364          might be 1.0209x faster
   large-int-neg                                     48.7351+-0.1619     ?     49.1566+-1.3577        ?
   large-int                                         44.4617+-0.1576     ?     44.5871+-0.2475        ?
   logical-not                                       12.9229+-0.0361     !     13.1654+-0.1450        ! definitely 1.0188x slower
   lots-of-fields                                    36.9848+-0.3840     ^     36.3975+-0.1834        ^ definitely 1.0161x faster
   make-indexed-storage                               8.9414+-0.2396            8.8816+-0.2263        
   make-rope-cse                                     10.8508+-0.3164           10.7957+-0.2175        
   marsaglia-larger-ints                            116.3401+-0.9307          116.0645+-0.3253        
   marsaglia-osr-entry                               66.2720+-0.8914           65.8291+-0.3552        
   max-boolean                                        7.3114+-0.0688            7.2548+-0.0317        
   method-on-number                                  49.9460+-0.1181     !     51.4511+-0.3396        ! definitely 1.0301x slower
   min-boolean                                        7.2399+-0.0522     ?      7.3323+-0.0764        ? might be 1.0128x slower
   minus-boolean-double                               9.1364+-0.0442     ?      9.2869+-0.3683        ? might be 1.0165x slower
   minus-boolean                                      6.7251+-0.0814     ?      6.7642+-0.0818        ?
   misc-strict-eq                                   115.6286+-8.1606          109.9266+-0.9909          might be 1.0519x faster
   mod-boolean-double                                31.7781+-0.0524     ?     31.9400+-0.2997        ?
   mod-boolean                                       22.6789+-0.0964           22.6306+-0.0995        
   mul-boolean-double                                10.9664+-0.4122           10.8712+-0.1407        
   mul-boolean                                        8.2827+-0.0484     ?      8.3007+-0.0395        ?
   neg-boolean                                        9.3094+-0.2533            9.1842+-0.0506          might be 1.0136x faster
   negative-zero-divide                               1.1173+-0.0343            1.0994+-0.0397          might be 1.0162x faster
   negative-zero-modulo                               1.0922+-0.0395     ?      1.1011+-0.0267        ?
   negative-zero-negate                               1.0473+-0.0252            1.0264+-0.0646          might be 1.0203x faster
   nested-function-parsing                          105.7433+-0.8008     ?    106.1260+-0.2793        ?
   new-array-buffer-dead                            264.2049+-1.1614     ?    265.0650+-2.3259        ?
   new-array-buffer-push                             17.0548+-0.1825           17.0049+-0.4835        
   new-array-dead                                    49.3835+-0.6031           48.7193+-0.5683          might be 1.0136x faster
   new-array-push                                    11.0400+-0.5696           10.6129+-0.3324          might be 1.0402x faster
   no-inline-constructor                            294.4546+-0.6961          294.1088+-0.8979        
   number-test                                        8.7254+-0.0265            8.6595+-0.0554        
   object-closure-call                               16.2690+-0.1582           16.1757+-0.0454        
   object-test                                        9.2719+-0.1455            9.1250+-0.0301          might be 1.0161x faster
   obvious-sink-pathology-taken                     321.0143+-1.2035     ?    323.3907+-4.5582        ?
   obvious-sink-pathology                           296.0666+-1.3152          295.9920+-3.0555        
   obviously-elidable-new-object                     88.5094+-0.3127     ?     89.2810+-1.0037        ?
   plus-boolean-arith                                 7.2931+-0.0341     ^      7.2242+-0.0315        ^ definitely 1.0095x faster
   plus-boolean-double                                9.1996+-0.0400     ?      9.2386+-0.0506        ?
   plus-boolean                                       6.9266+-0.0457            6.8630+-0.0591        
   poly-chain-access-different-prototypes-simple   
                                                      9.3943+-0.1587     ?      9.4539+-0.0816        ?
   poly-chain-access-different-prototypes             7.5176+-0.0424     ?      7.5404+-0.0504        ?
   poly-chain-access-simpler                          9.4884+-0.0541     ?      9.4907+-0.1147        ?
   poly-chain-access                                  7.4156+-0.0791     ?      7.4586+-0.0593        ?
   poly-stricteq                                    179.6989+-0.1857     !    182.3080+-0.2917        ! definitely 1.0145x slower
   polymorphic-array-call                             3.8124+-0.1113     ?      3.8146+-0.0829        ?
   polymorphic-get-by-id                              8.9845+-0.0540     ?      9.0819+-0.0830        ? might be 1.0108x slower
   polymorphic-put-by-id                             84.2749+-1.4661           83.2251+-1.7442          might be 1.0126x faster
   polymorphic-structure                             43.8951+-0.0758           43.8202+-0.0836        
   polyvariant-monomorphic-get-by-id                 24.5911+-0.0823           24.5141+-0.1548        
   proto-getter-access                               28.3467+-0.3269     ?     28.4851+-0.2582        ?
   put-by-id-replace-and-transition                  23.1250+-0.2727     ?     23.5296+-1.3504        ? might be 1.0175x slower
   put-by-id-slightly-polymorphic                     8.4618+-0.1427            8.4038+-0.1244        
   put-by-id                                         30.0135+-0.3198           29.9806+-0.4333        
   put-by-val-direct                                  1.4324+-0.0167     ?      1.4338+-0.0769        ?
   put-by-val-large-index-blank-indexing-type   
                                                     15.7154+-0.2938           15.4337+-0.0926          might be 1.0182x faster
   put-by-val-machine-int                             7.6047+-0.0977     ?      7.6169+-0.0393        ?
   rare-osr-exit-on-local                            43.4412+-0.3447     ?     43.6281+-0.3752        ?
   register-pressure-from-osr                        63.5993+-0.0608     ?     63.6130+-0.1285        ?
   setter                                            14.7920+-0.0802     ?     14.8224+-0.0819        ?
   simple-activation-demo                            74.4618+-0.0970     ^     73.4409+-0.1715        ^ definitely 1.0139x faster
   simple-getter-access                              36.9210+-0.4142     ?     37.0903+-0.3159        ?
   simple-poly-call-nested                           23.0267+-0.0722     ?     23.0742+-0.3014        ?
   simple-poly-call                                   3.9438+-0.0823     ?      3.9850+-0.0412        ? might be 1.0104x slower
   sin-boolean                                       55.2064+-0.5721           54.2591+-0.7384          might be 1.0175x faster
   singleton-scope                                  203.2908+-0.2872     ?    203.4205+-0.6000        ?
   sink-function                                     29.7449+-0.7619     ?     30.4408+-0.1972        ? might be 1.0234x slower
   sink-huge-activation                             123.0638+-1.1308     ^     54.2304+-0.9366        ^ definitely 2.2693x faster
   sinkable-new-object-dag                          184.7625+-1.0179          184.4036+-1.0183        
   sinkable-new-object-taken                        143.8718+-6.0718     ?    147.5629+-0.9146        ? might be 1.0257x slower
   sinkable-new-object                              100.1865+-0.5050           99.7485+-1.1617        
   slow-array-profile-convergence                     8.4369+-0.1111     ?      8.4779+-0.2329        ?
   slow-convergence                                   8.2096+-0.0654     ?      8.3198+-0.1674        ? might be 1.0134x slower
   sorting-benchmark                                 68.7975+-0.4356     ?     69.1812+-0.3512        ?
   sparse-conditional                                 3.5444+-0.0481            3.4974+-0.0654          might be 1.0134x faster
   splice-to-remove                                  48.5801+-1.6886           48.1400+-0.3261        
   string-char-code-at                               50.0061+-0.6567     ?     50.9496+-1.9182        ? might be 1.0189x slower
   string-concat-object                               6.3930+-0.0818     ?      6.4228+-0.0654        ?
   string-concat-pair-object                          6.2679+-0.0899            6.2014+-0.1183          might be 1.0107x faster
   string-concat-pair-simple                         28.8054+-0.3988     ?     28.8437+-0.2365        ?
   string-concat-simple                              30.0162+-0.3486           29.9775+-0.2836        
   string-cons-repeat                                19.4403+-0.1311     ?     19.4470+-0.2547        ?
   string-cons-tower                                 19.9930+-0.1673     ?     20.0734+-0.1724        ?
   string-equality                                   51.1470+-0.2283           51.0605+-0.2516        
   string-get-by-val-big-char                        20.1984+-0.1497           20.0289+-0.1419        
   string-get-by-val-out-of-bounds-insane            10.5433+-0.0545     ?     10.5955+-0.1090        ?
   string-get-by-val-out-of-bounds                   15.3539+-0.0566           15.3385+-0.0690        
   string-get-by-val                                  9.8325+-0.1003            9.7847+-0.0458        
   string-hash                                        6.0237+-0.0391     ?      6.1511+-0.2674        ? might be 1.0211x slower
   string-long-ident-equality                        44.9926+-0.7027           44.7404+-0.5588        
   string-out-of-bounds                              42.5635+-0.0825     ?     42.6453+-0.1747        ?
   string-repeat-arith                               94.1613+-1.4568     ?     95.4966+-1.0622        ? might be 1.0142x slower
   string-sub                                       186.9157+-1.3190     ?    187.3490+-1.8970        ?
   string-test                                        8.5170+-0.0584            8.4194+-0.0736          might be 1.0116x faster
   string-var-equality                               93.3132+-0.1071     ^     90.4244+-0.1571        ^ definitely 1.0319x faster
   structure-hoist-over-transitions                   7.0398+-0.2649     ?      7.1287+-0.1115        ? might be 1.0126x slower
   substring-concat-weird                           110.9452+-2.3532     ?    111.4346+-0.7395        ?
   substring-concat                                 115.5950+-0.9632     ?    116.6056+-0.3403        ?
   substring                                        130.4111+-0.1561     !    132.1442+-0.2143        ! definitely 1.0133x slower
   switch-char-constant                               7.8115+-0.0527     ?      7.8312+-0.0451        ?
   switch-char                                       19.2902+-0.1192     ^     17.9503+-0.1860        ^ definitely 1.0746x faster
   switch-constant                                   20.9967+-0.6714           20.9110+-0.6290        
   switch-string-basic-big-var                       43.8611+-0.1310     !     44.2351+-0.1264        ! definitely 1.0085x slower
   switch-string-basic-big                           42.1224+-1.2674           41.6464+-0.3607          might be 1.0114x faster
   switch-string-basic-var                           42.1107+-0.1228     ?     42.3090+-0.0850        ?
   switch-string-basic                               39.5096+-0.5287     ?     40.1369+-1.2311        ? might be 1.0159x slower
   switch-string-big-length-tower-var                59.1930+-0.1165     !     64.7406+-0.0607        ! definitely 1.0937x slower
   switch-string-length-tower-var                    44.9130+-0.1733     !     47.9149+-0.0601        ! definitely 1.0668x slower
   switch-string-length-tower                        38.1860+-0.1352           38.1499+-0.1041        
   switch-string-short                               37.7227+-0.3523           37.6655+-0.1381        
   switch                                            33.3985+-0.2190     ?     33.5409+-0.1760        ?
   tear-off-arguments-simple                          9.1493+-0.1825     ?      9.2774+-0.2868        ? might be 1.0140x slower
   tear-off-arguments                                12.4542+-0.1781           12.3560+-0.2337        
   temporal-structure                                35.8898+-0.1797           35.8828+-0.1177        
   to-int32-boolean                                  40.1351+-0.0609     ?     40.1740+-0.0966        ?
   try-catch-get-by-val-cloned-arguments             40.9102+-1.9425           40.0435+-0.4453          might be 1.0216x faster
   try-catch-get-by-val-direct-arguments             17.5958+-0.1410     ?     17.6675+-0.1267        ?
   try-catch-get-by-val-scoped-arguments             20.7968+-0.1145     ?     20.9679+-0.4513        ?
   typed-array-get-set-by-val-profiling              99.5628+-1.5471           99.2157+-1.4219        
   undefined-property-access                       1074.4853+-3.7086         1071.1611+-2.2087        
   undefined-test                                     8.9370+-0.0487            8.8221+-0.1301          might be 1.0130x faster
   unprofiled-licm                                   64.8498+-0.0960     ?     65.3367+-0.7200        ?
   varargs-call                                      44.0732+-0.3173     ?     44.8562+-1.9066        ? might be 1.0178x slower
   varargs-construct-inline                          57.9690+-0.5250     ?     58.2108+-0.4130        ?
   varargs-construct                                 92.6334+-0.5716           92.4602+-0.4416        
   varargs-inline                                    29.0239+-0.1350     ?     29.0962+-0.1104        ?
   varargs-strict-mode                               32.8340+-0.1008     ?     32.8591+-0.0862        ?
   varargs                                           32.8878+-0.0681           32.8826+-0.0509        
   weird-inlining-const-prop                          6.3550+-0.3409     ?      6.4132+-0.2528        ?

   &lt;geometric&gt;                                       24.7422+-0.0717     ?     24.7579+-0.0357        ? might be 1.0006x slower

                                                         Baseline            SinkCreateActivation                               
AsmBench:
   bigfib.cpp                                      1457.2151+-4.6330     ?   1460.1446+-4.1808        ?
   cray.c                                          1282.9488+-4.9647         1279.8468+-6.7348        
   dry.c                                           1513.8826+-2.3240         1496.0722+-39.7165         might be 1.0119x faster
   FloatMM.c                                       2176.4851+-3.2265     ?   2178.0837+-2.4934        ?
   gcc-loops.cpp                                  12749.4106+-61.9160    ?  12761.5954+-35.8184       ?
   n-body.c                                        2986.6520+-3.5163     ?   2988.5298+-3.1884        ?
   Quicksort.c                                     1275.7349+-15.8471    ?   1285.2440+-2.8445        ?
   stepanov_container.cpp                         11398.1800+-59.5739       11386.5594+-25.4641       
   Towers.c                                         771.6058+-1.3150     ?    771.8465+-1.4953        ?

   &lt;geometric&gt;                                     2398.9638+-4.6744         2398.0603+-7.6695          might be 1.0004x faster

                                                         Baseline            SinkCreateActivation                               
CompressionBench:
   huffman                                         1099.5950+-4.7945         1096.7447+-7.2399        
   arithmetic-simple                               1196.9718+-5.3095     ^   1180.8057+-0.6146        ^ definitely 1.0137x faster
   arithmetic-precise                               892.5842+-4.2372          889.7998+-3.1880        
   arithmetic-complex-precise                       886.0932+-4.1485          880.5936+-2.6883        
   arithmetic-precise-order-0                      1262.0122+-11.2782        1258.8899+-12.2288       
   arithmetic-precise-order-1                       975.6801+-6.4488          972.4573+-4.5266        
   arithmetic-precise-order-2                      1106.2924+-7.7605         1105.5647+-6.3905        
   arithmetic-simple-order-1                       1260.6795+-1.8141         1260.2292+-2.5709        
   arithmetic-simple-order-2                       1426.7262+-2.8138     ?   1429.3348+-5.0903        ?
   lz-string                                        907.3435+-69.7552         888.7523+-5.3549          might be 1.0209x faster

   &lt;geometric&gt;                                     1087.3129+-9.6442         1081.9614+-1.4801          might be 1.0049x faster

                                                         Baseline            SinkCreateActivation                               
Geomean of preferred means:
   &lt;scaled-result&gt;                                  188.4836+-0.2607          188.4000+-0.3730          might be 1.0004x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090046</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-29 10:11:22 -0700</bug_when>
    <thetext>Smaller speed-up than what I would have expected.  But, I&apos;ll take 4% on Octane/earley. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090071</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-29 10:59:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Smaller speed-up than what I would have expected.  But, I&apos;ll take 4% on
&gt; Octane/earley. :-)

I believe the original earley slow-down from removing bytecode activation sinking was on the order of 30%. It&apos;s probably worth investigating why this patch doesn&apos;t win bigger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090072</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-29 11:00:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Smaller speed-up than what I would have expected.  But, I&apos;ll take 4% on
&gt; &gt; Octane/earley. :-)
&gt; 
&gt; I believe the original earley slow-down from removing bytecode activation
&gt; sinking was on the order of 30%. It&apos;s probably worth investigating why this
&gt; patch doesn&apos;t win bigger.

The megapatch also made activations a *lot* cheaper to allocate.

We should check where this patch puts us relative to where we were before the original earley slow-down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090073</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-29 11:00:54 -0700</bug_when>
    <thetext>&gt; We should check where this patch puts us relative to where we were before
&gt; the original earley slow-down.

Good idea. Should be doable with a spade build or a webkit nightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090678</commentid>
    <comment_count>7</comment_count>
      <attachid>252123</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-30 17:50:24 -0700</bug_when>
    <thetext>Created attachment 252123
Remove spurious assertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091572</commentid>
    <comment_count>8</comment_count>
      <attachid>252344</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-04 16:01:20 -0700</bug_when>
    <thetext>Created attachment 252344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091577</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-04 16:04:19 -0700</bug_when>
    <thetext>Attachment 252344 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:842:  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>1091658</commentid>
    <comment_count>10</comment_count>
      <attachid>252344</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 19:37:11 -0700</bug_when>
    <thetext>Comment on attachment 252344
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:-576
&gt; -                        ASSERT(target-&gt;isPhantomObjectAllocation());

Maybe assert that it&apos;s isPhantomAllocation()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091699</commentid>
    <comment_count>11</comment_count>
      <attachid>252344</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-04 21:59:24 -0700</bug_when>
    <thetext>Comment on attachment 252344
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:-576
&gt;&gt; -                        ASSERT(target-&gt;isPhantomObjectAllocation());
&gt; 
&gt; Maybe assert that it&apos;s isPhantomAllocation()?

That would make sense, I will add that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091789</commentid>
    <comment_count>12</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-05 09:35:40 -0700</bug_when>
    <thetext>Committed r183812: &lt;http://trac.webkit.org/changeset/183812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091806</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-05 10:27:49 -0700</bug_when>
    <thetext>This looks pretty assert-y on debug bots:

https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r183813%20(4375)/results.html

Example stack:

Thread 19 Crashed:: FTL Worklist Worker Thread
0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
1   com.apple.JavaScriptCore      	0x000000010f6b6db5 JSC::DFG::Node::objectMaterializationData() + 69
2   com.apple.JavaScriptCore      	0x000000010f6b33e3 JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
3   com.apple.JavaScriptCore      	0x000000010f6b1b75 JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
4   com.apple.JavaScriptCore      	0x000000010f6adc8c JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
5   com.apple.JavaScriptCore      	0x000000010f6ada31 JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool JSC::DFG::runAndLog&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::ObjectAllocationSinkingPhase&amp;) + 21
7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool JSC::DFG::runPhase&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::Graph&amp;) + 46
8   com.apple.JavaScriptCore      	0x000000010f6ac2a8 JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&amp;) + 40
9   com.apple.JavaScriptCore      	0x000000010f840c1a JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&amp;) + 4602
10  com.apple.JavaScriptCore      	0x000000010f83f6a1 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&amp;, JSC::DFG::ThreadData*) + 417
11  com.apple.JavaScriptCore      	0x000000010f90b230 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
12  com.apple.JavaScriptCore      	0x000000010f909814 JSC::DFG::Worklist::threadFunction(void*) + 36
13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void (*)(void*), void*, char const*)::$_0::operator()() const + 25
14  com.apple.JavaScriptCore      	0x000000010ff5127c std::__1::__function::__func&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0, std::__1::allocator&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0&gt;, void ()&gt;::operator()() + 60
15  com.apple.JavaScriptCore      	0x000000010fa2ab7a std::__1::function&lt;void ()&gt;::operator()() const + 26
16  com.apple.JavaScriptCore      	0x000000010ff500ce WTF::threadEntryPoint(void*) + 158
17  com.apple.JavaScriptCore      	0x000000010ff51891 WTF::wtfThreadEntryPoint(void*) + 289
18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091812</commentid>
    <comment_count>14</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-05 10:50:04 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; This looks pretty assert-y on debug bots:
&gt; 
&gt; https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
&gt; r183813%20(4375)/results.html
&gt; 
&gt; Example stack:
&gt; 
&gt; Thread 19 Crashed:: FTL Worklist Worker Thread
&gt; 0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
&gt; 1   com.apple.JavaScriptCore      	0x000000010f6b6db5
&gt; JSC::DFG::Node::objectMaterializationData() + 69
&gt; 2   com.apple.JavaScriptCore      	0x000000010f6b33e3
&gt; JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::
&gt; BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
&gt; 3   com.apple.JavaScriptCore      	0x000000010f6b1b75
&gt; JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
&gt; 4   com.apple.JavaScriptCore      	0x000000010f6adc8c
&gt; JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
&gt; 5   com.apple.JavaScriptCore      	0x000000010f6ada31
&gt; JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
&gt; 6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool
&gt; JSC::DFG::runAndLog&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::
&gt; ObjectAllocationSinkingPhase&amp;) + 21
&gt; 7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool
&gt; JSC::DFG::runPhase&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::Graph&amp;)
&gt; + 46
&gt; 8   com.apple.JavaScriptCore      	0x000000010f6ac2a8
&gt; JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&amp;) + 40
&gt; 9   com.apple.JavaScriptCore      	0x000000010f840c1a
&gt; JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&amp;) + 4602
&gt; 10  com.apple.JavaScriptCore      	0x000000010f83f6a1
&gt; JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&amp;,
&gt; JSC::DFG::ThreadData*) + 417
&gt; 11  com.apple.JavaScriptCore      	0x000000010f90b230
&gt; JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
&gt; 12  com.apple.JavaScriptCore      	0x000000010f909814
&gt; JSC::DFG::Worklist::threadFunction(void*) + 36
&gt; 13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void
&gt; (*)(void*), void*, char const*)::$_0::operator()() const + 25
&gt; 14  com.apple.JavaScriptCore      	0x000000010ff5127c
&gt; std::__1::__function::__func&lt;WTF::createThread(void (*)(void*), void*, char
&gt; const*)::$_0, std::__1::allocator&lt;WTF::createThread(void (*)(void*), void*,
&gt; char const*)::$_0&gt;, void ()&gt;::operator()() + 60
&gt; 15  com.apple.JavaScriptCore      	0x000000010fa2ab7a
&gt; std::__1::function&lt;void ()&gt;::operator()() const + 26
&gt; 16  com.apple.JavaScriptCore      	0x000000010ff500ce
&gt; WTF::threadEntryPoint(void*) + 158
&gt; 17  com.apple.JavaScriptCore      	0x000000010ff51891
&gt; WTF::wtfThreadEntryPoint(void*) + 289
&gt; 18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
&gt; 19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
&gt; 20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13

Yeah, this seems to be due to MaterializeCreateActivation not being treated as having materialization data by DFG::Node::hasObjectMaterializationData(), thus triggering an assertion failure in DFG::Node::objectMaterializationData(). This works in releases builds because the materialization data is actually present.
I remember fixing this due to assertions failures locally, but I apparently lost that change somewhere along the road.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091813</commentid>
    <comment_count>15</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-05-05 11:01:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; This looks pretty assert-y on debug bots:
&gt; &gt; 
&gt; &gt; https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
&gt; &gt; r183813%20(4375)/results.html
&gt; &gt; 
&gt; &gt; Example stack:
&gt; &gt; 
&gt; &gt; Thread 19 Crashed:: FTL Worklist Worker Thread
&gt; &gt; 0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
&gt; &gt; 1   com.apple.JavaScriptCore      	0x000000010f6b6db5
&gt; &gt; JSC::DFG::Node::objectMaterializationData() + 69
&gt; &gt; 2   com.apple.JavaScriptCore      	0x000000010f6b33e3
&gt; &gt; JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::
&gt; &gt; BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
&gt; &gt; 3   com.apple.JavaScriptCore      	0x000000010f6b1b75
&gt; &gt; JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
&gt; &gt; 4   com.apple.JavaScriptCore      	0x000000010f6adc8c
&gt; &gt; JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
&gt; &gt; 5   com.apple.JavaScriptCore      	0x000000010f6ada31
&gt; &gt; JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
&gt; &gt; 6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool
&gt; &gt; JSC::DFG::runAndLog&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::
&gt; &gt; ObjectAllocationSinkingPhase&amp;) + 21
&gt; &gt; 7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool
&gt; &gt; JSC::DFG::runPhase&lt;JSC::DFG::ObjectAllocationSinkingPhase&gt;(JSC::DFG::Graph&amp;)
&gt; &gt; + 46
&gt; &gt; 8   com.apple.JavaScriptCore      	0x000000010f6ac2a8
&gt; &gt; JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&amp;) + 40
&gt; &gt; 9   com.apple.JavaScriptCore      	0x000000010f840c1a
&gt; &gt; JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&amp;) + 4602
&gt; &gt; 10  com.apple.JavaScriptCore      	0x000000010f83f6a1
&gt; &gt; JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&amp;,
&gt; &gt; JSC::DFG::ThreadData*) + 417
&gt; &gt; 11  com.apple.JavaScriptCore      	0x000000010f90b230
&gt; &gt; JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
&gt; &gt; 12  com.apple.JavaScriptCore      	0x000000010f909814
&gt; &gt; JSC::DFG::Worklist::threadFunction(void*) + 36
&gt; &gt; 13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void
&gt; &gt; (*)(void*), void*, char const*)::$_0::operator()() const + 25
&gt; &gt; 14  com.apple.JavaScriptCore      	0x000000010ff5127c
&gt; &gt; std::__1::__function::__func&lt;WTF::createThread(void (*)(void*), void*, char
&gt; &gt; const*)::$_0, std::__1::allocator&lt;WTF::createThread(void (*)(void*), void*,
&gt; &gt; char const*)::$_0&gt;, void ()&gt;::operator()() + 60
&gt; &gt; 15  com.apple.JavaScriptCore      	0x000000010fa2ab7a
&gt; &gt; std::__1::function&lt;void ()&gt;::operator()() const + 26
&gt; &gt; 16  com.apple.JavaScriptCore      	0x000000010ff500ce
&gt; &gt; WTF::threadEntryPoint(void*) + 158
&gt; &gt; 17  com.apple.JavaScriptCore      	0x000000010ff51891
&gt; &gt; WTF::wtfThreadEntryPoint(void*) + 289
&gt; &gt; 18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
&gt; &gt; 19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
&gt; &gt; 20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13
&gt; 
&gt; Yeah, this seems to be due to MaterializeCreateActivation not being treated
&gt; as having materialization data by DFG::Node::hasObjectMaterializationData(),
&gt; thus triggering an assertion failure in
&gt; DFG::Node::objectMaterializationData(). This works in releases builds
&gt; because the materialization data is actually present.
&gt; I remember fixing this due to assertions failures locally, but I apparently
&gt; lost that change somewhere along the road.

Fixed in r183819 &lt;http://trac.webkit.org/changeset/183819&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251798</attachid>
            <date>2015-04-27 17:54:04 -0700</date>
            <delta_ts>2015-04-28 18:26:32 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>sink_create_activation.patch</filename>
            <type>text/plain</type>
            <size>24279</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAppbmRleCBhOGMwNzk2Li44MTQwYzViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xMzY1LDYgKzEzNjUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rp
b246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgIGNh
c2UgQm90dG9tVmFsdWU6CkBAIC0xMzg3LDggKzEzODgsOSBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBzZXQpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAg
IGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGQz
ODU3OWUuLjM0ZjNjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCkBAIC04NTgsNiArODU4LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNl
IFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBj
YXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9u
OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICByZWFkKEhl
YXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA0ODcx
ZjBhLi5hOWUzMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0xOTgsNiArMTk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25l
ZEFyZ3VtZW50czoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKQEAgLTIzNiw2ICsyMzcs
NyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRF
bnVtZXJhdG9yR2VuZXJpY1BuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBjYXNl
IE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5
T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggZjc0ZWNiZC4uNzYxM2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xMDQxLDYgKzEwNDEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEJvb2xlYW5Ub051bWJlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBj
YXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6
CkBAIC0xMDQ4LDYgKzEwNDksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
OgogICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAg
ICAgY2FzZSBHZXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4
IDEwZTE3NWIuLmNkNGRmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApA
QCAtMTQ5LDYgKzE0OSwxNCBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0SGludCgp
CiAgICAgICAgIGNoaWxkMigpLm5vZGUoKSwgY2hpbGQzKCkubm9kZSgpKTsKIH0KIAordm9pZCBO
b2RlOjpjb252ZXJ0VG9QdXRDbG9zdXJlVmFySGludCgpCit7CisgICAgQVNTRVJUKG1fb3AgPT0g
UHV0Q2xvc3VyZVZhcik7CisgICAgY29udmVydFRvUHV0SGludCgKKyAgICAgICAgUHJvbW90ZWRM
b2NhdGlvbkRlc2NyaXB0b3IoQ2xvc3VyZVZhclBMb2MsIHNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkp
LAorICAgICAgICBjaGlsZDEoKS5ub2RlKCksIGNoaWxkMigpLm5vZGUoKSk7Cit9CisKIFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yIE5vZGU6OnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkK
IHsKICAgICByZXR1cm4gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3Ioc3RhdGljX2Nhc3Q8UHJv
bW90ZWRMb2NhdGlvbktpbmQ+KG1fb3BJbmZvKSwgbV9vcEluZm8yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggNjU2ZmQ1Zi4uODNhYjYxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKQEAgLTU3MCw2ICs1NzAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAg
ICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldEhpbnQoKTsKICAgICB2b2lkIGNvbnZlcnRUb1B1
dFN0cnVjdHVyZUhpbnQoTm9kZSogc3RydWN0dXJlKTsKKyAgICB2b2lkIGNvbnZlcnRUb1B1dENs
b3N1cmVWYXJIaW50KCk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3T2JqZWN0
KCkKICAgICB7CkBAIC01OTIsNiArNTkzLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9QaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBDcmVh
dGVBY3RpdmF0aW9uIHx8IG1fb3AgPT0gTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKTsKKyAg
ICAgICAgbV9vcCA9IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOworICAgICAgICBtX2ZsYWdzICY9
IH5Ob2RlSGFzVmFyQXJnczsKKyAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOwor
ICAgICAgICBtX29wSW5mbyA9IDA7CisgICAgICAgIG1fb3BJbmZvMiA9IDA7CisgICAgICAgIGNo
aWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydFBoYW50
b21Ub1BoYW50b21Mb2NhbCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9vcCA9PSBQaGFudG9t
ICYmIChjaGlsZDEoKS0+b3AoKSA9PSBQaGkgfHwgY2hpbGQxKCktPm9wKCkgPT0gU2V0TG9jYWwg
fHwgY2hpbGQxKCktPm9wKCkgPT0gU2V0QXJndW1lbnQpKTsKQEAgLTE0NDIsNiArMTQ1NCwyNyBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBpc0FjdGl2
YXRpb25BbGxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVB
Y3RpdmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlz
UGhhbnRvbUFjdGl2YXRpb25BbGxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3Ao
KSkgeworICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGlzUGhhbnRvbUFsbG9jYXRpb24oKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC0xNDQ5LDYgKzE0ODIsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlv
bjoKKyAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDUyMWQxM2QuLjlkZjk5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI1Myw2ICsy
NTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlh
bGl6ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNy
byhQaGFudG9tTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9k
ZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIG1p
c2Mgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQnJlYWtwb2ludCwgTm9kZU11c3RHZW5lcmF0
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggZDBiZmUxNC4uZmQyNjY2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC01MTcsNiArNTE3LDE1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOiB7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldC0+aXNQaGFudG9tQWN0aXZh
dGlvbkFsbG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9QdXRDbG9zdXJlVmFySGludCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwpAQCAtNTgwLDEzICs1ODks
NDMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcm9tb3RlZEhlYXBMb2NhdGlvbihBY3RpdmF0aW9uU2NvcGVQTG9jLCBub2RlKS5jcmVhdGVI
aW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmln
aW4sIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24oKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oQWN0aXZhdGlvblNjb3BlUExvYywgbm9kZSkuY3JlYXRl
SGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3Jp
Z2luLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLm5vZGUoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBkYXRhLm1f
cHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9t
b3RlZEhlYXBMb2NhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENs
b3N1cmVWYXJQTG9jLCBub2RlLCBpZGVudGlmaWVyTnVtYmVyKS5jcmVhdGVIaW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCBpICsgMSkubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgICAg
ICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazogewogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKHRhcmdldCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQtPmlzUGhhbnRvbU9iamVjdEFsbG9jYXRp
b24oKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5z
KHRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9t
KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTc3Nyw2ICs4MTYsOCBA
QCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNh
c2UgTmV3RnVuY3Rpb246CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
OgogICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kb1Rv
Q2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgbm9kZSwKQEAgLTc4NSwyOCArODI2LDI5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOworICAgICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgICAgICBpZiAoIW1fZ3JhcGguc3ltYm9s
VGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2luZ2xldG9uU2NvcGUoKS0+aXNTdGls
bFZhbGlkKCkpCisgICAgICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOwogICAgICAgICAgICAg
bV9ncmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAg
ICAgICBbJl0gKEVkZ2UgZWRnZSkgewogICAgICAgICAgICAgICAgICAgICBlc2NhcGUoZWRnZS5u
b2RlKCkpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBQaGFudG9tOgog
ICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CisgICAgICAgIGNhc2Ug
U3RvcmVCYXJyaWVyOgorICAgICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICAgICAg
Y2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zm
c2V0OgotICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKLSAgICAgICAgY2FzZSBTdG9yZUJhcnJp
ZXJXaXRoTnVsbENoZWNrOiB7CisgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6
IHsKICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAg
ICAgICAgICAgIGlmICghdGFyZ2V0LT5pc09iamVjdEFsbG9jYXRpb24oKSkKICAgICAgICAgICAg
ICAgICBlc2NhcGUodGFyZ2V0KTsKQEAgLTgyMiw2ICs4NjQsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKS5ub2RlKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6IHsKKyAgICAgICAgICAg
IE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgIGlmICgh
dGFyZ2V0LT5pc0FjdGl2YXRpb25BbGxvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBlc2Nh
cGUodGFyZ2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGls
ZDIoKS5ub2RlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgICAgICAgICAvLyBGSVhNRTog
SW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcy4gSXQncyBqdXN0
IGEgbWF0dGVyIG9mCkBAIC04NzEsNiArOTIyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZXNjYXBlZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZh
dGlvbjogeworICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmFkZCgpOworCisgICAgICAgICAgICBy
ZXN1bHQgPSBtX2dyYXBoLmFkZE5vZGUoCisgICAgICAgICAgICAgICAgZXNjYXBlZS0+cHJlZGlj
dGlvbigpLCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwKKyAgICAg
ICAgICAgICAgICBOb2RlT3JpZ2luKAorICAgICAgICAgICAgICAgICAgICBlc2NhcGVlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgIHdoZXJlLT5vcmlnaW4uZm9yRXhpdCks
CisgICAgICAgICAgICAgICAgT3BJbmZvKGRhdGEpLCBPcEluZm8oKSwgMCwgMCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgZXNjYXBlZSwgIkJhZCBlc2NhcGVlIG9wIik7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTkzMCw2ICs5OTQsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
IHsKKyAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5v
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0
Q2hpbGQgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpOworCisgICAgICAgICAgICBW
ZWN0b3I8UHJvbW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxs
b2NhdGlvbi5nZXQoZXNjYXBlZSk7CisKKyAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9u
IHNjb3BlKEFjdGl2YXRpb25TY29wZVBMb2MsIGVzY2FwZWUpOworICAgICAgICAgICAgQVNTRVJU
KGxvY2F0aW9ucy5jb250YWlucyhzY29wZSkpOworCisgICAgICAgICAgICBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uYXBwZW5kKEVkZ2UocmVzb2x2ZShibG9jaywgc2NvcGUpLCBLbm93bkNlbGxV
c2UpKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvY2F0aW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobG9jYXRpb25zW2ldLmtpbmQo
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQWN0aXZhdGlvblNjb3BlUExvYzogeworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25zW2ldID09IHNjb3BlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2Fz
ZSBDbG9zdXJlVmFyUExvYzogeworICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJl
c29sdmUoYmxvY2ssIGxvY2F0aW9uc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS0+b3AoKSA9PSBCb3R0b21WYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgICAgIGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJv
cGVydHlWYWx1ZShsb2NhdGlvbnNbaV0uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBsb2NhdGlv
biBraW5kIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBub2RlLT5jaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoCisgICAgICAgICAgICAgICAgICAgIEFk
amFjZW5jeUxpc3Q6OlZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICBmaXJzdENoaWxkLCBt
X2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246IHsKICAgICAg
ICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFBy
b21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24u
Z2V0KGVzY2FwZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5ZGYzMGYxLi4zNjkxYzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTQzLDYgKzU0Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CkBAIC01NTAsNiArNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBQdXRIaW50OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAg
ICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgY2FzZSBLaWxs
U3RhY2s6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggNzcxNTY3Yy4u
NTk4NTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHAKQEAgLTkwLDYgKzkwLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBQcm9tb3RlZExvY2F0aW9uS2luZCBraW5kKQogICAgIGNhc2Ug
RnVuY3Rpb25BY3RpdmF0aW9uUExvYzoKICAgICAgICAgb3V0LnByaW50KCJGdW5jdGlvbkFjdGl2
YXRpb25QTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQWN0aXZhdGlvblNjb3Bl
UExvYzoKKyAgICAgICAgb3V0LnByaW50KCJBY3RpdmF0aW9uU2NvcGVQTG9jIik7CisgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CisgICAgICAgIG91dC5wcmludCgi
Q2xvc3VyZVZhclBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4IDUxZjdiOWUuLmYxOGM1MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0
aW9uLmgKQEAgLTQ0LDYgKzQ0LDggQEAgZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCisg
ICAgQWN0aXZhdGlvblNjb3BlUExvYywKKyAgICBDbG9zdXJlVmFyUExvYywKIH07CiAKIGNsYXNz
IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWE1YTcxYy4uZjRiMDc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI3Myw5ICsyNzMsMTEg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFy
Z3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBkNDU1NmM0Li41NGQwMzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTQ2NjAsOSArNDY2MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVk
aWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxp
emVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3Rh
Y2s6CiAgICAgY2FzZSBHZXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGU4NTJmNzIuLjMzNDNhMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
NDc0NSwxMCArNDc0NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbjoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3
T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2Ug
UHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggNTNlNzI4MS4uMWRiM2E1
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTQ1Mywx
MCArNDUzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRz
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21D
cmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBjYXNl
IEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDI4ZjU0YzguLjFlNzU3
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTE4MSw5ICsxODEsMTEgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRl
QWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUlt
bWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJp
YWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoK
ICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCmluZGV4IGY1MWYyZjYuLjNkODVlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC04NDUsNiArODQ1LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVN
YXRlcmlhbGl6ZU5ld09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbigpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC04NTIsNiArODU1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBj
YXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RB
cmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAg
Y2FzZSBQdXRIaW50OgpAQCAtNTAzOCw2ICs1MDQyLDU1IEBAIHByaXZhdGU6CiAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgcmVzdWx0cykpOwogICAgIH0KIAorICAg
IHZvaWQgY29tcGlsZU1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbigpCisgICAgeworICAgICAg
ICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbV9ub2RlLT5vYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhKCk7CisKKyAgICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gdmFsdWVzOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEgKyBpKSkpOworCisgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwo
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHRh
YmxlID0gbV9ncmFwaC5zeW1ib2xUYWJsZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisKKyAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk1hdGVyaWFsaXpl
Q3JlYXRlQWN0aXZhdGlvbiBzbG93IHBhdGgiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uIGNvbnRpbnVhdGlvbiIpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CisKKyAgICAgICAgTFZhbHVlIGZh
c3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0xleGljYWxFbnZpcm9ubWVudD4oCisgICAgICAg
ICAgICBKU0xleGljYWxFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUodGFibGUpLCBzdHJ1Y3R1
cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKworICAgICAgICBtX291dC5zdG9yZVB0
cihzY29wZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU1Njb3BlX25leHQpOworICAgICAgICBtX291
dC5zdG9yZVB0cih3ZWFrUG9pbnRlcih0YWJsZSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNTeW1i
b2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRhYmxlLT5zY29wZVNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBtX291dC5zdG9y
ZTY0KAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpKSwKKyAgICAgICAgICAgICAgICBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRW52
aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwo
CisgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRp
cmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAg
c2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSAgbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOworICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CisgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0LmludFB0
ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgbV9vdXQu
c3RvcmU2NCh2YWx1ZXNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92
YXJpYWJsZXNbZGF0YS5tX3Byb3BlcnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAg
ICAgIH0KKyAgICAgICAgc2V0SlNWYWx1ZShhY3RpdmF0aW9uKTsKKyAgICB9CisKICNpZiBFTkFC
TEUoRlRMX05BVElWRV9DQUxMX0lOTElOSU5HKQogICAgIExWYWx1ZSBnZXRGdW5jdGlvbkJ5U3lt
Ym9sKGNvbnN0IENTdHJpbmcgc3ltYm9sKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IGFmNTdmMjcuLjg5NmNjZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTExMSw2ICsxMTIs
MzYgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxp
emVPYmplY3RJbk9TUigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hlcmUg
dGhlIHNjb3BlIGlzCisgICAgICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBt
YXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5sb2NhdGlvbigpICE9IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEFjdGl2YXRpb25TY29w
ZVBMb2MpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc2NvcGUgPSBq
c0Nhc3Q8SlNTY29wZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgfQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZSk7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKAor
ICAgICAgICAgICAgbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKSwgZXhlYy0+Y29kZUJsb2NrKCkp
OworICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworCisgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50
KiByZXN1bHQgPSBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHNj
b3BlLCB0YWJsZSk7CisKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIHBvcHVsYXRlIHRo
ZSBhY3RpdmF0aW9uIHdpdGgKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0
aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25zdCBFeGl0
UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtp
XTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBDbG9zdXJl
VmFyUExvYykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgcmVzdWx0
LT52YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0
KGV4ZWMtPnZtKCksIHJlc3VsdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CiAgICAg
ICAgIGlmICghbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251910</attachid>
            <date>2015-04-28 18:26:32 -0700</date>
            <delta_ts>2015-04-30 17:50:24 -0700</delta_ts>
            <desc>Seems to be working</desc>
            <filename>sink_create_activation.patch</filename>
            <type>text/plain</type>
            <size>26856</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstaHVn
ZS1hY3RpdmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lu
ay1odWdlLWFjdGl2YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzZjNjZhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbmstaHVnZS1hY3RpdmF0aW9uLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9u
IGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYWxwaGEpIHsKKyAgICB2YXIgeDAgPSAwOworICAg
IHZhciB4MSA9IDA7CisgICAgdmFyIHgyID0gMDsKKyAgICB2YXIgeDMgPSAwOworICAgIHZhciB4
NCA9IDA7CisgICAgdmFyIHg1ID0gMDsKKyAgICB2YXIgeDYgPSAwOworICAgIHZhciB4NyA9IDA7
CisgICAgdmFyIHg4ID0gMDsKKyAgICB2YXIgeDkgPSAwOworICAgIHZhciB4MTAgPSAwOworICAg
IHZhciB4MTEgPSAwOworICAgIHZhciB4MTIgPSAwOworICAgIHZhciB4MTMgPSAwOworICAgIHZh
ciB4MTQgPSAwOworICAgIHZhciB4MTUgPSAwOworICAgIHZhciB4MTYgPSAwOworICAgIHZhciB4
MTcgPSAwOworICAgIHZhciB4MTggPSAwOworICAgIHZhciB4MTkgPSAwOworICAgIGlmIChhbHBo
YSkgeworICAgICAgICBiYXIoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAo
eDAgKyB4MSArIHgyICsgeDMgKyB4NCArIHg1ICsgeDYgKyB4NyArIHg4ICsgeDkgKyB4MTAgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgeDExICsgeDEyICsgeDEzICsgeDE0ICsgeDE1ICsgeDE2
ICsgeDE3ICsgeDE4ICsgeDE5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
IHgxNzsKKyAgICB9CisgICAgcmV0dXJuIHgxMjsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgdmFy
IHJlc3VsdCA9IGZvbyghKGkgJSAxMDAwKSk7CisgICAgaWYgKHJlc3VsdCAhPT0gMCkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCB1bmRlZmluZWQsIGdvdCAiICsgcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IGE4YzA3OTYuLjgxNDBjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTEzNjUsNiArMTM2NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IAogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlv
bjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURp
cmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2Fz
ZSBCb3R0b21WYWx1ZToKQEAgLTEzODcsOCArMTM4OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHNldCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAg
Y2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0KAogICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDM4
NTc5ZS4uMzRmM2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTg1OCw2ICs4NTgsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CisgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIHJlYWQoSGVh
cE9iamVjdENvdW50KTsKICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDQ4NzFm
MGEuLmE5ZTMwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAg
LTE5OCw2ICsxOTgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpAQCAtMjM2LDYgKzIzNyw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEVu
dW1lcmF0b3JHZW5lcmljUG5hbWU6CiAgICAgY2FzZSBUb0luZGV4U3RyaW5nOgogICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlP
ZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBmNzRlY2JkLi43NjEzZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEwNDEsNiArMTA0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Qm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoK
QEAgLTEwNDgsNiArMTA0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAg
ICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXgg
MTBlMTc1Yi4uY2Q0ZGZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBA
IC0xNDksNiArMTQ5LDE0IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXRIaW50KCkK
ICAgICAgICAgY2hpbGQyKCkubm9kZSgpLCBjaGlsZDMoKS5ub2RlKCkpOwogfQogCit2b2lkIE5v
ZGU6OmNvbnZlcnRUb1B1dENsb3N1cmVWYXJIaW50KCkKK3sKKyAgICBBU1NFUlQobV9vcCA9PSBQ
dXRDbG9zdXJlVmFyKTsKKyAgICBjb252ZXJ0VG9QdXRIaW50KAorICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihDbG9zdXJlVmFyUExvYywgc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSks
CisgICAgICAgIGNoaWxkMSgpLm5vZGUoKSwgY2hpbGQyKCkubm9kZSgpKTsKK30KKwogUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgTm9kZTo6cHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoKQog
ewogICAgIHJldHVybiBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihzdGF0aWNfY2FzdDxQcm9t
b3RlZExvY2F0aW9uS2luZD4obV9vcEluZm8pLCBtX29wSW5mbzIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCA2NTZmZDVmLi44M2FiNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtNTcwLDYgKzU3MCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAg
ICB2b2lkIGNvbnZlcnRUb1B1dEJ5T2Zmc2V0SGludCgpOwogICAgIHZvaWQgY29udmVydFRvUHV0
U3RydWN0dXJlSGludChOb2RlKiBzdHJ1Y3R1cmUpOworICAgIHZvaWQgY29udmVydFRvUHV0Q2xv
c3VyZVZhckhpbnQoKTsKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdPYmplY3Qo
KQogICAgIHsKQEAgLTU5Miw2ICs1OTMsMTcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjaGls
ZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRUb1BoYW50
b21DcmVhdGVBY3RpdmF0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IENyZWF0
ZUFjdGl2YXRpb24gfHwgbV9vcCA9PSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOworICAg
ICAgICBtX29wID0gUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb247CisgICAgICAgIG1fZmxhZ3MgJj0g
fk5vZGVIYXNWYXJBcmdzOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7Cisg
ICAgICAgIG1fb3BJbmZvID0gMDsKKyAgICAgICAgbV9vcEluZm8yID0gMDsKKyAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0UGhhbnRv
bVRvUGhhbnRvbUxvY2FsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IFBoYW50b20g
JiYgKGNoaWxkMSgpLT5vcCgpID09IFBoaSB8fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRMb2NhbCB8
fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRBcmd1bWVudCkpOwpAQCAtMTQ0Miw2ICsxNDU0LDI3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29sIGlzQWN0aXZh
dGlvbkFsbG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAg
IGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFj
dGl2YXRpb246CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaXNQ
aGFudG9tQWN0aXZhdGlvbkFsbG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgp
KSB7CisgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgaXNQaGFudG9tQWxsb2NhdGlvbigpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKQEAgLTE0NDksNiArMTQ4Miw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNl
IFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNTIxZDEzZC4uOWRmOTlk
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjUzLDYgKzI1
Myw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDaGVja1N0
cnVjdHVyZUltbWVkaWF0ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFs
aXplTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3Jv
KFBoYW50b21OZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKFBoYW50b21DcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbWlz
YyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhCcmVha3BvaW50LCBOb2RlTXVzdEdlbmVyYXRl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCBkMGJmZTE0Li5mZDI2NjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTUxNyw2ICs1MTcsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0LT5pc1BoYW50b21BY3RpdmF0
aW9uQWxsb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1B1dENsb3N1cmVWYXJIaW50KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAgICAgICAgICAgICAgICAg
ICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CkBAIC01ODAsMTMgKzU4OSw0
MyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkSGVhcExvY2F0aW9uKEFjdGl2YXRpb25TY29wZVBMb2MsIG5vZGUpLmNyZWF0ZUhp
bnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPm9yaWdp
biwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcm9tb3RlZEhlYXBMb2NhdGlvbihBY3RpdmF0aW9uU2NvcGVQTG9jLCBub2RlKS5jcmVhdGVI
aW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmln
aW4sIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkubm9kZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IGRhdGEubV9w
cm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21v
dGVkSGVhcExvY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xv
c3VyZVZhclBMb2MsIG5vZGUsIGlkZW50aWZpZXJOdW1iZXIpLmNyZWF0ZUhpbnQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IGkgKyAxKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21DcmVhdGVBY3RpdmF0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7CiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlv
bigpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMo
dGFyZ2V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20o
KTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNzc3LDYgKzgxNiw4IEBA
IHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIE5l
d09iamVjdDoKICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAgY2Fz
ZSBOZXdGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CiAgICAgICAgICAgICBtX2dyYXBoLmRvVG9D
aGlsZHJlbigKICAgICAgICAgICAgICAgICBub2RlLApAQCAtNzg1LDI4ICs4MjYsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNhc2UgTmV3RnVuY3Rpb246Ci0gICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CisgICAgICAg
IGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5zeW1ib2xU
YWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zaW5nbGV0b25TY29wZSgpLT5pc1N0aWxs
VmFsaWQoKSkKKyAgICAgICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CiAgICAgICAgICAgICBt
X2dyYXBoLmRvVG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAg
ICAgIFsmXSAoRWRnZSBlZGdlKSB7CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdlLm5v
ZGUoKSk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFBoYW50b206CiAg
ICAgICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIGNhc2UgUHV0SGludDoKKyAgICAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CisgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6Ci0gICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZz
ZXQ6Ci0gICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgotICAgICAgICBjYXNlIFN0b3JlQmFycmll
cldpdGhOdWxsQ2hlY2s6IHsKKyAgICAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDog
ewogICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAg
ICAgICAgICAgaWYgKCF0YXJnZXQtPmlzT2JqZWN0QWxsb2NhdGlvbigpKQogICAgICAgICAgICAg
ICAgIGVzY2FwZSh0YXJnZXQpOwpAQCAtODIyLDYgKzg2NCwxNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMygpLm5vZGUoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorCisgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjogeworICAgICAgICAgICAg
Tm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAgICAgICAgICAgaWYgKCF0
YXJnZXQtPmlzQWN0aXZhdGlvbkFsbG9jYXRpb24oKSkgeworICAgICAgICAgICAgICAgIGVzY2Fw
ZSh0YXJnZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxk
MigpLm5vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICAgICAgICAgIC8vIEZJWE1FOiBJ
biB0aGUgZnV0dXJlIHdlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlzLiBJdCdzIGp1c3Qg
YSBtYXR0ZXIgb2YKQEAgLTg3MSw2ICs5MjIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBlc2NhcGVlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNl
IENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uOiB7CisgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9n
cmFwaC5tX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuYWRkKCk7CisKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1fZ3JhcGguYWRkTm9kZSgKKyAgICAgICAgICAgICAgICBlc2NhcGVlLT5wcmVkaWN0
aW9uKCksIE5vZGU6OlZhckFyZywgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLAorICAgICAg
ICAgICAgICAgIE5vZGVPcmlnaW4oCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZWUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUtPm9yaWdpbi5mb3JFeGl0KSwK
KyAgICAgICAgICAgICAgICBPcEluZm8oZGF0YSksIE9wSW5mbygpLCAwLCAwKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBlc2NhcGVlLCAiQmFkIGVzY2FwZWUgb3AiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTMwLDYgKzk5NCw0NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjog
eworICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKworICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RD
aGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNGb3JBbGxv
Y2F0aW9uLmdldChlc2NhcGVlKTsKKworICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24g
c2NvcGUoQWN0aXZhdGlvblNjb3BlUExvYywgZXNjYXBlZSk7CisgICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb25zLmNvbnRhaW5zKHNjb3BlKSk7CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV92YXJB
cmdDaGlsZHJlbi5hcHBlbmQoRWRnZShyZXNvbHZlKGJsb2NrLCBzY29wZSksIEtub3duQ2VsbFVz
ZSkpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChsb2NhdGlvbnNbaV0ua2luZCgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBY3RpdmF0aW9uU2NvcGVQTG9jOiB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnNbaV0gPT0gc2NvcGUpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNl
IENsb3N1cmVWYXJQTG9jOiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gcmVz
b2x2ZShibG9jaywgbG9jYXRpb25zW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
LT5vcCgpID09IEJvdHRvbVZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Qcm9w
ZXJ0eVZhbHVlKGxvY2F0aW9uc1tpXS5pbmZvKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIGxvY2F0aW9u
IGtpbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG5vZGUtPmNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgKKyAgICAgICAgICAgICAgICAgICAgQWRq
YWNlbmN5TGlzdDo6VmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQsIG1f
Z3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCkgLSBmaXJzdENoaWxkKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjogewogICAgICAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UHJv
bW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxsb2NhdGlvbi5n
ZXQoZXNjYXBlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDlkZjMwZjEuLjM2OTFjODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NDMsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVj
dDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgICAgIGNhc2UgUGhhbnRv
bUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoK
ICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbDoKQEAgLTU1MCw2ICs1NTEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVh
dGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICBjYXNlIEtpbGxT
dGFjazoKICAgICAgICAgY2FzZSBHZXRTdGFjazogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAppbmRleCA3NzE1NjdjLi41
OTg1NGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21v
dGVkSGVhcExvY2F0aW9uLmNwcApAQCAtOTAsNiArOTAsMTQgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFByb21vdGVkTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBG
dW5jdGlvbkFjdGl2YXRpb25QTG9jOgogICAgICAgICBvdXQucHJpbnQoIkZ1bmN0aW9uQWN0aXZh
dGlvblBMb2MiKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBBY3RpdmF0aW9uU2NvcGVQ
TG9jOgorICAgICAgICBvdXQucHJpbnQoIkFjdGl2YXRpb25TY29wZVBMb2MiKTsKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FzZSBDbG9zdXJlVmFyUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJD
bG9zdXJlVmFyUExvYyIpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKaW5kZXggNTFmN2I5ZS4uZjE4YzUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uaApAQCAtNDQsNiArNDQsOCBAQCBlbnVtIFByb21vdGVkTG9jYXRpb25LaW5kIHsKIAogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsCiAgICAgRnVuY3Rpb25BY3RpdmF0aW9uUExvYywKKyAg
ICBBY3RpdmF0aW9uU2NvcGVQTG9jLAorICAgIENsb3N1cmVWYXJQTG9jLAogfTsKIAogY2xhc3Mg
UHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBhYTVhNzFjLi5mNGIwNzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjczLDkgKzI3MywxMSBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb0luZGV4U3RyaW5nOgogICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJn
dW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGQ0NTU2YzQuLjU0ZDAzNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNDY2MCw5ICs0NjYwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRp
YXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgY2FzZSBNYXRlcmlhbGl6
ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFj
azoKICAgICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTg1MmY3Mi4uMzM0M2ExYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00
NzQ1LDEwICs0NzQ1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgUHV0SGludDoKICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CisgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQ
dXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBjYXNlIEdldFN0YWNrOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCA1M2U3MjgxLi4xZGIzYTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNDUzLDEw
ICs0NTMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6
CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5l
d09iamVjdDoKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2Ug
S2lsbFN0YWNrOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0U3RhY2s6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMjhmNTRjOC4uMWU3NTc1
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMTgxLDkgKzE4MSwxMSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVj
dDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVB
Y3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1t
ZWRpYXRlOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgY2FzZSBNYXRlcmlh
bGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAKaW5kZXggMDEzMmRjZS4uYjdmMDhkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTg0NSw2ICs4NDUsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZU1h
dGVyaWFsaXplTmV3T2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CisgICAgICAgICAgICBjb21waWxlTWF0ZXJpYWxp
emVDcmVhdGVBY3RpdmF0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTg1Miw2ICs4NTUsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgICAgIGNh
c2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBj
YXNlIFB1dEhpbnQ6CkBAIC01MDM5LDYgKzUwNDMsNTUgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0
SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCByZXN1bHRzKSk7CiAgICAgfQogCisgICAg
dm9pZCBjb21waWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKCkKKyAgICB7CisgICAgICAg
IE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBtX25vZGUtPm9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEoKTsKKworICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiB2YWx1ZXM7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG1fbm9kZSwgMSArIGkpKSk7CisKKyAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBTeW1ib2xUYWJsZSogdGFi
bGUgPSBtX2dyYXBoLnN5bWJvbFRhYmxlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKTsKKworICAgICAgICBM
QmFzaWNCbG9jayBzbG93UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b24gY29udGludWF0aW9uIikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKKworICAgICAgICBMVmFsdWUgZmFz
dE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEpTTGV4aWNhbEVudmlyb25tZW50PigKKyAgICAgICAg
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSh0YWJsZSksIHN0cnVjdHVy
ZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworCisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KHNjb3BlLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTU2NvcGVfbmV4dCk7CisgICAgICAgIG1fb3V0
LnN0b3JlUHRyKHdlYWtQb2ludGVyKHRhYmxlKSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU1N5bWJv
bFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGFibGUtPnNjb3BlU2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIG1fb3V0LnN0b3Jl
NjQoCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLAorICAgICAgICAgICAgICAgIGZhc3RPYmplY3QsIG1faGVhcHMuSlNFbnZp
cm9ubWVudFJlY29yZF92YXJpYWJsZXNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0T2JqZWN0KTsKKyAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQ
YXRoLCBjb250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgK
KyAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGly
ZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVyKHN0cnVjdHVyZSksCisgICAgICAgICAgICBz
Y29wZSwgd2Vha1BvaW50ZXIodGFibGUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jl
c3VsdCA9ICBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRy
LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBtX291dC5z
dG9yZTY0KHZhbHVlc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oZWFwcy5KU0Vudmlyb25tZW50UmVjb3JkX3Zh
cmlhYmxlc1tkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXJdKTsKKyAgICAg
ICAgfQorICAgICAgICBzZXRKU1ZhbHVlKGFjdGl2YXRpb24pOworICAgIH0KKwogI2lmIEVOQUJM
RShGVExfTkFUSVZFX0NBTExfSU5MSU5JTkcpCiAgICAgTFZhbHVlIGdldEZ1bmN0aW9uQnlTeW1i
b2woY29uc3QgQ1N0cmluZyBzeW1ib2wpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYWY1N2YyNy4uODk2Y2NkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIApAQCAtMTExLDYgKzExMiwz
NiBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6
ZU9iamVjdEluT1NSKAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGVyZSB0
aGUgc2NvcGUgaXMKKyAgICAgICAgSlNTY29wZSogc2NvcGUgPSBudWxscHRyOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGkt
LTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1h
dGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5
LmxvY2F0aW9uKCkgIT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoQWN0aXZhdGlvblNjb3Bl
UExvYykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzY29wZSA9IGpz
Q2FzdDxKU1Njb3BlKj4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlKTsKKworICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCisg
ICAgICAgICAgICBtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLCBleGVjLT5jb2RlQmxvY2soKSk7
CisgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKTsK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisKKyAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQq
IHJlc3VsdCA9IEpTTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgc2Nv
cGUsIHRhYmxlKTsKKworICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdG8gcG9wdWxhdGUgdGhl
IGFjdGl2YXRpb24gd2l0aAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRp
b24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQ
cm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ld
OworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IENsb3N1cmVW
YXJQTG9jKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICByZXN1bHQt
PnZhcmlhYmxlQXQoU2NvcGVPZmZzZXQocHJvcGVydHkubG9jYXRpb24oKS5pbmZvKCkpKS5zZXQo
ZXhlYy0+dm0oKSwgcmVzdWx0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIGNhc2UgUGhhbnRvbURp
cmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6IHsKICAgICAg
ICAgaWYgKCFtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNhbGxGcmFtZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hY3RpdmF0aW9uLXNp
bmstb3NyZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWN0aXZh
dGlvbi1zaW5rLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWQzYzRkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMKQEAgLTAsMCArMSwyNSBAQAordmFyIG4g
PSAxMDAwMDAwMDsKKworZnVuY3Rpb24gYmFyKCkgeyB9CisKK2Z1bmN0aW9uIGZvbyhiKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9IGZ1bmN0aW9uICh4KSB7IHJlc3VsdCA9
IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIGlmIChiKSB7
CisgICAgICAgICAgICBiYXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZv
byk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZv
byghKGkgJSAxMDApKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYWN0aXZhdGlvbi1zaW5rLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hY3RpdmF0aW9uLXNpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmYwMDAyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWN0aXZhdGlvbi1zaW5rLmpzCkBAIC0wLDAgKzEsMjQg
QEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK2Z1bmN0aW9uIGJhcihmKSB7IGYoMTApOyB9CisKK2Z1
bmN0aW9uIGZvbyhiKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIHNldCA9IGZ1bmN0
aW9uICh4KSB7IHJlc3VsdCA9IHg7IH0KKyAgICBpZiAoYikgeworICAgICAgICBiYXIoc2V0KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSAxMCkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFk
OiAiICsgcmVzdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgbjsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyghKGkgJSAxMDApKTsKKyAgICBp
ZiAocmVzdWx0ICE9IDApCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252123</attachid>
            <date>2015-04-30 17:50:24 -0700</date>
            <delta_ts>2015-05-04 16:01:17 -0700</delta_ts>
            <desc>Remove spurious assertion</desc>
            <filename>sink_create_activation.patch</filename>
            <type>text/plain</type>
            <size>26722</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstaHVn
ZS1hY3RpdmF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2lu
ay1odWdlLWFjdGl2YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzZjNjZhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3NpbmstaHVnZS1hY3RpdmF0aW9uLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9u
IGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYWxwaGEpIHsKKyAgICB2YXIgeDAgPSAwOworICAg
IHZhciB4MSA9IDA7CisgICAgdmFyIHgyID0gMDsKKyAgICB2YXIgeDMgPSAwOworICAgIHZhciB4
NCA9IDA7CisgICAgdmFyIHg1ID0gMDsKKyAgICB2YXIgeDYgPSAwOworICAgIHZhciB4NyA9IDA7
CisgICAgdmFyIHg4ID0gMDsKKyAgICB2YXIgeDkgPSAwOworICAgIHZhciB4MTAgPSAwOworICAg
IHZhciB4MTEgPSAwOworICAgIHZhciB4MTIgPSAwOworICAgIHZhciB4MTMgPSAwOworICAgIHZh
ciB4MTQgPSAwOworICAgIHZhciB4MTUgPSAwOworICAgIHZhciB4MTYgPSAwOworICAgIHZhciB4
MTcgPSAwOworICAgIHZhciB4MTggPSAwOworICAgIHZhciB4MTkgPSAwOworICAgIGlmIChhbHBo
YSkgeworICAgICAgICBiYXIoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAo
eDAgKyB4MSArIHgyICsgeDMgKyB4NCArIHg1ICsgeDYgKyB4NyArIHg4ICsgeDkgKyB4MTAgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgeDExICsgeDEyICsgeDEzICsgeDE0ICsgeDE1ICsgeDE2
ICsgeDE3ICsgeDE4ICsgeDE5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
IHgxNzsKKyAgICB9CisgICAgcmV0dXJuIHgxMjsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5s
aW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgdmFy
IHJlc3VsdCA9IGZvbyghKGkgJSAxMDAwKSk7CisgICAgaWYgKHJlc3VsdCAhPT0gMCkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCB1bmRlZmluZWQsIGdvdCAiICsgcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDY5MGIyOGYuLjVmNjFhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTE0OTUsNiArMTQ5NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IAogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlv
bjoKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURp
cmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2Fz
ZSBCb3R0b21WYWx1ZToKQEAgLTE1MTcsOCArMTUxOCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHNldCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAg
Y2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0KAogICAgICAgICAgICAgbV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDM4
NTc5ZS4uMzRmM2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTg1OCw2ICs4NTgsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CisgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIHJlYWQoSGVh
cE9iamVjdENvdW50KTsKICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDQ4NzFm
MGEuLmE5ZTMwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAg
LTE5OCw2ICsxOTgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpAQCAtMjM2LDYgKzIzNyw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEVu
dW1lcmF0b3JHZW5lcmljUG5hbWU6CiAgICAgY2FzZSBUb0luZGV4U3RyaW5nOgogICAgIGNhc2Ug
TWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlP
ZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCA2NTJjYjZhLi42ZWRiYjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEwMzcsNiArMTAzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Qm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoK
QEAgLTEwNDQsNiArMTA0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAg
ICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXgg
YjUzMzRjMi4uNWE3Y2ViZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBA
IC0xNTgsNiArMTU4LDE0IEBAIHZvaWQgTm9kZTo6Y29udmVydFRvUHV0QnlPZmZzZXRIaW50KCkK
ICAgICAgICAgY2hpbGQyKCkubm9kZSgpLCBjaGlsZDMoKS5ub2RlKCkpOwogfQogCit2b2lkIE5v
ZGU6OmNvbnZlcnRUb1B1dENsb3N1cmVWYXJIaW50KCkKK3sKKyAgICBBU1NFUlQobV9vcCA9PSBQ
dXRDbG9zdXJlVmFyKTsKKyAgICBjb252ZXJ0VG9QdXRIaW50KAorICAgICAgICBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihDbG9zdXJlVmFyUExvYywgc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSks
CisgICAgICAgIGNoaWxkMSgpLm5vZGUoKSwgY2hpbGQyKCkubm9kZSgpKTsKK30KKwogUHJvbW90
ZWRMb2NhdGlvbkRlc2NyaXB0b3IgTm9kZTo6cHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoKQog
ewogICAgIHJldHVybiBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihzdGF0aWNfY2FzdDxQcm9t
b3RlZExvY2F0aW9uS2luZD4obV9vcEluZm8pLCBtX29wSW5mbzIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCBmYjQ0NWI3Li44MjQ3MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtNTYyLDYgKzU2Miw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAg
ICB2b2lkIGNvbnZlcnRUb1B1dEJ5T2Zmc2V0SGludCgpOwogICAgIHZvaWQgY29udmVydFRvUHV0
U3RydWN0dXJlSGludChOb2RlKiBzdHJ1Y3R1cmUpOworICAgIHZvaWQgY29udmVydFRvUHV0Q2xv
c3VyZVZhckhpbnQoKTsKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdPYmplY3Qo
KQogICAgIHsKQEAgLTU4NCw2ICs1ODUsMTcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjaGls
ZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRUb1BoYW50
b21DcmVhdGVBY3RpdmF0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IENyZWF0
ZUFjdGl2YXRpb24gfHwgbV9vcCA9PSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOworICAg
ICAgICBtX29wID0gUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb247CisgICAgICAgIG1fZmxhZ3MgJj0g
fk5vZGVIYXNWYXJBcmdzOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7Cisg
ICAgICAgIG1fb3BJbmZvID0gMDsKKyAgICAgICAgbV9vcEluZm8yID0gMDsKKyAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0UGhhbnRv
bVRvUGhhbnRvbUxvY2FsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IFBoYW50b20g
JiYgKGNoaWxkMSgpLT5vcCgpID09IFBoaSB8fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRMb2NhbCB8
fCBjaGlsZDEoKS0+b3AoKSA9PSBTZXRBcmd1bWVudCkpOwpAQCAtMTQzNCw2ICsxNDQ2LDI3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29sIGlzQWN0aXZh
dGlvbkFsbG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAg
IGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFj
dGl2YXRpb246CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaXNQ
aGFudG9tQWN0aXZhdGlvbkFsbG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgp
KSB7CisgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgaXNQaGFudG9tQWxsb2NhdGlvbigpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKQEAgLTE0NDEsNiArMTQ3NCw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNl
IFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggYjlmMDI1Zi4uNzVjODg0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjU0LDYgKzI1
NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDaGVja1N0
cnVjdHVyZUltbWVkaWF0ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFs
aXplTmV3T2JqZWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3Jv
KFBoYW50b21OZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKFBoYW50b21DcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgbWlz
YyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhCcmVha3BvaW50LCBOb2RlTXVzdEdlbmVyYXRl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAyOWQ5NzQwLi5iYjgzOWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTUxNyw2ICs1MTcsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIFB1dENsb3N1cmVWYXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyh0YXJnZXQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0LT5pc1BoYW50b21BY3RpdmF0
aW9uQWxsb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b1B1dENsb3N1cmVWYXJIaW50KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewogICAgICAgICAgICAgICAgICAg
ICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CkBAIC01ODAsMTEgKzU4OSw0
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMobm9kZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByb21vdGVkSGVhcExvY2F0aW9uKEFjdGl2YXRpb25TY29wZVBMb2MsIG5vZGUpLmNyZWF0ZUhp
bnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUtPm9yaWdp
biwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcm9tb3RlZEhlYXBMb2NhdGlvbihBY3RpdmF0aW9uU2NvcGVQTG9jLCBub2RlKS5jcmVhdGVI
aW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmln
aW4sIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkubm9kZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbm9kZS0+b2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IGRhdGEubV9w
cm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21v
dGVkSGVhcExvY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xv
c3VyZVZhclBMb2MsIG5vZGUsIGlkZW50aWZpZXJOdW1iZXIpLmNyZWF0ZUhpbnQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IGkgKyAxKS5ub2RlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21DcmVhdGVBY3RpdmF0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7CiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnModGFyZ2V0KSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldC0+aXNQaGFudG9tT2JqZWN0QWxsb2NhdGlv
bigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzc3LDYgKzgxNyw4
IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNl
IE5ld09iamVjdDoKICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKKyAgICAgICAg
Y2FzZSBOZXdGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CiAgICAgICAgICAgICBtX2dyYXBoLmRv
VG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICBub2RlLApAQCAtNzg1LDI3ICs4MjcsMjggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGNhc2UgTmV3RnVuY3Rpb246Ci0gICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CisgICAg
ICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5zeW1i
b2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zaW5nbGV0b25TY29wZSgpLT5pc1N0
aWxsVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBzaW5rQ2FuZGlkYXRlKCk7CiAgICAgICAgICAg
ICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAg
ICAgICAgIFsmXSAoRWRnZSBlZGdlKSB7CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZShlZGdl
Lm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIENoZWNrOgog
ICAgICAgICBjYXNlIFB1dEhpbnQ6CisgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgorICAgICAg
ICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToK
ICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgotICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICBjYXNlIFN0
b3JlQmFycmllcjoKLSAgICAgICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7Cisg
ICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKICAgICAgICAgICAgIE5vZGUq
IHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgIGlmICghdGFyZ2V0
LT5pc09iamVjdEFsbG9jYXRpb24oKSkKICAgICAgICAgICAgICAgICBlc2NhcGUodGFyZ2V0KTsK
QEAgLTgyMSw2ICs4NjQsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVzY2FwZShub2RlLT5j
aGlsZDMoKS5ub2RlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6IHsKKyAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUt
PmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgIGlmICghdGFyZ2V0LT5pc0FjdGl2YXRpb25B
bGxvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBlc2NhcGUodGFyZ2V0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE11bHRp
UHV0QnlPZmZzZXQ6CiAgICAgICAgICAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSB3ZSBzaG91
bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcy4gSXQncyBqdXN0IGEgbWF0dGVyIG9mCkBAIC04NzAs
NiArOTIyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXNjYXBlZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgor
ICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICAgICAg
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRlcmlh
bGl6YXRpb25EYXRhLmFkZCgpOworCisgICAgICAgICAgICByZXN1bHQgPSBtX2dyYXBoLmFkZE5v
ZGUoCisgICAgICAgICAgICAgICAgZXNjYXBlZS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJBcmcs
IE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBOb2RlT3JpZ2lu
KAorICAgICAgICAgICAgICAgICAgICBlc2NhcGVlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgIHdoZXJlLT5vcmlnaW4uZm9yRXhpdCksCisgICAgICAgICAgICAgICAgT3BJ
bmZvKGRhdGEpLCBPcEluZm8oKSwgMCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgZXNj
YXBlZSwgIkJhZCBlc2NhcGVlIG9wIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTkyOSw2ICs5
OTQsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgICAgIE9iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhKCk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGQgPSBtX2dyYXBoLm1fdmFy
QXJnQ2hpbGRyZW4uc2l6ZSgpOworCisgICAgICAgICAgICBWZWN0b3I8UHJvbW90ZWRIZWFwTG9j
YXRpb24+IGxvY2F0aW9ucyA9IG1fbG9jYXRpb25zRm9yQWxsb2NhdGlvbi5nZXQoZXNjYXBlZSk7
CisKKyAgICAgICAgICAgIFByb21vdGVkSGVhcExvY2F0aW9uIHNjb3BlKEFjdGl2YXRpb25TY29w
ZVBMb2MsIGVzY2FwZWUpOworICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5jb250YWlucyhz
Y29wZSkpOworCisgICAgICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKEVk
Z2UocmVzb2x2ZShibG9jaywgc2NvcGUpLCBLbm93bkNlbGxVc2UpKTsKKworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvY2F0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAobG9jYXRpb25zW2ldLmtpbmQoKSkgeworICAgICAgICAgICAgICAg
IGNhc2UgQWN0aXZhdGlvblNjb3BlUExvYzogeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb25zW2ldID09IHNjb3BlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyUExvYzogewor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IHJlc29sdmUoYmxvY2ssIGxvY2F0aW9u
c1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+b3AoKSA9PSBCb3R0b21WYWx1
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAg
IGRhdGEubV9wcm9wZXJ0aWVzLmFwcGVuZChQaGFudG9tUHJvcGVydHlWYWx1ZShsb2NhdGlvbnNb
aV0uaW5mbygpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJl
bi5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBsb2NhdGlvbiBraW5kIik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBub2RlLT5jaGlsZHJlbiA9IEFk
amFjZW5jeUxpc3QoCisgICAgICAgICAgICAgICAgICAgIEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxl
LAorICAgICAgICAgICAgICAgICAgICBmaXJzdENoaWxkLCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246IHsKICAgICAgICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBs
b2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAppbmRleCBmZGI4ZmRhLi4zMWQ2NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtNTQzLDYgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQm9vbGVhblRv
TnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CkBAIC01
NTAsNiArNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRIaW50OgogICAgICAgICBj
YXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3
T2JqZWN0OgorICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAg
ICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgIGNhc2Ug
R2V0U3RhY2s6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggNzcxNTY3Yy4uNTk4NTRmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAK
QEAgLTkwLDYgKzkwLDE0IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQ
cm9tb3RlZExvY2F0aW9uS2luZCBraW5kKQogICAgIGNhc2UgRnVuY3Rpb25BY3RpdmF0aW9uUExv
YzoKICAgICAgICAgb3V0LnByaW50KCJGdW5jdGlvbkFjdGl2YXRpb25QTG9jIik7CiAgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgQWN0aXZhdGlvblNjb3BlUExvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJBY3RpdmF0aW9uU2NvcGVQTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2Ug
Q2xvc3VyZVZhclBMb2M6CisgICAgICAgIG91dC5wcmludCgiQ2xvc3VyZVZhclBMb2MiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBM
b2NhdGlvbi5oCmluZGV4IDUxZjdiOWUuLmYxOGM1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgZW51bSBQcm9tb3RlZExvY2F0aW9uS2luZCB7CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGVQ
TG9jLAogICAgIEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExv
YywKKyAgICBDbG9zdXJlVmFyUExvYywKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggYWE1YTcxYy4uZjRiMDc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI3Myw5ICsyNzMsMTEgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAg
ICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVB
Y3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBo
YW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCBmZDlmMzUwLi4yOWM4ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ2NjUsOSArNDY2NSwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBCb3R0
b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1
dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFj
azoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDFkMDg1N2YuLjMwNzUxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDc1NiwxMCArNDc1NiwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBCb3R0b21W
YWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVu
Y3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0
ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBL
aWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAKaW5kZXggZDQ2ZGFjZS4uZjg5MjQ1MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTQyNCwxMCArNDI0LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CisgICAgICAgICAg
ICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAg
Y2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAg
ICAgICAgICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDYwZGNmNzkuLjkzNDYxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw5ICsxODEsMTEgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBC
b3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
OgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9u
ZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGQ5MDJhZTcuLmQ5
Y2I2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCkBAIC04NDQsNiArODQ0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3Rp
dmF0aW9uOgorICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbigp
OworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAg
ICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC04NTEsNiArODU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBab21iaWVIaW50OgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQdXRIaW50OgpAQCAtNTA4
Miw2ICs1MDg2LDU1IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1f
b3V0LmludFB0ciwgcmVzdWx0cykpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbigpCisgICAgeworICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhJiBkYXRhID0gbV9ub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisKKyAg
ICAgICAgVmVjdG9yPExWYWx1ZSwgOD4gdmFsdWVzOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2YWx1
ZXMuYXBwZW5kKGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkp
OworCisgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHRhYmxlID0gbV9ncmFwaC5zeW1ib2xU
YWJsZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGgg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiBzbG93
IHBhdGgiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uIGNvbnRpbnVhdGlvbiIpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0Jl
Zm9yZShzbG93UGF0aCk7CisKKyAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9i
amVjdDxKU0xleGljYWxFbnZpcm9ubWVudD4oCisgICAgICAgICAgICBKU0xleGljYWxFbnZpcm9u
bWVudDo6YWxsb2NhdGlvblNpemUodGFibGUpLCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8s
IHNsb3dQYXRoKTsKKworICAgICAgICBtX291dC5zdG9yZVB0cihzY29wZSwgZmFzdE9iamVjdCwg
bV9oZWFwcy5KU1Njb3BlX25leHQpOworICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRl
cih0YWJsZSksIGZhc3RPYmplY3QsIG1faGVhcHMuSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xU
YWJsZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLT5zY29wZVNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwKKyAgICAg
ICAgICAgICAgICBmYXN0T2JqZWN0LCBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFi
bGVzW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQg
PSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsK
KyAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCisgICAgICAgICAgICBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3
ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRh
YmxlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSAgbV9vdXQuYW5jaG9y
KGNhbGxSZXN1bHQpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1
ZSBhY3RpdmF0aW9uID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jl
c3VsdCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZXNbaV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faGVhcHMuSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXNbZGF0YS5tX3Byb3Bl
cnRpZXNbaV0ubV9pZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgIH0KKyAgICAgICAgc2V0SlNW
YWx1ZShhY3RpdmF0aW9uKTsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX05BVElWRV9DQUxMX0lO
TElOSU5HKQogICAgIExWYWx1ZSBnZXRGdW5jdGlvbkJ5U3ltYm9sKGNvbnN0IENTdHJpbmcgc3lt
Ym9sKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGFmNTdmMjcuLjg5NmNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTExMSw2ICsxMTIsMzYgQEAgZXh0ZXJuICJDIiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOiB7CisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIHNjb3BlIGlzCisgICAgICAg
IEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0
ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBj
b25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpICE9IFByb21v
dGVkTG9jYXRpb25EZXNjcmlwdG9yKEFjdGl2YXRpb25TY29wZVBMb2MpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc2NvcGUgPSBqc0Nhc3Q8SlNTY29wZSo+KEpTVmFs
dWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VChzY29wZSk7CisKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVC
bG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKAorICAgICAgICAgICAgbWF0ZXJpYWxp
emF0aW9uLT5vcmlnaW4oKSwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBTeW1ib2xUYWJs
ZSogdGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YWN0aXZhdGlvblN0cnVjdHVy
ZSgpOworCisgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiByZXN1bHQgPSBKU0xleGljYWxF
bnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHNjb3BlLCB0YWJsZSk7CisKKyAgICAg
ICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIHBvcHVsYXRlIHRoZSBhY3RpdmF0aW9uIHdpdGgKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6
ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVy
dHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBDbG9zdXJlVmFyUExvYykKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgcmVzdWx0LT52YXJpYWJsZUF0KFNjb3BlT2Zm
c2V0KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KGV4ZWMtPnZtKCksIHJlc3VsdCwg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAg
Y2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CiAgICAgICAgIGlmICghbWF0ZXJpYWxpemF0
aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWN0aXZhdGlvbi1zaW5rLW9zcmV4aXQuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FjdGl2YXRpb24tc2luay1vc3JleGl0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkM2M0ZDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FjdGl2YXRpb24tc2lu
ay1vc3JleGl0LmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciBuID0gMTAwMDAwMDA7CisKK2Z1bmN0
aW9uIGJhcigpIHsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAgIHZhciByZXN1bHQgPSAwOwor
ICAgIHZhciBzZXQgPSBmdW5jdGlvbiAoeCkgeyByZXN1bHQgPSB4OyB9CisgICAgaWYgKGIpIHsK
KyAgICAgICAgT1NSRXhpdCgpOworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgYmFyKHNl
dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK25vSW5saW5lKGJhcik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0g
MDsgaSA8IG47IGkrKykgeworICAgIHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAg
aWYgKHJlc3VsdCAhPSAwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2FjdGl2YXRpb24tc2luay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YWN0aXZhdGlvbi1zaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJm
MDAwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2FjdGl2YXRpb24tc2luay5qcwpAQCAtMCwwICsxLDI0IEBACit2YXIgbiA9IDEwMDAwMDAw
OworCitmdW5jdGlvbiBiYXIoZikgeyBmKDEwKTsgfQorCitmdW5jdGlvbiBmb28oYikgeworICAg
IHZhciByZXN1bHQgPSAwOworICAgIHZhciBzZXQgPSBmdW5jdGlvbiAoeCkgeyByZXN1bHQgPSB4
OyB9CisgICAgaWYgKGIpIHsKKyAgICAgICAgYmFyKHNldCk7CisgICAgICAgIGlmIChyZXN1bHQg
IT0gMTApCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZDogIiArIHJlc3VsdDsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25vSW5saW5lKGJh
cik7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgeworICAg
IHZhciByZXN1bHQgPSBmb28oIShpICUgMTAwKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252344</attachid>
            <date>2015-05-04 16:01:20 -0700</date>
            <delta_ts>2015-05-04 19:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144300-20150504160006.patch</filename>
            <type>text/plain</type>
            <size>32018</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NzU4YzdkZWFmMjY2MDVmMjc3ODBjOWY2ODliYzY3OGRlMWYwNTliLi5kZDlmMjU2ZGY3ZGJlOWRm
OTI3NWEwZDUwMGRhYmQ3ZjA4OWM1OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wNS0wNCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgQ3JlYXRlQWN0aXZhdGlvbiBzaW5raW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHB1cnN1ZXMg
dGhlIHdvcmsgc3RhcnRlZCBpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0MDE2IHRvIGV4cGFuZCB0aGUgc2V0IG9mCisgICAgICAgIGFsbG9jYXRp
b25zIHdlIGFyZSBhYmxlIHRvIHNpbmsgYnkgYWxsb3dpbmcgc2lua2luZyBvZiBDcmVhdGVBY3Rp
dmF0aW9uCisgICAgICAgIG5vZGUuCisKKyAgICAgICAgVGhpcyBpcyBhY2hpZXZlZCBieSBmb2xs
b3dpbmcgY2xvc2VseSB0aGUgd2F5IE5ld09iamVjdCBpcyBjdXJyZW50bHkKKyAgICAgICAgc3Vu
azogd2UgYWRkIGEgbmV3IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uIG5vZGUgdG8gcmVjb3JkIHRo
ZSBpbml0aWFsCisgICAgICAgIHBvc2l0aW9uIG9mIHRoZSBDcmVhdGVBY3RpdmF0aW9uIG5vZGUs
IG5ldyBDbG9zdXJlVmFyUExvYyBwcm9tb3RlZCBoZWFwCisgICAgICAgIGxvY2F0aW9ucyB0byBr
ZWVwIHRyYWNrIG9mIHRoZSB2YXJpYWJsZXMgcHV0IGluIHRoZSBhY3RpdmF0aW9uLCBhbmQgYQor
ICAgICAgICBuZXcgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uIG5vZGUgdG8gYWxsb2NhdGUg
YW5kIHBvcHVsYXRlIHRoZSBzdW5rCisgICAgICAgIGFjdGl2YXRpb24uCisKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUHV0Q2xvc3VyZVZhckhpbnQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omlz
QWN0aXZhdGlvbkFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRv
bUFjdGl2YXRpb25BbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc1BoYW50
b21BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBk
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6bG93ZXJOb25SZWFkaW5nT3BlcmF0aW9u
c09uUGhhbnRvbUFsbG9jYXRpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlOjpjcmVhdGVNYXRlcmlhbGl6ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6cG9wdWxhdGVNYXRlcmlhbGl6ZSk6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAg
ICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZUNQUyk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVP
YmplY3RJbk9TUik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FjdGl2YXRpb24tc2luay1vc3Jl
eGl0LmpzOiBBZGRlZC4KKyAgICAgICAgKGJhcik6CisgICAgICAgIChmb28uc2V0IHJlc3VsdCk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FjdGl2YXRpb24tc2luay5qczogQWRkZWQuCisgICAg
ICAgIChiYXIpOgorCiAyMDE1LTA1LTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBXZWFrQmxvY2sncyAicmVhcCIgYW5kICJ2aXNpdCIgb3Bl
cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5MzQyMDkzNWIzOGJlZjQ0NzhlZGEwYzk1
ZjlkODU1MjYzYmZkNzAyLi41M2M4NDVmNTZlYjQwNDA4NTNmNDE3MjEyMDBkNTU1NDAxOGE5Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNDk1LDYgKzE0OTUsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICAKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CkBAIC0xNTE3LDggKzE1MTgsOSBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBo
LCBzZXQpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBDcmVh
dGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVj
dHVyZSgpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCmluZGV4IGU4N2MzOGE4ZDliNTFjZGQ4YTJmMTMyOWQ2MDBiYjM0MmVkZDFiNmUu
LjYwYTg5OTQ4M2IwNWE4OTNmZDZmMzg1YjQyMzk0NGNhMWQ1NjllZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC04NTQsNiArODU0LDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBN
YXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICBj
YXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVB
Y3RpdmF0aW9uOgogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRl
KEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA0ODcxZjBhOTYyMzFkMTczZWQ5MDE2Mjc1MGYwOTRjN2Ux
YjExNWIyLi5hOWUzMGFjYjRiMGEzZTQ2ZDE5YWMyOGM5MzE2NzEwZTBkZWFjMDQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xOTgsNiArMTk4LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgorICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGly
ZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICBjYXNl
IEdldE15QXJndW1lbnRCeVZhbDoKQEAgLTIzNiw2ICsyMzcsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRFbnVtZXJhdG9yR2VuZXJpY1BuYW1l
OgogICAgIGNhc2UgVG9JbmRleFN0cmluZzoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0
OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMTVkY2Q0MWE2NmRlNTQyYzc3
MGJkNWVjYjBlNTNhMjI1YzAwYTc3NC4uOWJlYTZjOGE5NzZhYzYyZjMzZGYyNDkxY2VkNDY0OGZj
NjNhMTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xMDI5LDYgKzEwMjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJvb2xlYW5Ub051
bWJlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgICAgICBjYXNlIFBoYW50
b21OZXdGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21D
bG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CkBAIC0xMDM2LDYg
KzEwMzcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIFB1dFN0YWNrOgogICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgY2FzZSBHZXRT
dGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IGI1MzM0YzI3YTE0
ZGFiODYwYWJkMTkzYzc0NjRlMGQ3ZmEzYWIzNTQuLjVhN2NlYmU2YTQwMzk3OGViMzVjMTczM2U0
OGYyNzdjMzU1MTY5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAt
MTU4LDYgKzE1OCwxNCBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb1B1dEJ5T2Zmc2V0SGludCgpCiAg
ICAgICAgIGNoaWxkMigpLm5vZGUoKSwgY2hpbGQzKCkubm9kZSgpKTsKIH0KIAordm9pZCBOb2Rl
Ojpjb252ZXJ0VG9QdXRDbG9zdXJlVmFySGludCgpCit7CisgICAgQVNTRVJUKG1fb3AgPT0gUHV0
Q2xvc3VyZVZhcik7CisgICAgY29udmVydFRvUHV0SGludCgKKyAgICAgICAgUHJvbW90ZWRMb2Nh
dGlvbkRlc2NyaXB0b3IoQ2xvc3VyZVZhclBMb2MsIHNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkpLAor
ICAgICAgICBjaGlsZDEoKS5ub2RlKCksIGNoaWxkMigpLm5vZGUoKSk7Cit9CisKIFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yIE5vZGU6OnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkKIHsK
ICAgICByZXR1cm4gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3Ioc3RhdGljX2Nhc3Q8UHJvbW90
ZWRMb2NhdGlvbktpbmQ+KG1fb3BJbmZvKSwgbV9vcEluZm8yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggOGU2N2RmMjM1NTFhMzMxMDk3YmJiODcxOGNhMWNlOWQ5ODczMmRi
Mi4uNDhiNjhiMDg2YmZjMTRhN2Y0NWE0NGQ4MzU3YjY3ZGZlNzFlOGI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTU2OSw2ICs1NjksNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QdXRCeU9mZnNldEhpbnQoKTsKICAgICB2b2lkIGNvbnZl
cnRUb1B1dFN0cnVjdHVyZUhpbnQoTm9kZSogc3RydWN0dXJlKTsKKyAgICB2b2lkIGNvbnZlcnRU
b1B1dENsb3N1cmVWYXJIaW50KCk7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3
T2JqZWN0KCkKICAgICB7CkBAIC01OTEsNiArNTkyLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0
VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9
PSBDcmVhdGVBY3RpdmF0aW9uIHx8IG1fb3AgPT0gTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
KTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOworICAgICAgICBtX2Zs
YWdzICY9IH5Ob2RlSGFzVmFyQXJnczsKKyAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVzdEdlbmVy
YXRlOworICAgICAgICBtX29wSW5mbyA9IDA7CisgICAgICAgIG1fb3BJbmZvMiA9IDA7CisgICAg
ICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOworICAgIH0KKwogICAgIHZvaWQgY29udmVy
dFBoYW50b21Ub1BoYW50b21Mb2NhbCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9vcCA9PSBQ
aGFudG9tICYmIChjaGlsZDEoKS0+b3AoKSA9PSBQaGkgfHwgY2hpbGQxKCktPm9wKCkgPT0gU2V0
TG9jYWwgfHwgY2hpbGQxKCktPm9wKCkgPT0gU2V0QXJndW1lbnQpKTsKQEAgLTE0NDIsNiArMTQ1
NCwyNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgYm9vbCBp
c0FjdGl2YXRpb25BbGxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgewor
ICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBi
b29sIGlzUGhhbnRvbUFjdGl2YXRpb25BbGxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAob3AoKSkgeworICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGlzUGhhbnRvbUFsbG9jYXRpb24o
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CkBAIC0xNDQ5LDYgKzE0ODIsNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdG
dW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGI5ZjAyNWZi
OWFiOGI3ZGQ1NTczZDBkNzg0YzY1ZGUzNjYwYzVlMDkuLjc1Yzg4NDIzN2EwMGIxNmQ4NzBkMjQw
MTQ1OTMxOGRlZGMxYWU4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKQEAgLTI1NCw2ICsyNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhNYXRlcmlhbGl6ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKICAgICBtYWNybyhQaGFudG9tTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE1hdGVyaWFsaXplQ3JlYXRl
QWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBcCiAgICAg
LyogTm9kZXMgZm9yIG1pc2Mgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQnJlYWtwb2ludCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggMzM5Yjdk
Zjg3M2U2ZTI1MmI2OTk3NGI3Mjc2MGM0MjZhYWFlNjMwOS4uYWM4MDFmYmZjNThmZGI3ZWM5OTZk
YzQwYjYxMWIxNmE1NzQxY2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC01MDYs
NiArNTA2LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2Fz
ZSBQdXRDbG9zdXJlVmFyOiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRp
ZGF0ZXMuY29udGFpbnModGFyZ2V0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHRhcmdldC0+aXNQaGFudG9tQWN0aXZhdGlvbkFsbG9jYXRpb24oKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QdXRDbG9zdXJlVmFySGludCgpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1
cmU6IHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZS0+Y2hpbGQxKCku
bm9kZSgpOwpAQCAtNTY5LDExICs1NzgsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBDcmVh
dGVBY3RpdmF0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVz
LmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbihBY3RpdmF0aW9u
U2NvcGVQTG9jLCBub2RlKS5jcmVhdGVIaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRp
b24oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3Jl
YXRlQWN0aXZhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5jb250YWlucyhub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRpb24oQWN0aXZhdGlv
blNjb3BlUExvYywgbm9kZSkuY3JlYXRlSGludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgbm9kZS0+b3JpZ2luLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
Lm5vZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGll
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIgPSBkYXRhLm1fcHJvcGVydGllc1tpXS5tX2lkZW50aWZpZXJOdW1iZXI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9tb3RlZEhlYXBMb2NhdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENsb3N1cmVWYXJQTG9jLCBub2RlLCBpZGVudGlmaWVyTnVt
YmVyKS5jcmVhdGVIaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCBpICsgMSkubm9kZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGNh
c2UgU3RvcmVCYXJyaWVyOgogICAgICAgICAgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51
bGxDaGVjazogewogICAgICAgICAgICAgICAgICAgICBOb2RlKiB0YXJnZXQgPSBub2RlLT5jaGls
ZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNv
bnRhaW5zKHRhcmdldCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQt
PmlzUGhhbnRvbU9iamVjdEFsbG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTc3NSw2ICs4MTUsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
OgogICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOwogICAgICAgICAgICAgbV9ncmFwaC5kb1Rv
Q2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgbm9kZSwKQEAgLTc5MywxOCArODM0LDI4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgICAgICBpZiAoIW1fZ3JhcGguc3ltYm9s
VGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2luZ2xldG9uU2NvcGUoKS0+aXNTdGls
bFZhbGlkKCkpCisgICAgICAgICAgICAgICAgc2lua0NhbmRpZGF0ZSgpOworICAgICAgICAgICAg
bV9ncmFwaC5kb1RvQ2hpbGRyZW4oCisgICAgICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAg
ICAgICBbJl0gKEVkZ2UgZWRnZSkgeworICAgICAgICAgICAgICAgICAgICBlc2NhcGUoZWRnZS5u
b2RlKCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICBjYXNlIFB1dEhp
bnQ6CisgICAgICAgIGNhc2UgU3RvcmVCYXJyaWVyOgorICAgICAgICBjYXNlIFN0b3JlQmFycmll
cldpdGhOdWxsQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFB1dFN0
cnVjdHVyZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBHZXRC
eU9mZnNldDoKICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgotICAgICAgICBjYXNlIEdl
dEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICBjYXNlIFN0b3JlQmFycmllcjoKLSAgICAg
ICAgY2FzZSBTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrOiB7CisgICAgICAgIGNhc2UgR2V0R2V0
dGVyU2V0dGVyQnlPZmZzZXQ6IHsKICAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNo
aWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgIGlmICghdGFyZ2V0LT5pc09iamVjdEFsbG9jYXRp
b24oKSkKICAgICAgICAgICAgICAgICBlc2NhcGUodGFyZ2V0KTsKQEAgLTgyMCw2ICs4NzEsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDMoKS5ub2RlKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6IHsKKyAgICAgICAgICAgIE5vZGUqIHRhcmdldCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsK
KyAgICAgICAgICAgIGlmICghdGFyZ2V0LT5pc0FjdGl2YXRpb25BbGxvY2F0aW9uKCkpCisgICAg
ICAgICAgICAgICAgZXNjYXBlKHRhcmdldCk7CisgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hp
bGQyKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMuIEl0J3MganVz
dCBhIG1hdHRlciBvZgpAQCAtODY5LDYgKzkyOCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGVzY2FwZWUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2
YXRpb246IHsKKyAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBt
X2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5hZGQoKTsKKworICAgICAgICAgICAg
cmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAorICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRp
Y3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24sCisgICAg
ICAgICAgICAgICAgTm9kZU9yaWdpbigKKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZvckV4aXQp
LAorICAgICAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIDAsIDApOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIGVzY2FwZWUsICJCYWQgZXNjYXBlZSBvcCIpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC05MjgsNiArMTAwMCw0NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlv
bjogeworICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUt
Pm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKKworICAgICAgICAgICAgdW5zaWduZWQgZmly
c3RDaGlsZCA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5zaXplKCk7CisKKyAgICAgICAgICAg
IFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbG9jYXRpb25zID0gbV9sb2NhdGlvbnNGb3JB
bGxvY2F0aW9uLmdldChlc2NhcGVlKTsKKworICAgICAgICAgICAgUHJvbW90ZWRIZWFwTG9jYXRp
b24gc2NvcGUoQWN0aXZhdGlvblNjb3BlUExvYywgZXNjYXBlZSk7CisgICAgICAgICAgICBBU1NF
UlQobG9jYXRpb25zLmNvbnRhaW5zKHNjb3BlKSk7CisKKyAgICAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShyZXNvbHZlKGJsb2NrLCBzY29wZSksIEtub3duQ2Vs
bFVzZSkpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYXRpb25z
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChsb2NhdGlvbnNbaV0ua2lu
ZCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBBY3RpdmF0aW9uU2NvcGVQTG9jOiB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbnNbaV0gPT0gc2NvcGUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBj
YXNlIENsb3N1cmVWYXJQTG9jOiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0g
cmVzb2x2ZShibG9jaywgbG9jYXRpb25zW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLT5vcCgpID09IEJvdHRvbVZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5tX3Byb3BlcnRpZXMuYXBwZW5kKFBoYW50b21Q
cm9wZXJ0eVZhbHVlKGxvY2F0aW9uc1tpXS5pbmZvKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIGxvY2F0
aW9uIGtpbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIG5vZGUtPmNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgKKyAgICAgICAgICAgICAgICBBZGph
Y2VuY3lMaXN0OjpWYXJpYWJsZSwKKyAgICAgICAgICAgICAgICBmaXJzdENoaWxkLCBtX2dyYXBo
Lm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gZmlyc3RDaGlsZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246IHsKICAgICAgICAgICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFByb21vdGVk
SGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVz
Y2FwZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBmZGI4ZmRhNTgxZWY0YzUwYmQxMDU1
MDgyNzZhMTdhZWZiN2I2YzhjLi4zMWQ2NmFiZTVjOGFjNzQ3MDZmMWQyZGFkOTI5ODEzM2Y3Yzg1
ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTQzLDYgKzU0Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgQm9vbGVhblRvTnVtYmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdP
YmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgorICAgICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWw6CkBAIC01NTAsNiArNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBQdXRIaW50OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgICAgICBjYXNlIE1hdGVyaWFsaXpl
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgY2FzZSBL
aWxsU3RhY2s6CiAgICAgICAgIGNhc2UgR2V0U3RhY2s6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKaW5kZXggNzcxNTY3
YzE3OTI4NzRkYjY0ZWQ3MWVmMmFiNDY2MzVhMGQxMDE2Zi4uNTk4NTRmOGFkYjEyNzE3ZmU0OWQ2
OWFkMGI0YjgxMDFiYjQ3MzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKQEAgLTkwLDYgKzkwLDE0IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQcm9tb3RlZExvY2F0aW9uS2luZCBraW5k
KQogICAgIGNhc2UgRnVuY3Rpb25BY3RpdmF0aW9uUExvYzoKICAgICAgICAgb3V0LnByaW50KCJG
dW5jdGlvbkFjdGl2YXRpb25QTG9jIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQWN0
aXZhdGlvblNjb3BlUExvYzoKKyAgICAgICAgb3V0LnByaW50KCJBY3RpdmF0aW9uU2NvcGVQTG9j
Iik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgQ2xvc3VyZVZhclBMb2M6CisgICAgICAg
IG91dC5wcmludCgiQ2xvc3VyZVZhclBMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCmluZGV4IDUxZjdiOWVl
M2Q1NzNiNzI0NzMxOTU1NDE0ZDRmMmY2MDRjMDVlYzcuLmYxOGM1MDgxYTRlMzliZTQzMTgzMTBm
ZDc0MTUwMThlZjcxYzRhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTQ0LDYgKzQ0LDggQEAgZW51bSBQcm9tb3Rl
ZExvY2F0aW9uS2luZCB7CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLAogICAgIEZ1bmN0
aW9uQWN0aXZhdGlvblBMb2MsCisgICAgQWN0aXZhdGlvblNjb3BlUExvYywKKyAgICBDbG9zdXJl
VmFyUExvYywKIH07CiAKIGNsYXNzIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWE1YTcxYzE3
Zjg4YjY4OGUzZmE1YjU3YjhkY2FiMjIzNDVkNGYxZS4uZjRiMDc5Zjg3YjAxOGMwMDU3MzI2ZWIw
OTUxNDI2MDc4NWUzMmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTI3Myw5ICsyNzMsMTEgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
VG9JbmRleFN0cmluZzoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBj
YXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNl
IE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21D
bG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRl
eCBmOWNhNzcxNjVhNjExMzc5OWMxZjdkMDIzYWRkNzE0NzY0ZjFjZjk0Li4xYjZkNWNiMTIxYzk4
YWM5MTM2NTBiYTRhNDQ5YzY1ODBjNTk5NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ1OTUsOSArNDU5NSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBC
b3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9u
OgogICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRT
dGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDM1YzQxZTQwZjZmOTFiODBjZWU1N2ZmMjhlYTUyZjYyYThhNjUzYzMuLjVj
YzE2MTk3NTc4MzllZGM1OWQ1ZDZjZjYxMzRjMDg5MGU5MTQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDY5MSwxMCAr
NDY5MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0Ogor
ICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0U3RhY2s6
CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggZDQ2ZGFjZWM2MDNmNjc1ODYyZGVjMjI4
ODNiNDI4NGM5M2E2YmRmYy4uZjg5MjQ1MzE1MDMxNDc5ODkyOThlODY3OWZmZjRkMzVkNzFlZTMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTQyNCwx
MCArNDI0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0luQm91bmRz
OgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21D
cmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CisgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBjYXNl
IEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBjYXNlIEdldFN0YWNrOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDdhOGRiM2NlNDc2ZGUw
ZDc2ZGEyNjYzNTZjYjQ4OWQ3YWZiMjdiNTkuLjBiZmRmY2NjNmQzMmFlZGI0ODBjNzM4OWFkY2Jl
MTY1Yjc3YjRlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTE4MSw5ICsxODEsMTEgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CisgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZUltbWVkaWF0ZToKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgorICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFy
Z3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCmluZGV4IGUzZTBlMzBkMjNjZDRlNWI2NmE1OWRiNGMyNTEzYjYzNGI0YTNk
MzEuLjNiZDc3YWM5NDQ2ZDk1ZWU2MDViYmQwYjJjNzRlMTM3Njk1NDc4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC04NDcsNiAr
ODQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAg
ICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICAg
ICAgY29tcGlsZU1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbigpOworICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6
CkBAIC04NTQsNiArODU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBab21iaWVIaW50Ogog
ICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1
bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBQdXRIaW50OgpAQCAtNTIwOSw2ICs1MjEzLDU1IEBAIHBy
aXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgcmVzdWx0
cykpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlv
bigpCisgICAgeworICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhJiBkYXRhID0gbV9u
b2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CisKKyAgICAgICAgVmVjdG9yPExWYWx1
ZSwgOD4gdmFsdWVzOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3By
b3BlcnRpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSkpOworCisgICAgICAgIExWYWx1
ZSBzY29wZSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAg
ICAgU3ltYm9sVGFibGUqIHRhYmxlID0gbV9ncmFwaC5zeW1ib2xUYWJsZUZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0
dXJlKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIk1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiBzbG93IHBhdGgiKSk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTWF0ZXJp
YWxpemVDcmVhdGVBY3RpdmF0aW9uIGNvbnRpbnVhdGlvbiIpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CisK
KyAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0xleGljYWxFbnZp
cm9ubWVudD4oCisgICAgICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNp
emUodGFibGUpLCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKworICAg
ICAgICBtX291dC5zdG9yZVB0cihzY29wZSwgZmFzdE9iamVjdCwgbV9oZWFwcy5KU1Njb3BlX25l
eHQpOworICAgICAgICBtX291dC5zdG9yZVB0cih3ZWFrUG9pbnRlcih0YWJsZSksIGZhc3RPYmpl
Y3QsIG1faGVhcHMuSlNTeW1ib2xUYWJsZU9iamVjdF9zeW1ib2xUYWJsZSk7CisKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLT5zY29wZVNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwKKyAgICAgICAgICAgICAgICBmYXN0T2Jq
ZWN0LCBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzW2ldKTsKKyAgICAgICAg
fQorCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFz
dE9iamVjdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGNh
bGxSZXN1bHQgPSB2bUNhbGwoCisgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
Q3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1
cmUpLAorICAgICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSk7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSAgbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSBhY3RpdmF0aW9uID0gbV9v
dXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLm1fcHJvcGVydGllcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZXNbaV0sCisgICAgICAgICAgICAgICAgYWN0
aXZhdGlvbiwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkpTRW52aXJvbm1lbnRSZWNvcmRfdmFy
aWFibGVzW2RhdGEubV9wcm9wZXJ0aWVzW2ldLm1faWRlbnRpZmllck51bWJlcl0pOworICAgICAg
ICB9CisgICAgICAgIHNldEpTVmFsdWUoYWN0aXZhdGlvbik7CisgICAgfQorCiAjaWYgRU5BQkxF
KEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKICAgICBMVmFsdWUgZ2V0RnVuY3Rpb25CeVN5bWJv
bChjb25zdCBDU3RyaW5nIHN5bWJvbCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCBmYjcxNGI4MmE1Yjg3ZTE2MzEzNDM4MzMyNmYyODRm
MGFkNjRiNjMzLi5hZDZiNWY1NDk4YzFjNjlmMzY5NDc1NTI2YjYzMDg3ZmVhYjVjZGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCkBAIC0xMTEs
NiArMTEyLDM2IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICAvLyBGaWd1cmUgb3V0
IHdoZXJlIHRoZSBzY29wZSBpcworICAgICAgICBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHI7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNp
emUoKTsgaS0tOykgeworICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3Bl
cnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBpZiAo
cHJvcGVydHkubG9jYXRpb24oKSAhPSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihBY3RpdmF0
aW9uU2NvcGVQTG9jKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNj
b3BlID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAg
ICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NvcGUpOworCisgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVC
bG9jaygKKyAgICAgICAgICAgIG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCksIGV4ZWMtPmNvZGVC
bG9jaygpKTsKKyAgICAgICAgU3ltYm9sVGFibGUqIHRhYmxlID0gY29kZUJsb2NrLT5zeW1ib2xU
YWJsZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKTsKKworICAgICAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogcmVzdWx0ID0gSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlLCBzY29wZSwgdGFibGUpOworCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1
bGF0ZSB0aGUgYWN0aXZhdGlvbiB3aXRoCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVy
aWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgY29u
c3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0
aWVzKClbaV07CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKS5raW5kKCkgIT0g
Q2xvc3VyZVZhclBMb2MpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IHJlc3VsdC0+dmFyaWFibGVBdChTY29wZU9mZnNldChwcm9wZXJ0eS5sb2NhdGlvbigpLmluZm8o
KSkpLnNldChleGVjLT52bSgpLCByZXN1bHQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czog
ewogICAgICAgICBpZiAoIW1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCkuaW5saW5lQ2FsbEZyYW1l
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FjdGl2
YXRpb24tc2luay1vc3JleGl0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDNjNGQzNmJjNjUzNDFl
MmZkZGJlYjE3MTE3N2QxMGQ1OWQzMzBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hY3RpdmF0aW9uLXNpbmstb3NyZXhpdC5qcwpAQCAtMCww
ICsxLDI1IEBACit2YXIgbiA9IDEwMDAwMDAwOworCitmdW5jdGlvbiBiYXIoKSB7IH0KKworZnVu
Y3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICB2YXIgc2V0ID0gZnVuY3Rp
b24gKHgpIHsgcmVzdWx0ID0geDsgfQorICAgIGlmIChiKSB7CisgICAgICAgIE9TUkV4aXQoKTsK
KyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcihzZXQpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShi
YXIpOworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAg
ICB2YXIgcmVzdWx0ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hY3RpdmF0aW9uLXNpbmsuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FjdGl2YXRpb24tc2luay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZjAwMDIyY2RiYTdjYjZiMzg1MzI0NDJmMzFkMTJiY2VhYTZlODEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hY3RpdmF0
aW9uLXNpbmsuanMKQEAgLTAsMCArMSwyNCBAQAordmFyIG4gPSAxMDAwMDAwMDsKKworZnVuY3Rp
b24gYmFyKGYpIHsgZigxMCk7IH0KKworZnVuY3Rpb24gZm9vKGIpIHsKKyAgICB2YXIgcmVzdWx0
ID0gMDsKKyAgICB2YXIgc2V0ID0gZnVuY3Rpb24gKHgpIHsgcmVzdWx0ID0geDsgfQorICAgIGlm
IChiKSB7CisgICAgICAgIGJhcihzZXQpOworICAgICAgICBpZiAocmVzdWx0ICE9IDEwKQorICAg
ICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQ6ICIgKyByZXN1bHQ7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitub0lubGluZShiYXIpOworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKCEoaSAlIDEwMCkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU3NWRhYWY0MTE4MzI3
OTQ4NjcxY2E5OGVhMDA1YjE4YzViNjcxZmIuLjQ5ZWQ5MzljNTE1YjZhZjEzN2ZlNzg0ZTA4ZmVl
MzQ0NjRlNzlmYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNS0wNCAgQmFzaWxlIENs
ZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgQ3JlYXRl
QWN0aXZhdGlvbiBzaW5raW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQzMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBwZXJmb3JtYW5jZSB0ZXN0IGZvciBhY3RpdmF0aW9uIGFsbG9jYXRp
b24gc2lua2luZy4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstaHVn
ZS1hY3RpdmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGJhcik6CisgICAgICAgIChmb28pOgor
CiAyMDE1LTA1LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCB0aGUgdGVzdCBhZnRlciByMTgzNzU4IHNpbmNlIHNob3VsZE5vdEJlIGlzIG5vdCBzdXBw
b3J0ZWQgaW4gdGhlIHN0YW5kYWxvbmUgdGVzdGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstaHVnZS1hY3RpdmF0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2luay1odWdlLWFjdGl2YXRpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzZjNjZhZDBjZTkwZjgwOThlYTdjNWFkNjEzOTZhYzE3MDA1MzNhOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbmstaHVn
ZS1hY3RpdmF0aW9uLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIGJhcigpIHsgfQorCitm
dW5jdGlvbiBmb28oYWxwaGEpIHsKKyAgICB2YXIgeDAgPSAwOworICAgIHZhciB4MSA9IDA7Cisg
ICAgdmFyIHgyID0gMDsKKyAgICB2YXIgeDMgPSAwOworICAgIHZhciB4NCA9IDA7CisgICAgdmFy
IHg1ID0gMDsKKyAgICB2YXIgeDYgPSAwOworICAgIHZhciB4NyA9IDA7CisgICAgdmFyIHg4ID0g
MDsKKyAgICB2YXIgeDkgPSAwOworICAgIHZhciB4MTAgPSAwOworICAgIHZhciB4MTEgPSAwOwor
ICAgIHZhciB4MTIgPSAwOworICAgIHZhciB4MTMgPSAwOworICAgIHZhciB4MTQgPSAwOworICAg
IHZhciB4MTUgPSAwOworICAgIHZhciB4MTYgPSAwOworICAgIHZhciB4MTcgPSAwOworICAgIHZh
ciB4MTggPSAwOworICAgIHZhciB4MTkgPSAwOworICAgIGlmIChhbHBoYSkgeworICAgICAgICBi
YXIoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoeDAgKyB4MSArIHgyICsg
eDMgKyB4NCArIHg1ICsgeDYgKyB4NyArIHg4ICsgeDkgKyB4MTAgKworICAgICAgICAgICAgICAg
ICAgICAgICAgeDExICsgeDEyICsgeDEzICsgeDE0ICsgeDE1ICsgeDE2ICsgeDE3ICsgeDE4ICsg
eDE5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHgxNzsKKyAgICB9Cisg
ICAgcmV0dXJuIHgxMjsKK30KKworbm9JbmxpbmUoYmFyKTsKK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygh
KGkgJSAxMDAwKSk7CisgICAgaWYgKHJlc3VsdCAhPT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBleHBlY3RlZCB1bmRlZmluZWQsIGdvdCAiICsgcmVzdWx0OworfQo=
</data>
<flag name="review"
          id="277189"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>