<?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>143638</bug_id>
          
          <creation_ts>2015-04-11 19:05:38 -0700</creation_ts>
          <short_desc>Don&apos;t segregate heap objects based on Structure immortality.</short_desc>
          <delta_ts>2015-04-13 12:13:48 -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>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mhahnenb</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1084592</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-11 19:05:38 -0700</bug_when>
    <thetext>To reduce heap fragmentation and improve data locality, we should try putting objects with immortal Structures together with JSDestructibleObjects. It&apos;d cost us an extra branch during sweep, and one in JSCell::classInfo().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084593</commentid>
    <comment_count>1</comment_count>
      <attachid>250591</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-11 19:11:00 -0700</bug_when>
    <thetext>Created attachment 250591
Snack for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084716</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-12 20:16:09 -0700</bug_when>
    <thetext>Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on megalol (MacBookPro10,1).

VMs tested:
&quot;Vanilla&quot; at /Users/kling/Source/Safari/ToT-Clean/WebKitBuild/Release/jsc
&quot;Chocolate&quot; at /Users/kling/Source/Safari/OpenSource/WebKitBuild/Release/jsc

Collected 4 samples per benchmark/VM, with 4 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.

                                                         Vanilla                  Chocolate                                     
SunSpider:
   3d-cube                                            5.2593+-0.4856            5.1050+-0.3191          might be 1.0302x faster
   3d-morph                                           5.8705+-0.1659     ?      6.1027+-0.3479        ? might be 1.0396x slower
   3d-raytrace                                        6.8584+-0.7573            6.6626+-0.3816          might be 1.0294x faster
   access-binary-trees                                2.4452+-0.0509            2.3532+-0.1076          might be 1.0391x faster
   access-fannkuch                                    6.0312+-0.2398            5.9554+-0.0296          might be 1.0127x faster
   access-nbody                                       3.0800+-0.2620     ?      3.1417+-0.1327        ? might be 1.0201x slower
   access-nsieve                                      3.4506+-0.1279     ?      3.4614+-0.1411        ?
   bitops-3bit-bits-in-byte                           1.6819+-0.0278     ?      1.7048+-0.0276        ? might be 1.0136x slower
   bitops-bits-in-byte                                3.5290+-0.0650            3.4850+-0.0460          might be 1.0126x faster
   bitops-bitwise-and                                 2.1972+-0.0672     ?      2.2802+-0.1918        ? might be 1.0378x slower
   bitops-nsieve-bits                                 3.8852+-0.1011     ?      4.0129+-0.1785        ? might be 1.0329x slower
   controlflow-recursive                              2.3497+-0.2248            2.2250+-0.0512          might be 1.0561x faster
   crypto-aes                                         4.3132+-0.1069     ?      4.6793+-1.0247        ? might be 1.0849x slower
   crypto-md5                                         2.6218+-0.2737            2.4984+-0.0774          might be 1.0494x faster
   crypto-sha1                                        2.9915+-0.6794            2.6693+-0.2206          might be 1.1207x faster
   date-format-tofte                                  9.6045+-0.3433     ?      9.6757+-0.7314        ?
   date-format-xparb                                  5.7089+-0.1748     ?      5.8035+-0.1217        ? might be 1.0166x slower
   math-cordic                                        3.2627+-0.1370            3.2135+-0.1351          might be 1.0153x faster
   math-partial-sums                                  5.7245+-1.4567            5.6372+-0.4732          might be 1.0155x faster
   math-spectral-norm                                 2.0723+-0.0387            2.0703+-0.0245        
   regexp-dna                                         9.2399+-2.2493            8.7835+-2.4920          might be 1.0520x faster
   string-base64                                      5.4716+-1.6751            4.6800+-0.1463          might be 1.1691x faster
   string-fasta                                       6.9545+-0.1511            6.8262+-0.0660          might be 1.0188x faster
   string-tagcloud                                   10.3986+-0.5471           10.3863+-0.1766        
   string-unpack-code                                21.3397+-1.7174           21.0079+-0.4905          might be 1.0158x faster
   string-validate-input                              5.2018+-0.0626            5.0957+-0.1609          might be 1.0208x faster

   &lt;arithmetic&gt;                                       5.4440+-0.0673            5.3660+-0.0591          might be 1.0145x faster

                                                         Vanilla                  Chocolate                                     
LongSpider:
   3d-cube                                          876.8975+-32.3745    ?    890.7485+-17.5201       ? might be 1.0158x slower
   3d-morph                                        1574.5983+-4.6800     ?   1577.5056+-7.8021        ?
   3d-raytrace                                      768.5930+-7.4748     ?    768.7429+-16.8365       ?
   access-binary-trees                             1043.7885+-11.9021    ?   1049.7832+-7.2471        ?
   access-fannkuch                                  351.3836+-31.4498         345.9742+-12.6238         might be 1.0156x faster
   access-nbody                                     629.9861+-1.1358     ?    631.2038+-1.8754        ?
   access-nsieve                                    879.6464+-11.9222    ?    883.9374+-14.6119       ?
   bitops-3bit-bits-in-byte                          48.9081+-2.9110     ?     48.9441+-1.4068        ?
   bitops-bits-in-byte                               94.5201+-4.9817     ?     97.0079+-4.6505        ? might be 1.0263x slower
   bitops-nsieve-bits                               754.4360+-8.3354     ^    738.1306+-5.7224        ^ definitely 1.0221x faster
   controlflow-recursive                            506.5503+-0.6749     !    516.7132+-7.9777        ! definitely 1.0201x slower
   crypto-aes                                       720.8593+-8.2610          719.5157+-3.3806        
   crypto-md5                                       567.1433+-5.5794     ?    572.1542+-10.2877       ?
   crypto-sha1                                      662.3470+-29.2788         662.3163+-61.7000       
   date-format-tofte                                788.9193+-29.4545         783.8463+-9.7165        
   date-format-xparb                                777.4066+-13.6520    !    820.0955+-25.8354       ! definitely 1.0549x slower
   math-cordic                                      608.3392+-0.9476     ?    608.7089+-0.7911        ?
   math-partial-sums                                524.1835+-6.1472          523.4189+-4.7907        
   math-spectral-norm                               580.7155+-0.3041          580.4293+-1.5012        
   string-base64                                    372.0099+-5.9361     !    386.5706+-8.2037        ! definitely 1.0391x slower
   string-fasta                                     456.3035+-4.5244     ?    457.9473+-3.0889        ?
   string-tagcloud                                  225.2457+-5.4263     ?    226.1123+-4.4916        ?

   &lt;geometric&gt;                                      514.4761+-1.7778     ?    517.7246+-2.4292        ? might be 1.0063x slower

                                                         Vanilla                  Chocolate                                     
V8Spider:
   crypto                                            57.6511+-4.1754     ?     58.4796+-3.0779        ? might be 1.0144x slower
   deltablue                                        100.2304+-5.3248     ?    102.3293+-5.1072        ? might be 1.0209x slower
   earley-boyer                                      44.3036+-1.4757           42.7087+-1.2094          might be 1.0373x faster
   raytrace                                          43.5338+-6.0057           40.1332+-1.0490          might be 1.0847x faster
   regexp                                            71.3325+-2.9763           69.9002+-3.4284          might be 1.0205x faster
   richards                                          85.1258+-3.3096     ?     85.8648+-2.9198        ?
   splay                                             41.6972+-4.1207     ?     42.0938+-3.7914        ?

   &lt;geometric&gt;                                       60.0186+-0.9186           59.3246+-1.5343          might be 1.0117x faster

                                                         Vanilla                  Chocolate                                     
Octane:
   encrypt                                           0.22692+-0.00145    ?     0.22892+-0.00913       ?
   decrypt                                           4.03608+-0.12663          3.97795+-0.03141         might be 1.0146x faster
   deltablue                                x2       0.21045+-0.00280    ?     0.21081+-0.00245       ?
   earley                                            0.59706+-0.01013    ?     0.59898+-0.00263       ?
   boyer                                             6.57959+-0.01784    ?     6.59718+-0.08425       ?
   navier-stokes                            x2       5.35477+-0.01423          5.34915+-0.00384       
   raytrace                                 x2       1.29628+-0.03203    ?     1.31495+-0.07347       ? might be 1.0144x slower
   richards                                 x2       0.11930+-0.00242    ?     0.12025+-0.00258       ?
   splay                                    x2       0.39947+-0.00907          0.39688+-0.00518       
   regexp                                   x2      34.98955+-0.30959    ?    35.08465+-0.40378       ?
   pdfjs                                    x2      45.97834+-0.21984    ?    46.64381+-0.56745       ? might be 1.0145x slower
   mandreel                                 x2      54.70050+-1.00709    ?    54.79463+-1.03966       ?
   gbemu                                    x2      41.95623+-4.39626         40.90548+-0.45744         might be 1.0257x faster
   closure                                           0.58113+-0.00531    ^     0.57049+-0.00417       ^ definitely 1.0186x faster
   jquery                                            7.41118+-0.04189          7.35877+-0.05754       
   box2d                                    x2      12.71943+-0.15802    ?    12.72699+-0.02141       ?
   zlib                                     x2     407.24949+-0.65149        406.63298+-3.40417       
   typescript                               x2     857.19025+-16.16211       854.73541+-16.98076      

   &lt;geometric&gt;                                       6.97341+-0.06204          6.97080+-0.03091         might be 1.0004x faster

                                                         Vanilla                  Chocolate                                     
Kraken:
   ai-astar                                          275.144+-3.011      ?     276.914+-4.131         ?
   audio-beat-detection                              110.423+-2.574            109.957+-1.690         
   audio-dft                                         192.671+-9.090      ?     194.950+-9.552         ? might be 1.0118x slower
   audio-fft                                          80.470+-1.118      ?      82.402+-6.209         ? might be 1.0240x slower
   audio-oscillator                                  212.073+-2.847      ?     213.216+-2.888         ?
   imaging-darkroom                                  109.870+-5.175            108.895+-2.777         
   imaging-desaturate                                 68.026+-3.392             65.981+-2.356           might be 1.0310x faster
   imaging-gaussian-blur                             115.949+-2.437            113.737+-1.613           might be 1.0194x faster
   json-parse-financial                               50.999+-3.214             48.195+-2.369           might be 1.0582x faster
   json-stringify-tinderbox                           60.330+-1.785      ?      60.893+-3.929         ?
   stanford-crypto-aes                                63.128+-2.925             62.014+-0.494           might be 1.0180x faster
   stanford-crypto-ccm                                51.927+-2.448             50.903+-1.382           might be 1.0201x faster
   stanford-crypto-pbkdf2                            175.615+-1.934            173.978+-5.988         
   stanford-crypto-sha256-iterative                   58.608+-2.031             57.835+-3.979           might be 1.0134x faster

   &lt;arithmetic&gt;                                      116.088+-1.013            115.705+-0.476           might be 1.0033x faster

                                                         Vanilla                  Chocolate                                     
JSRegress:
   abs-boolean                                        2.8505+-0.1441            2.7382+-0.0265          might be 1.0410x faster
   adapt-to-double-divide                            17.2767+-0.2322     ?     17.4042+-0.3550        ?
   aliased-arguments-getbyval                         1.4221+-0.4549            1.3208+-0.0828          might be 1.0767x faster
   allocate-big-object                                3.0625+-0.7396            2.8810+-0.0748          might be 1.0630x faster
   arguments-named-and-reflective                    13.3830+-1.9581     ?     13.4837+-2.3145        ?
   arguments-out-of-bounds                           14.9613+-0.3301     ?     15.7365+-1.7643        ? might be 1.0518x slower
   arguments-strict-mode                             11.3931+-0.3942     ?     11.6232+-0.9674        ? might be 1.0202x slower
   arguments                                         10.4743+-1.3601           10.0594+-0.3544          might be 1.0412x faster
   arity-mismatch-inlining                            0.9122+-0.0236     ?      1.0446+-0.1614        ? might be 1.1451x slower
   array-access-polymorphic-structure                 6.7751+-0.2372     ?      7.0487+-0.3048        ? might be 1.0404x slower
   array-nonarray-polymorhpic-access                 34.6505+-2.5587     ?     35.8128+-2.6252        ? might be 1.0335x slower
   array-prototype-every                             89.5349+-3.7561     ?    114.6033+-72.3069       ? might be 1.2800x slower
   array-prototype-forEach                           91.7844+-2.9313           88.9874+-4.8712          might be 1.0314x faster
   array-prototype-map                               98.2361+-2.3348     ?     98.3002+-3.6285        ?
   array-prototype-some                              88.8912+-5.4570     ?     92.5170+-3.7671        ? might be 1.0408x slower
   array-splice-contiguous                           43.5978+-1.7575     ?     45.1972+-3.0576        ? might be 1.0367x slower
   array-with-double-add                              4.3342+-0.1315     ?      4.3698+-0.3519        ?
   array-with-double-increment                        3.4840+-0.1799            3.3582+-0.0689          might be 1.0375x faster
   array-with-double-mul-add                          5.2286+-0.1216     ?      5.2474+-0.1934        ?
   array-with-double-sum                              3.4483+-0.0620     ?      3.5318+-0.3694        ? might be 1.0242x slower
   array-with-int32-add-sub                           7.0204+-0.1562     ?      7.1384+-0.2730        ? might be 1.0168x slower
   array-with-int32-or-double-sum                     3.5243+-0.0810            3.4758+-0.1144          might be 1.0139x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     35.0003+-1.8465     ?     37.1609+-2.1986        ? might be 1.0617x slower
   ArrayBuffer-DataView-alloc-long-lived             16.0860+-3.8848     ?     16.2927+-3.2921        ? might be 1.0129x slower
   ArrayBuffer-Int32Array-byteOffset                  3.8450+-0.1978     ?      3.9673+-0.3639        ? might be 1.0318x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     35.9656+-3.1108     ?     36.5292+-2.9536        ? might be 1.0157x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.9293+-0.4839     ?     25.2572+-7.4159        ? might be 1.1015x slower
   ArrayBuffer-Int8Array-alloc-long-lived            13.4725+-0.4898     ?     16.0270+-2.6948        ? might be 1.1896x slower
   ArrayBuffer-Int8Array-alloc                       12.1072+-2.0381           11.5989+-0.8279          might be 1.0438x faster
   asmjs_bool_bug                                     8.5217+-1.6659            8.1405+-0.6036          might be 1.0468x faster
   assign-custom-setter-polymorphic                   3.3470+-0.0608     ^      3.1308+-0.1369        ^ definitely 1.0691x faster
   assign-custom-setter                               4.6286+-0.2730            4.3310+-0.0653          might be 1.0687x faster
   basic-set                                          9.3418+-1.1906            9.2752+-0.1690        
   big-int-mul                                        4.3264+-0.3911            4.1725+-0.0620          might be 1.0369x faster
   boolean-test                                       3.1790+-0.1382            3.1280+-0.0139          might be 1.0163x faster
   branch-fold                                        3.9252+-0.2358            3.8127+-0.0331          might be 1.0295x faster
   by-val-generic                                     8.1760+-0.3284     !      8.9697+-0.3458        ! definitely 1.0971x slower
   call-spread-apply                                 32.0479+-3.1559           31.0922+-2.0057          might be 1.0307x faster
   call-spread-call                                  25.4057+-0.4680     ?     26.2829+-1.4866        ? might be 1.0345x slower
   captured-assignments                               0.4797+-0.0127            0.4755+-0.0179        
   cast-int-to-double                                 5.6230+-0.3336            5.4208+-0.0634          might be 1.0373x faster
   cell-argument                                      8.6620+-0.3429            8.5187+-0.2063          might be 1.0168x faster
   cfg-simplify                                       2.9849+-0.0925     ?      3.0175+-0.2102        ? might be 1.0109x slower
   chain-getter-access                                9.9519+-0.1992     ?     10.1432+-0.5535        ? might be 1.0192x slower
   cmpeq-obj-to-obj-other                            12.2729+-0.9068           11.9036+-1.5604          might be 1.0310x faster
   constant-test                                      5.1266+-0.0604            5.0997+-0.0312        
   DataView-custom-properties                        40.2454+-1.9065     ?     41.2012+-3.3949        ? might be 1.0237x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.5475+-0.0795            0.5474+-0.1165        
   delay-tear-off-arguments-strictmode               15.3028+-2.2434           13.8484+-0.4374          might be 1.1050x faster
   deltablue-varargs                                206.2977+-2.3774          205.7591+-1.3179        
   destructuring-arguments                           18.7173+-2.5533           17.3550+-1.3083          might be 1.0785x faster
   destructuring-swap                                 5.1874+-0.0527     ?      5.2217+-0.1419        ?
   direct-arguments-getbyval                          1.2988+-0.1698            1.2687+-0.0700          might be 1.0237x faster
   div-boolean-double                                 5.3942+-0.0243     ?      5.5302+-0.2961        ? might be 1.0252x slower
   div-boolean                                        8.0604+-0.1247            7.9575+-0.0145          might be 1.0129x faster
   double-get-by-val-out-of-bounds                    4.9522+-0.8728            4.6808+-0.0178          might be 1.0580x faster
   double-pollution-getbyval                          9.2515+-0.2313     ?      9.4180+-0.7314        ? might be 1.0180x slower
   double-pollution-putbyoffset                       4.4229+-0.0975     ?      4.5701+-0.2961        ? might be 1.0333x slower
   double-to-int32-typed-array-no-inline              2.4133+-0.1526            2.3821+-0.1396          might be 1.0131x faster
   double-to-int32-typed-array                        2.0322+-0.0507     ?      2.0406+-0.0283        ?
   double-to-uint32-typed-array-no-inline             2.5227+-0.3676            2.5107+-0.3433        
   double-to-uint32-typed-array                       2.1241+-0.0428            2.1025+-0.0928          might be 1.0103x faster
   elidable-new-object-dag                           44.1537+-2.1793           43.4955+-2.4640          might be 1.0151x faster
   elidable-new-object-roflcopter                    48.8073+-1.5872           48.6384+-2.9913        
   elidable-new-object-then-call                     41.1016+-2.6137     ?     41.9865+-2.0017        ? might be 1.0215x slower
   elidable-new-object-tree                          46.9609+-1.3357           46.6912+-3.0315        
   empty-string-plus-int                              5.6396+-0.2302            5.5134+-0.0595          might be 1.0229x faster
   emscripten-cube2hash                              39.9625+-1.8981     ?     40.8588+-2.9801        ? might be 1.0224x slower
   exit-length-on-plain-object                       14.9265+-2.5562           14.2688+-0.2298          might be 1.0461x faster
   external-arguments-getbyval                        1.3138+-0.0911            1.3133+-0.1366        
   external-arguments-putbyval                        2.4555+-0.2485            2.4453+-0.1447        
   fixed-typed-array-storage-var-index                1.3755+-0.0712     ?      1.4097+-0.2845        ? might be 1.0249x slower
   fixed-typed-array-storage                          1.0171+-0.0485            0.9756+-0.0289          might be 1.0425x faster
   Float32Array-matrix-mult                           4.5505+-0.0764            4.5218+-0.0463        
   Float32Array-to-Float64Array-set                  60.8813+-3.3144     ^     54.0015+-1.5759        ^ definitely 1.1274x faster
   Float64Array-alloc-long-lived                     76.6037+-2.7884           74.8830+-1.3130          might be 1.0230x faster
   Float64Array-to-Int16Array-set                    71.0206+-3.0738     ?     77.7768+-6.6803        ? might be 1.0951x slower
   fold-double-to-int                                14.4783+-0.3233     ?     14.8643+-1.3144        ? might be 1.0267x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.7030+-0.9111           11.3424+-1.4075          might be 1.0318x faster
   fold-get-by-id-to-multi-get-by-offset              9.9055+-0.1781            9.6994+-0.5771          might be 1.0213x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.7646+-1.2005     ?      9.4385+-1.4057        ? might be 1.0769x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.5150+-1.2761     ?      8.6652+-2.0442        ? might be 1.0176x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.2055+-1.8524     ?      8.2840+-0.5914        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.1033+-1.2602     ?      5.1868+-0.4844        ? might be 1.2641x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.0004+-0.2394            9.5828+-0.5686          might be 1.0436x faster
   fold-put-by-id-to-multi-put-by-offset              9.5815+-2.0438            8.8173+-0.3280          might be 1.0867x faster
   fold-put-structure                                 6.0390+-0.2882     ?      6.0615+-1.3184        ?
   for-of-iterate-array-entries                       4.6528+-0.1000     ?      4.9360+-0.2011        ? might be 1.0609x slower
   for-of-iterate-array-keys                          4.0590+-0.0844            4.0055+-0.1038          might be 1.0133x faster
   for-of-iterate-array-values                        3.8528+-0.1344     ?      3.9755+-0.1058        ? might be 1.0319x slower
   fround                                            20.3715+-0.7173           20.0106+-1.0150          might be 1.0180x faster
   ftl-library-inlining-dataview                     84.4370+-3.3389           82.3295+-5.4317          might be 1.0256x faster
   ftl-library-inlining                              79.4368+-27.6062          79.4171+-28.8631       
   function-dot-apply                                 2.0460+-0.2811            1.9516+-0.0364          might be 1.0484x faster
   function-test                                      3.5811+-0.1076            3.5625+-0.1781        
   function-with-eval                                96.2352+-4.1256           93.9195+-1.4014          might be 1.0247x faster
   gcse-poly-get-less-obvious                        20.4130+-2.0139           19.6150+-1.5507          might be 1.0407x faster
   gcse-poly-get                                     23.1650+-2.6003     ?     23.5443+-1.5341        ? might be 1.0164x slower
   gcse                                               4.5631+-0.1888            4.4955+-0.1484          might be 1.0150x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.9807+-0.1281            2.8977+-0.0444          might be 1.0286x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.2600+-0.0621     ?      6.5240+-0.3008        ? might be 1.0422x slower
   get-by-id-chain-from-try-block                     7.8746+-2.2746     ?      8.0807+-2.0285        ? might be 1.0262x slower
   get-by-id-check-structure-elimination              5.2618+-0.0177     !      5.3340+-0.0535        ! definitely 1.0137x slower
   get-by-id-proto-or-self                           17.3008+-0.7284     ?     18.0066+-1.3219        ? might be 1.0408x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.0541+-0.0611     ?      3.0753+-0.0684        ?
   get-by-id-self-or-proto                           18.2318+-1.3056           17.4990+-0.3800          might be 1.0419x faster
   get-by-val-out-of-bounds                           4.6962+-0.2530            4.6355+-0.4960          might be 1.0131x faster
   get_callee_monomorphic                             3.8200+-0.1427     ?      3.9890+-0.2677        ? might be 1.0442x slower
   get_callee_polymorphic                             4.1227+-0.7453            3.8948+-0.4371          might be 1.0585x faster
   getter-no-activation                               4.8213+-0.7314            4.6517+-0.5772          might be 1.0364x faster
   getter-richards                                  132.5937+-13.0667         123.6292+-11.8178         might be 1.0725x faster
   getter                                             5.9795+-0.4298     ?      6.0554+-0.7356        ? might be 1.0127x slower
   global-var-const-infer-fire-from-opt               0.9186+-0.1409     ?      1.1142+-0.4245        ? might be 1.2130x slower
   global-var-const-infer                             0.9664+-0.0570            0.9365+-0.0457          might be 1.0320x faster
   HashMap-put-get-iterate-keys                      28.0896+-0.8943           27.9587+-0.6370        
   HashMap-put-get-iterate                           27.6287+-0.4826     ?     28.1765+-1.7184        ? might be 1.0198x slower
   HashMap-string-put-get-iterate                    28.7181+-1.6490           28.3534+-1.0206          might be 1.0129x faster
   hoist-make-rope                                   12.3358+-1.8327     ?     12.5195+-0.8813        ? might be 1.0149x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.2323+-0.0748            5.1757+-0.2041          might be 1.0109x faster
   hoist-poly-check-structure                         3.8425+-0.0653            3.8362+-0.1203        
   imul-double-only                                   8.4985+-1.2454            7.8279+-0.0744          might be 1.0857x faster
   imul-int-only                                     10.1088+-0.3852           10.0084+-0.8274          might be 1.0100x faster
   imul-mixed                                         8.2195+-1.3630     ?      8.3494+-0.2618        ? might be 1.0158x slower
   in-four-cases                                     19.9299+-0.4547           19.5334+-0.2036          might be 1.0203x faster
   in-one-case-false                                 10.5730+-0.6908           10.5100+-0.7879        
   in-one-case-true                                  10.3608+-0.2022     ?     10.7911+-1.0305        ? might be 1.0415x slower
   in-two-cases                                      10.4617+-0.0860     ?     10.8655+-0.6294        ? might be 1.0386x slower
   indexed-properties-in-objects                      3.0970+-0.2809            3.0087+-0.0443          might be 1.0294x faster
   infer-closure-const-then-mov-no-inline             3.7805+-0.3239     ?      3.8601+-0.2664        ? might be 1.0211x slower
   infer-closure-const-then-mov                      17.0070+-0.5642     ?     17.3196+-0.6389        ? might be 1.0184x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.1075+-0.2015     ?     13.4257+-2.6467        ? might be 1.1089x slower
   infer-closure-const-then-put-to-scope             23.2585+-1.7637     ?     23.3239+-1.9686        ?
   infer-closure-const-then-reenter-no-inline   
                                                     50.0488+-1.3070     ?     51.7751+-3.4030        ? might be 1.0345x slower
   infer-closure-const-then-reenter                 130.0842+-2.5610     ?    133.4355+-4.4796        ? might be 1.0258x slower
   infer-constant-global-property                    31.9245+-2.7792     ?     33.5731+-4.0660        ? might be 1.0516x slower
   infer-constant-property                            2.8525+-0.0680     ?      2.8671+-0.1618        ?
   infer-one-time-closure-ten-vars                   12.8653+-1.2087           12.5645+-0.4504          might be 1.0239x faster
   infer-one-time-closure-two-vars                   12.1858+-0.4480           11.8857+-0.1905          might be 1.0252x faster
   infer-one-time-closure                            11.9984+-0.2051           11.9908+-0.4980        
   infer-one-time-deep-closure                       22.0626+-2.9252           21.2612+-0.4942          might be 1.0377x faster
   inline-arguments-access                            4.5212+-0.2137     ?      4.5767+-0.4987        ? might be 1.0123x slower
   inline-arguments-aliased-access                    4.4979+-0.4806     ?      4.7552+-0.6129        ? might be 1.0572x slower
   inline-arguments-local-escape                      4.5390+-0.3838     ?      5.0810+-0.3323        ? might be 1.1194x slower
   inline-get-scoped-var                              4.6477+-0.4593            4.5239+-0.3821          might be 1.0274x faster
   inlined-put-by-id-transition                      11.4587+-1.4563     ?     11.7420+-1.4983        ? might be 1.0247x slower
   int-or-other-abs-then-get-by-val                   5.1860+-0.1997            5.1139+-0.0447          might be 1.0141x faster
   int-or-other-abs-zero-then-get-by-val             17.2260+-0.4267     ?     17.8947+-1.7213        ? might be 1.0388x slower
   int-or-other-add-then-get-by-val                   4.4290+-0.0545     ?      4.4310+-0.0421        ?
   int-or-other-add                                   5.5532+-0.1270            5.4623+-0.0484          might be 1.0166x faster
   int-or-other-div-then-get-by-val                   4.4125+-0.0646     ?      4.4226+-0.0826        ?
   int-or-other-max-then-get-by-val                   4.5190+-0.0552            4.5026+-0.0434        
   int-or-other-min-then-get-by-val                   4.6031+-0.0389     ?      4.6180+-0.0888        ?
   int-or-other-mod-then-get-by-val                   4.0503+-0.1316     ?      4.1781+-0.2944        ? might be 1.0316x slower
   int-or-other-mul-then-get-by-val                   4.2066+-0.1859            4.1407+-0.0341          might be 1.0159x faster
   int-or-other-neg-then-get-by-val                   4.7930+-0.0185     ?      4.8256+-0.2025        ?
   int-or-other-neg-zero-then-get-by-val             17.4423+-0.3243     ?     18.9487+-2.3019        ? might be 1.0864x slower
   int-or-other-sub-then-get-by-val                   4.5312+-0.2115            4.4775+-0.0696          might be 1.0120x faster
   int-or-other-sub                                   3.7001+-0.1037            3.6730+-0.0062        
   int-overflow-local                                 4.5162+-0.1706            4.5076+-0.0133        
   Int16Array-alloc-long-lived                       53.6224+-3.1208           52.7483+-2.9620          might be 1.0166x faster
   Int16Array-bubble-sort-with-byteLength            21.3760+-0.7251     ?     21.3896+-1.2231        ?
   Int16Array-bubble-sort                            21.9354+-3.1794           21.6563+-2.4458          might be 1.0129x faster
   Int16Array-load-int-mul                            1.5958+-0.0293     ?      1.6040+-0.0203        ?
   Int16Array-to-Int32Array-set                      61.0342+-3.2310           59.3398+-3.0788          might be 1.0286x faster
   Int32Array-alloc-large                            27.3370+-1.3215           26.6630+-1.9398          might be 1.0253x faster
   Int32Array-alloc-long-lived                       59.3235+-1.1146     ?     59.6234+-0.6497        ?
   Int32Array-alloc                                   3.5887+-0.2141            3.4852+-0.0789          might be 1.0297x faster
   Int32Array-Int8Array-view-alloc                    8.5151+-1.4795            8.2250+-1.5452          might be 1.0353x faster
   int52-spill                                        6.5405+-0.1225     ?      6.8791+-0.5155        ? might be 1.0518x slower
   Int8Array-alloc-long-lived                        48.6860+-1.6846     ?     49.7970+-1.3155        ? might be 1.0228x slower
   Int8Array-load-with-byteLength                     3.5793+-0.2118            3.5008+-0.0688          might be 1.0224x faster
   Int8Array-load                                     3.5576+-0.1021            3.5294+-0.0846        
   integer-divide                                    12.0565+-0.1549     ?     12.5912+-1.5581        ? might be 1.0444x slower
   integer-modulo                                     2.2595+-0.1345            2.2085+-0.1185          might be 1.0231x faster
   large-int-captured                                 5.8019+-0.0723     ?      5.9114+-0.4529        ? might be 1.0189x slower
   large-int-neg                                     17.2123+-0.2631     ?     17.5643+-1.6377        ? might be 1.0204x slower
   large-int                                         15.7283+-0.3632     ?     16.6520+-2.7693        ? might be 1.0587x slower
   logical-not                                        4.6768+-0.0260            4.6689+-0.0490        
   lots-of-fields                                    13.8820+-1.0509     ?     14.4700+-1.9736        ? might be 1.0424x slower
   make-indexed-storage                               3.2833+-0.0692     ?      3.3857+-0.3178        ? might be 1.0312x slower
   make-rope-cse                                      4.9207+-0.7355            4.6788+-0.2703          might be 1.0517x faster
   marsaglia-larger-ints                             40.8651+-1.5773           40.1308+-1.6373          might be 1.0183x faster
   marsaglia-osr-entry                               24.5448+-2.1703           23.3406+-0.6890          might be 1.0516x faster
   max-boolean                                        2.9070+-0.6143            2.6953+-0.1621          might be 1.0786x faster
   method-on-number                                  17.9919+-0.3237     !     20.2424+-1.1514        ! definitely 1.1251x slower
   min-boolean                                        2.5980+-0.0392     ?      2.8089+-0.5239        ? might be 1.0812x slower
   minus-boolean-double                               3.3120+-0.0885            3.2692+-0.0544          might be 1.0131x faster
   minus-boolean                                      2.4321+-0.0682     ?      2.6010+-0.5260        ? might be 1.0695x slower
   misc-strict-eq                                    40.6736+-3.8856     ?     41.1609+-4.9408        ? might be 1.0120x slower
   mod-boolean-double                                11.7618+-0.6281           11.1960+-0.3173          might be 1.0505x faster
   mod-boolean                                        8.0599+-0.0875     ?      8.1713+-0.4818        ? might be 1.0138x slower
   mul-boolean-double                                 3.8729+-0.1598            3.8173+-0.1474          might be 1.0146x faster
   mul-boolean                                        2.9892+-0.0273            2.9784+-0.0951        
   neg-boolean                                        3.3752+-0.1443            3.3088+-0.2579          might be 1.0201x faster
   negative-zero-divide                               0.4194+-0.1505            0.3668+-0.0075          might be 1.1433x faster
   negative-zero-modulo                               0.3868+-0.0385            0.3842+-0.0682        
   negative-zero-negate                               0.3728+-0.0945            0.3410+-0.0127          might be 1.0933x faster
   nested-function-parsing                           39.6183+-3.5077           39.6093+-2.7608        
   new-array-buffer-dead                              2.8963+-0.0621     ?      2.9306+-0.0921        ? might be 1.0118x slower
   new-array-buffer-push                              6.8108+-0.1706     ?      7.2497+-1.2098        ? might be 1.0644x slower
   new-array-dead                                    12.4606+-0.4844     ?     12.6086+-0.3677        ? might be 1.0119x slower
   new-array-push                                     4.0424+-0.1111     ?      4.1028+-0.1648        ? might be 1.0149x slower
   number-test                                        3.1306+-0.0428            3.1083+-0.0851        
   object-closure-call                                5.9149+-0.0382     ^      5.7348+-0.0792        ^ definitely 1.0314x faster
   object-test                                        3.2444+-0.0284            3.2316+-0.1183        
   obvious-sink-pathology-taken                     151.7202+-2.0247          149.1495+-2.7097          might be 1.0172x faster
   obvious-sink-pathology                           145.8488+-3.9213          142.6227+-3.7078          might be 1.0226x faster
   obviously-elidable-new-object                     37.4105+-3.8953     ?     37.5935+-4.3754        ?
   plus-boolean-arith                                 2.6666+-0.0766     ?      2.7058+-0.2510        ? might be 1.0147x slower
   plus-boolean-double                                3.3098+-0.0726            3.2881+-0.1203        
   plus-boolean                                       2.5545+-0.0429            2.5253+-0.0781          might be 1.0116x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.4142+-0.0442            3.4090+-0.0711        
   poly-chain-access-different-prototypes             2.7258+-0.0423     ?      2.8146+-0.3816        ? might be 1.0326x slower
   poly-chain-access-simpler                          3.4363+-0.0898     ?      3.4808+-0.1713        ? might be 1.0129x slower
   poly-chain-access                                  2.7209+-0.0471     ?      2.7233+-0.0635        ?
   poly-stricteq                                     61.9720+-1.7917           59.2036+-2.8166          might be 1.0468x faster
   polymorphic-array-call                             1.6503+-0.1817     ^      1.2704+-0.0384        ^ definitely 1.2990x faster
   polymorphic-get-by-id                              3.2861+-0.0850            3.2661+-0.1297        
   polymorphic-put-by-id                             30.3610+-1.5506     ?     31.3870+-2.5151        ? might be 1.0338x slower
   polymorphic-structure                             16.0514+-3.2583           15.3928+-0.4615          might be 1.0428x faster
   polyvariant-monomorphic-get-by-id                  8.8271+-0.1101     ?      8.8398+-0.1621        ?
   proto-getter-access                                9.9374+-0.3309     ?     10.0385+-0.2735        ? might be 1.0102x slower
   put-by-id-replace-and-transition                   9.8205+-1.7893            9.5883+-1.1908          might be 1.0242x faster
   put-by-id-slightly-polymorphic                     2.9927+-0.0419     ?      3.0087+-0.0425        ?
   put-by-id                                         14.2062+-0.9227           14.1702+-1.4972        
   put-by-val-direct                                  0.6605+-0.0520     ^      0.5859+-0.0174        ^ definitely 1.1273x faster
   put-by-val-large-index-blank-indexing-type   
                                                      6.2250+-0.6399     ?      6.3312+-0.4985        ? might be 1.0171x slower
   put-by-val-machine-int                             2.7677+-0.1192            2.7460+-0.0719        
   rare-osr-exit-on-local                            15.6710+-0.4058     ?     15.8860+-1.8664        ? might be 1.0137x slower
   register-pressure-from-osr                        22.7346+-1.8093           22.2213+-0.2917          might be 1.0231x faster
   setter                                             5.7191+-0.7343     ?      5.7878+-0.8677        ? might be 1.0120x slower
   simple-activation-demo                            28.0626+-2.4595           26.1052+-0.9779          might be 1.0750x faster
   simple-getter-access                              13.1030+-0.4993     ?     13.3005+-1.5880        ? might be 1.0151x slower
   simple-poly-call-nested                            8.2285+-0.2209     ?      8.4359+-1.0258        ? might be 1.0252x slower
   simple-poly-call                                   1.4301+-0.1054            1.4286+-0.1584        
   sin-boolean                                       24.2855+-1.8325     ?     24.8975+-1.2066        ? might be 1.0252x slower
   sinkable-new-object-dag                           73.8885+-5.4357     ?     75.1243+-3.6712        ? might be 1.0167x slower
   sinkable-new-object-taken                         52.6788+-2.7322           51.8333+-1.8672          might be 1.0163x faster
   sinkable-new-object                               40.5078+-1.9891           39.5819+-2.1702          might be 1.0234x faster
   slow-array-profile-convergence                     2.8437+-0.2601     ?      2.9272+-0.1077        ? might be 1.0294x slower
   slow-convergence                                   3.3817+-0.3030     ?      3.6255+-0.5350        ? might be 1.0721x slower
   sorting-benchmark                                 22.8145+-1.5779     ?     24.2878+-2.4690        ? might be 1.0646x slower
   sparse-conditional                                 1.2437+-0.0146            1.2225+-0.0384          might be 1.0173x faster
   splice-to-remove                                  17.6395+-0.6224     ?     18.0823+-2.1924        ? might be 1.0251x slower
   string-char-code-at                               16.5711+-0.7166     ?     16.6688+-0.5397        ?
   string-concat-object                               2.8398+-0.6927            2.6166+-0.1321          might be 1.0853x faster
   string-concat-pair-object                          2.7083+-0.4407            2.5596+-0.0824          might be 1.0581x faster
   string-concat-pair-simple                         11.5196+-1.2587     ?     13.7687+-1.9338        ? might be 1.1952x slower
   string-concat-simple                              12.9269+-1.5729           12.7280+-2.3895          might be 1.0156x faster
   string-cons-repeat                                 9.3944+-0.6038     ?      9.7007+-2.1792        ? might be 1.0326x slower
   string-cons-tower                                  8.8104+-0.9834            8.5385+-1.1839          might be 1.0319x faster
   string-equality                                   18.6157+-2.3703     ?     18.8691+-2.0778        ? might be 1.0136x slower
   string-get-by-val-big-char                         7.3536+-0.0701     ?      7.6168+-0.2297        ? might be 1.0358x slower
   string-get-by-val-out-of-bounds-insane             3.9525+-0.2452     ?      4.4874+-1.0909        ? might be 1.1353x slower
   string-get-by-val-out-of-bounds                    5.4192+-0.1069     ?      5.5419+-0.0650        ? might be 1.0226x slower
   string-get-by-val                                  3.5580+-0.0598     ^      3.4096+-0.0622        ^ definitely 1.0435x faster
   string-hash                                        2.1770+-0.0070            2.1479+-0.0760          might be 1.0135x faster
   string-long-ident-equality                        15.9767+-2.1789           15.5358+-2.1266          might be 1.0284x faster
   string-out-of-bounds                              15.7789+-1.6181           15.1697+-0.3320          might be 1.0402x faster
   string-repeat-arith                               34.1717+-3.3084     ?     34.9545+-3.3442        ? might be 1.0229x slower
   string-sub                                        71.7735+-3.6738           71.7545+-5.5474        
   string-test                                        3.1256+-0.0424            3.0577+-0.0348          might be 1.0222x faster
   string-var-equality                               31.7166+-3.5139           30.8367+-0.4539          might be 1.0285x faster
   structure-hoist-over-transitions                   2.7120+-0.0860            2.6825+-0.2358          might be 1.0110x faster
   substring-concat-weird                            40.1957+-2.7115           40.1521+-3.4643        
   substring-concat                                  42.0344+-2.0612           41.5757+-1.7027          might be 1.0110x faster
   substring                                         48.8387+-3.3396           48.2365+-1.8110          might be 1.0125x faster
   switch-char-constant                               2.8821+-0.0145     ?      2.8869+-0.0958        ?
   switch-char                                        7.5957+-0.4992            7.2709+-1.6305          might be 1.0447x faster
   switch-constant                                    8.6159+-0.7821            8.3000+-0.4317          might be 1.0381x faster
   switch-string-basic-big-var                       16.0525+-1.2128     ?     17.0074+-2.7001        ? might be 1.0595x slower
   switch-string-basic-big                           14.3300+-0.1560           14.1895+-0.1202        
   switch-string-basic-var                           15.2181+-0.5239     ?     16.0228+-2.5126        ? might be 1.0529x slower
   switch-string-basic                               13.5820+-0.4264     ?     14.6091+-2.0714        ? might be 1.0756x slower
   switch-string-big-length-tower-var                21.3647+-2.3355     ?     22.3046+-3.4698        ? might be 1.0440x slower
   switch-string-length-tower-var                    16.3331+-2.3117           15.2426+-0.2953          might be 1.0715x faster
   switch-string-length-tower                        13.1304+-0.1401     ?     15.1423+-2.5895        ? might be 1.1532x slower
   switch-string-short                               14.0088+-2.6475           13.0826+-0.1402          might be 1.0708x faster
   switch                                            12.8443+-0.5251     ?     13.1055+-0.8217        ? might be 1.0203x slower
   tear-off-arguments-simple                          3.3702+-0.0839     ?      3.5972+-0.2397        ? might be 1.0674x slower
   tear-off-arguments                                 4.6345+-0.0988     ?      4.6605+-0.0321        ?
   temporal-structure                                12.6454+-0.2703     ?     12.9739+-1.7665        ? might be 1.0260x slower
   to-int32-boolean                                  14.2952+-0.4462           14.1019+-0.1224          might be 1.0137x faster
   try-catch-get-by-val-cloned-arguments             15.8500+-2.7738           15.1260+-2.6972          might be 1.0479x faster
   try-catch-get-by-val-direct-arguments              6.2993+-0.4304            6.1835+-0.6581          might be 1.0187x faster
   try-catch-get-by-val-scoped-arguments              7.9197+-0.5566     ^      7.0079+-0.0670        ^ definitely 1.1301x faster
   undefined-property-access                        393.5723+-6.8992     ?    396.8580+-5.8033        ?
   undefined-test                                     3.2735+-0.1837            3.1530+-0.0499          might be 1.0382x faster
   unprofiled-licm                                   24.7155+-2.6027           23.2974+-1.5176          might be 1.0609x faster
   varargs-call                                      15.4370+-0.2554           15.2589+-0.0466          might be 1.0117x faster
   varargs-construct-inline                          24.3502+-2.5780           22.9890+-1.5495          might be 1.0592x faster
   varargs-construct                                 33.1280+-0.9383     ?     34.9989+-4.5097        ? might be 1.0565x slower
   varargs-inline                                     9.4832+-0.5239            9.2231+-0.2092          might be 1.0282x faster
   varargs-strict-mode                                9.8345+-0.1240     ?     10.3357+-1.2485        ? might be 1.0510x slower
   varargs                                            9.9796+-0.8077            9.9591+-0.4163        
   weird-inlining-const-prop                          2.6328+-0.5683            2.4565+-0.4356          might be 1.0718x faster

   &lt;geometric&gt;                                        8.9038+-0.0300     ?      8.9122+-0.0346        ? might be 1.0009x slower

                                                         Vanilla                  Chocolate                                     
AsmBench:
   bigfib.cpp                                       506.1097+-4.1926     ?    506.1874+-3.6188        ?
   cray.c                                           444.6219+-1.9594          443.7471+-1.1116        
   dry.c                                            509.1544+-1.3349          499.6282+-18.2110         might be 1.0191x faster
   FloatMM.c                                        801.7592+-12.9608         799.3370+-3.1181        
   gcc-loops.cpp                                   4284.0927+-11.6206    ?   4299.0363+-14.9316       ?
   n-body.c                                        1019.6232+-7.4517         1015.4982+-2.2716        
   Quicksort.c                                      459.5056+-6.7374     ?    460.2643+-4.0573        ?
   stepanov_container.cpp                          3776.5687+-14.3043    ?   3780.9139+-15.6689       ?
   Towers.c                                         281.2679+-2.0933     ^    272.3129+-4.1433        ^ definitely 1.0329x faster

   &lt;geometric&gt;                                      834.3013+-4.3130          829.3074+-2.6056          might be 1.0060x faster

                                                         Vanilla                  Chocolate                                     
CompressionBench:
   huffman                                          388.9741+-1.0976     ^    375.0577+-2.4090        ^ definitely 1.0371x faster
   arithmetic-simple                                413.6960+-5.7744          408.3135+-3.6967          might be 1.0132x faster
   arithmetic-precise                               307.6225+-2.5547     ?    308.2158+-12.4833       ?
   arithmetic-complex-precise                       305.7736+-1.4695     ?    308.5398+-5.2116        ?
   arithmetic-precise-order-0                       445.4406+-18.1473         432.0716+-4.7045          might be 1.0309x faster
   arithmetic-precise-order-1                       339.1055+-3.2461          334.8203+-3.5012          might be 1.0128x faster
   arithmetic-precise-order-2                       379.4807+-8.3791          377.9154+-3.4060        
   arithmetic-simple-order-1                        430.4996+-9.2633     ?    431.3104+-2.4022        ?
   arithmetic-simple-order-2                        478.9820+-3.3279     ?    484.5358+-4.0746        ? might be 1.0116x slower
   lz-string                                        349.8705+-10.9710    ?    350.9981+-3.4344        ?

   &lt;geometric&gt;                                      379.8642+-1.3744          377.2494+-1.4579          might be 1.0069x faster

                                                         Vanilla                  Chocolate                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                                   66.5330+-0.1977           66.2387+-0.1136          might be 1.0044x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084717</commentid>
    <comment_count>3</comment_count>
      <attachid>250620</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-12 20:38:34 -0700</bug_when>
    <thetext>Created attachment 250620
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084820</commentid>
    <comment_count>4</comment_count>
      <attachid>250620</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-13 09:22:33 -0700</bug_when>
    <thetext>Comment on attachment 250620
Proposed patch

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

ChangeLog doesn’t make clear why StructureFlags all have to be public now despite the fact that this is one of the most frequent changes in the patch. Also doesn’t mention moving Base::StructureFlags to the front of all the StructureFlags expressions, which is a small thing, but done so many times I think it makes sense to mention in change log.

Note that in most cases where I say StructureFlags isn’t needed, we also don’t use or need the Base typedef either.

&gt; Source/JavaScriptCore/API/JSCallbackObject.h:128
&gt; +    static const unsigned StructureFlags = Parent::StructureFlags | ProhibitsPropertyCaching | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | ImplementsHasInstance | OverridesHasInstance | OverridesGetPropertyNames;

Why use Parent here instead of Base?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:270
&gt; +    static const unsigned StructureFlags = StructureIsImmortal | Base::StructureFlags;

In other cases we put the base structure flags first, but here we put them last.

&gt; Source/JavaScriptCore/heap/MarkedAllocator.h:77
&gt; +    , m_needsDestruction(false)

Would be nicer to initialize this in the class definition rather than here.

    bool m_needsDestruction { false };

&gt; Source/JavaScriptCore/inspector/JSInjectedScriptHost.h:38
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

I don’t think this line of code is needed, but maybe it’s useful for clarity that no flags are being added?

&gt; Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h:37
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

Ditto.

&gt; Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.h:40
&gt;  private:
&gt;      ArrayBufferNeuteringWatchpoint(VM&amp;);

Wonder why this one lonely constructor is up here by itself instead of down with the other private members.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.h:61
&gt;      TerminatedExecutionError(VM&amp; vm)

This should probably be marked explicit. Also seems like it would be nicer if this class used the more normal &quot;public members first&quot; style.

&gt; Source/JavaScriptCore/runtime/Executable.h:87
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

Why no StructureIsImmortal here? Also, if there are no flags being added, then why define this at all?

&gt; Source/JavaScriptCore/runtime/Executable.h:-120
&gt; -    static const unsigned StructureFlags = StructureIsImmortal;

Since it was here.

&gt; Source/JavaScriptCore/runtime/JSEnvironmentRecord.h:48
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

Not sure this is needed (as mentioned above).

&gt; Source/JavaScriptCore/runtime/JSFunction.h:60
&gt; +    const static unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesGetPropertyNames | JSObject::StructureFlags;

Strange that this starts with JSObject::StructureFlags instead of starting with Base::StructureFlags. Could omit ImplementsHasInstance if we started with Base instead of JSObject. Also better to put the inherited flags first as we did elsewhere.

&gt; Source/JavaScriptCore/runtime/JSNameScope.h:38
&gt; +    static const unsigned StructureFlags = Base::StructureFlags| OverridesGetOwnPropertySlot;

Missing space before &quot;|&quot;.

&gt; Source/JavaScriptCore/runtime/JSObject.h:1034
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

Not sure this is needed (see other comments like this above).

&gt; Source/JavaScriptCore/runtime/JSScope.h:152
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

We didn’t need to add this, I don’t think.

&gt; Source/JavaScriptCore/runtime/NumberConstructor.h:33
&gt; +    static const unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | Base::StructureFlags;

Did not put Base at the start here.

&gt; Source/JavaScriptCore/runtime/StringPrototype.h:36
&gt; +    static const unsigned StructureFlags = Base::StructureFlags;

Not sure we need this.

&gt; Source/JavaScriptCore/runtime/Structure.cpp:205
&gt; +    TypeInfo typeInfo = TypeInfo(CellType, StructureFlags);

TypeInfo x = TypeInfo(...) is OK but a little wordy. Maybe one of these:

    TypeInfo x(...);
    TypeInfo x { ... };

&gt; Source/JavaScriptCore/runtime/WeakMapData.h:40
&gt; +    static const unsigned StructureFlags = StructureIsImmortal | Base::StructureFlags;

Did not put Base::StructureFlags first here.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1113
&gt; +        push(@headerContent, &quot;Base::StructureFlags;\n&quot;);

Did not put Base first here in generated code.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4308
&gt;      if (%structureFlags) {
&gt; -        push(@$outputArray, &quot;protected:\n&quot;);
&gt; +        push(@$outputArray, &quot;public:\n&quot;);
&gt;          push(@$outputArray, &quot;    static const unsigned StructureFlags = &quot;);

Seems like we should factor this into a function so we can share code between this and the nearly identical code above.

&gt; Source/WebCore/bridge/runtime_object.h:38
&gt; +    static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;

Did not put Base::StructureFlags first here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084873</commentid>
    <comment_count>5</comment_count>
      <attachid>250658</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-13 10:50:50 -0700</bug_when>
    <thetext>Created attachment 250658
Patch for landing

Fixed most of the above comments. Will tweak code generator separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084901</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-13 12:13:48 -0700</bug_when>
    <thetext>Committed r182747: &lt;http://trac.webkit.org/changeset/182747&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250591</attachid>
            <date>2015-04-11 19:11:00 -0700</date>
            <delta_ts>2015-04-12 20:38:34 -0700</delta_ts>
            <desc>Snack for EWS</desc>
            <filename>ews-143638.diff</filename>
            <type>text/plain</type>
            <size>120235</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CmluZGV4IGQyNzkyZjguLmYxNzg5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlOwogCiAgICAgc3RhdGljIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpT
T2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewpAQCAtNTYs
NyArNTcsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RDYWxsQXND
b25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDbGFzc1JlZik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgQVBJQ2FsbGJhY2tGdW5jdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZmMxMTlkYS4u
YzA1NmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVm
IFBhcmVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFBhcmVudDo6U3RydWN0dXJlRmxhZ3MgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgfkpT
Q2FsbGJhY2tPYmplY3QoKTsKIApAQCAtMTcwLDkgKzE3MSw2IEBAIHB1YmxpYzoKIAogICAgIHVz
aW5nIFBhcmVudDo6bWV0aG9kVGFibGU7CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgUGFyZW50OjpT
dHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShj
b25zdCBKU09iamVjdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjYTU0ZDIzLi4w
MjcyN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMTUt
MDQtMTEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0
IHNlZ3JlZ2F0ZSBoZWFwIG9iamVjdHMgYmFzZWQgb24gU3RydWN0dXJlIGltbW9ydGFsaXR5Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQzNjM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWRzIG1vcmUgQ2hhbmdlTG9nLiBUaGlz
IGlzIGZvciBFV1MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6Cisg
ICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVN
YWtlUm9wZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnN1
YnNwYWNlRm9yT2JqZWN0RGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRv
ckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VG
b3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6
c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SGVhcDo6YWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZU9iamVjdE9mVHlwZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2Nh
dG9yRm9yT2JqZWN0T2ZUeXBlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVXaXRoTm9y
bWFsRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlV2l0
aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9j
YXRlQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjppbml0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVjdG9y
VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpz
d2VlcEhlbHBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpkZXN0cnVjdG9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFj
ZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpp
c1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0
ZWQpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VG
b3JPYmplY3RzV2l0aE5vcm1hbERlc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvckFsbG9jYXRvckZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpu
b3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVj
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
aDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICog
cnVudGltZS9HZW5lcmljQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICog
cnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZv
KToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6CisgICAg
ICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0Zp
bmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VSZWFjdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU1Njb3BlLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5m
by5oOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAg
ICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAg
ICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAgICog
cnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmg6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1dlYWtNYXBEYXRhLmg6CisKIDIwMTUtMDQtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgRVM2OiBJdGVyYXRvciB0b1N0cmluZyBuYW1l
cyBzaG91bGQgYmUgY29uc2lzdGVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA3OTcyMzI3Li44NTg0YWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtMTAyLDcgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVj
dXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwogICAgIGZyaWVuZCBjbGFzcyBW
TTsKKwogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOworCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0q
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBSZWZQdHI8U291cmNlUHJv
dmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKQEAgLTE2Miw3ICsxNjUs
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFs
U3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KQEAgLTIxNCw4ICsyMTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJ
bW1vcnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogfTsKIApAQCAtMjY3LDggKzI2Nyw5IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9u
IHsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAKICAgICBlbnVtIHsg
Q2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKQEAgLTYwNCw4ICs2MDUsNiBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxzaXplX3Q+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHM7CiAKIHByb3RlY3RlZDoKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHB1
YmxpYzoKQEAgLTYzNyw2ICs2MzYsOCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKKwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICB2b2lkIGFk
ZEZ1bmN0aW9uRGVjbGFyYXRpb24oVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlKQpAQCAtNjg4LDYgKzY4
OSw4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIFVubGlua2VkR2xvYmFsQ29k
ZUJsb2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIGNvbnN0IElkZW50aWZpZXImIHZhcmlhYmxl
KHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBtX3ZhcmlhYmxlc1tpbmRleF07IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IDIyN2NiMTku
LjQ0MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBKU1Njb3BlOwogY2xhc3MgRGVidWdnZXJT
Y29wZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMgRGVidWdnZXJTY29w
ZSogY3JlYXRlKFZNJiB2bSwgSlNTY29wZSogc2NvcGUpCiAgICAgewpAQCAtOTgsOCArOTksNiBA
QCBwcml2YXRlOgogCiAgICAgSlNTY29wZSoganNTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nv
cGUuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBXcml0ZUJhcnJpZXI8SlNTY29wZT4g
bV9zY29wZTsKICAgICBXcml0ZUJhcnJpZXI8RGVidWdnZXJTY29wZT4gbV9uZXh0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGVi
NTBjYWQuLjE2MTE3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0yNzk1LDcgKzI3OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNj
cmF0Y2guZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgIE1hcmtlZEFsbG9jYXRvciYgbWFya2VkQWxsb2NhdG9yID0gbV9qaXQudm0oKS0+aGVhcC5h
bGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVvZihK
U1JvcGVTdHJpbmcpKTsKKyAgICBNYXJrZWRBbGxvY2F0b3ImIG1hcmtlZEFsbG9jYXRvciA9IG1f
aml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aERlc3RydWN0b3Ioc2l6ZW9mKEpT
Um9wZVN0cmluZykpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cigmbWFya2VkQWxsb2Nh
dG9yKSwgYWxsb2NhdG9yR1BSKTsKICAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBh
bGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggNzE0MjU1OS4uZTM5ZDBk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAKQEAgLTM0MTksNyArMzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKICAgICAgICAg
CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yID0KLSAgICAgICAgICAgIHZtKCku
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNp
emVvZihKU1JvcGVTdHJpbmcpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC5hbGxvY2F0b3JGb3JP
YmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplb2YoSlNSb3BlU3RyaW5nKSk7CiAgICAgICAgIAogICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVDZWxsKAogICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoJmFsbG9jYXRvciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggOTAx
OWZjNy4uMjJiMGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTM3LDEyICsx
MzcsMTAgQEAgcHVibGljOgogICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0
aW9uIGlzIGluIHByb2dyZXNzCiAgICAgYm9vbCBpc0J1c3koKTsKICAgICBNYXJrZWRTcGFjZTo6
U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBt
X29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCk7IH0KLSAg
ICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0Tm9ybWFsRGVzdHJ1Y3Rv
cigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aE5vcm1hbERl
c3RydWN0b3IoKTsgfQotICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmpl
Y3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFj
ZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUoKTsgfQorICAgIE1hcmtlZFNwYWNlOjpT
dWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3REZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RT
cGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoRGVzdHJ1Y3RvcigpOyB9CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2xhc3NUeXBlPiBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2Jq
ZWN0T2ZUeXBlKCk7CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRo
b3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2Nh
dG9yRm9yKGJ5dGVzKTsgfQotICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0
V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNl
Lm5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9Ci0gICAgTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNp
emVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CisgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0
b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0
U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDbGFzc1R5cGU+IE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0T2ZUeXBl
KHNpemVfdCBieXRlcyk7CiAgICAgQ29waWVkQWxsb2NhdG9yJiBzdG9yYWdlQWxsb2NhdG9yKCkg
eyByZXR1cm4gbV9zdG9yYWdlU3BhY2UuYWxsb2NhdG9yKCk7IH0KICAgICBDaGVja2VkQm9vbGVh
biB0cnlBbGxvY2F0ZVN0b3JhZ2UoSlNDZWxsKiBpbnRlbmRlZE93bmVyLCBzaXplX3QsIHZvaWQq
Kik7CkBAIC0yNjYsOCArMjY0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogCi0gICAgdm9p
ZCogYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZv
ciB1c2Ugd2l0aCBzcGVjaWFsIG9iamVjdHMgd2hvc2UgU3RydWN0dXJlcyBuZXZlciBkaWUuCi0g
ICAgdm9pZCogYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBGb3IgdXNl
IHdpdGggb2JqZWN0cyB0aGF0IGluaGVyaXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBmcm9tIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6
ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycy4KICAgICB2b2lk
KiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmpl
Y3RzIHdpdGhvdXQgZGVzdHJ1Y3RvcnMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBl
PiB2b2lkKiBhbGxvY2F0ZU9iamVjdE9mVHlwZShzaXplX3QpOyAvLyBDaG9vc2VzIG9uZSBvZiB0
aGUgbWV0aG9kcyBhYm92ZSBiYXNlZCBvbiB0eXBlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcElubGluZXMuaAppbmRleCA2YmE1NGRhLi45NTVjYWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIwOSwyMiArMjA5LDEzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2hDb2RlQmxvY2soRnVu
Y3RvciYgZnVuY3RvcikKICAgICByZXR1cm4gbV9jb2RlQmxvY2tzLml0ZXJhdGU8RnVuY3Rvcj4o
ZnVuY3Rvcik7CiB9CiAKLWlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0
cnVjdG9yKHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhEZXN0
cnVjdG9yKHNpemVfdCBieXRlcykKIHsKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQog
ICAgIGRhdGFMb2dGKCJKU0MgR0MgYWxsb2NhdGluZyAlbHUgYnl0ZXMgd2l0aCBub3JtYWwgZGVz
dHJ1Y3Rvci5cbiIsIGJ5dGVzKTsKICNlbmRpZgogICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlv
bihieXRlcykpOwotICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aE5vcm1hbERl
c3RydWN0b3IoYnl0ZXMpOwotfQotCi1pbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGVXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKLXsKLSNpZiBFTkFCTEUoQUxM
T0NBVElPTl9MT0dHSU5HKQotICAgIGRhdGFMb2dGKCJKU0MgR0MgYWxsb2NhdGluZyAlbHUgYnl0
ZXMgd2l0aCBpbW1vcnRhbCBzdHJ1Y3R1cmUgZGVzdHJ1Y3Rvci5cbiIsIGJ5dGVzKTsKLSNlbmRp
ZgotICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwotICAgIHJldHVybiBtX29i
amVjdFNwYWNlLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihieXRlcyk7
CisgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihieXRlcyk7
CiB9CiAKIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVf
dCBieXRlcykKQEAgLTI0MCwxMiArMjMxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlw
ZT4KIHZvaWQqIEhlYXA6OmFsbG9jYXRlT2JqZWN0T2ZUeXBlKHNpemVfdCBieXRlcykKIHsKICAg
ICAvLyBKU0NlbGw6OmNsYXNzSW5mbygpIGV4cGVjdHMgb2JqZWN0cyBhbGxvY2F0ZWQgd2l0aCBu
b3JtYWwgZGVzdHJ1Y3RvciB0byBkZXJpdmUgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KLSAg
ICBBU1NFUlQoKCFDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgQ2xhc3NUeXBlOjpoYXNJ
bW1vcnRhbFN0cnVjdHVyZSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENsYXNzVHlwZSwgSlNEZXN0
cnVjdGlibGVPYmplY3Q+Ojp2YWx1ZSkpOworICAgIEFTU0VSVCgoIUNsYXNzVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbiB8fCAoQ2xhc3NUeXBlOjpTdHJ1Y3R1cmVGbGFncyAmIFN0cnVjdHVyZUlzSW1t
b3J0YWwpIHx8IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBKU0Rlc3RydWN0aWJsZU9i
amVjdD46OnZhbHVlKSk7CiAKLSAgICBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uICYm
IENsYXNzVHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAgIHJldHVybiBhbGxvY2F0
ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3IoYnl0ZXMpOwogICAgIGlmIChDbGFzc1R5
cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZVdpdGhOb3JtYWxE
ZXN0cnVjdG9yKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlV2l0aERlc3RydWN0b3Io
Ynl0ZXMpOwogICAgIHJldHVybiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKGJ5dGVzKTsKIH0K
IApAQCAtMjUzLDEyICsyNDIsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgogTWFy
a2VkU3BhY2U6OlN1YnNwYWNlJiBIZWFwOjpzdWJzcGFjZUZvck9iamVjdE9mVHlwZSgpCiB7CiAg
ICAgLy8gSlNDZWxsOjpjbGFzc0luZm8oKSBleHBlY3RzIG9iamVjdHMgYWxsb2NhdGVkIHdpdGgg
bm9ybWFsIGRlc3RydWN0b3IgdG8gZGVyaXZlIGZyb20gSlNEZXN0cnVjdGlibGVPYmplY3QuCi0g
ICAgQVNTRVJUKCghQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uIHx8IENsYXNzVHlwZTo6aGFz
SW1tb3J0YWxTdHJ1Y3R1cmUgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxDbGFzc1R5cGUsIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Pjo6dmFsdWUpKTsKKyAgICBBU1NFUlQoKCFDbGFzc1R5cGU6Om5lZWRz
RGVzdHJ1Y3Rpb24gfHwgKENsYXNzVHlwZTo6U3RydWN0dXJlRmxhZ3MgJiBTdHJ1Y3R1cmVJc0lt
bW9ydGFsKSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENsYXNzVHlwZSwgSlNEZXN0cnVjdGlibGVP
YmplY3Q+Ojp2YWx1ZSkpOwogICAgIAotICAgIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rp
b24gJiYgQ2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOwogICAgIGlmIChDbGFzc1R5
cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvck9iamVjdE5v
cm1hbERlc3RydWN0b3IoKTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9yT2JqZWN0RGVzdHJ1
Y3RvcigpOwogICAgIHJldHVybiBzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKCk7
CiB9CiAKQEAgLTI2NiwxMiArMjUzLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZT4K
IE1hcmtlZEFsbG9jYXRvciYgSGVhcDo6YWxsb2NhdG9yRm9yT2JqZWN0T2ZUeXBlKHNpemVfdCBi
eXRlcykKIHsKICAgICAvLyBKU0NlbGw6OmNsYXNzSW5mbygpIGV4cGVjdHMgb2JqZWN0cyBhbGxv
Y2F0ZWQgd2l0aCBub3JtYWwgZGVzdHJ1Y3RvciB0byBkZXJpdmUgZnJvbSBKU0Rlc3RydWN0aWJs
ZU9iamVjdC4KLSAgICBBU1NFUlQoKCFDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgQ2xh
c3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENsYXNz
VHlwZSwgSlNEZXN0cnVjdGlibGVPYmplY3Q+Ojp2YWx1ZSkpOworICAgIEFTU0VSVCgoIUNsYXNz
VHlwZTo6bmVlZHNEZXN0cnVjdGlvbiB8fCAoQ2xhc3NUeXBlOjpTdHJ1Y3R1cmVGbGFncyAmIFN0
cnVjdHVyZUlzSW1tb3J0YWwpIHx8IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBKU0Rl
c3RydWN0aWJsZU9iamVjdD46OnZhbHVlKSk7CiAgICAgCi0gICAgaWYgKENsYXNzVHlwZTo6bmVl
ZHNEZXN0cnVjdGlvbiAmJiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQotICAgICAg
ICByZXR1cm4gYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
cihieXRlcyk7CiAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbikKLSAgICAgICAg
cmV0dXJuIGFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVjdG9yKGJ5dGVzKTsKKyAg
ICAgICAgcmV0dXJuIGFsbG9jYXRvckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKGJ5dGVzKTsKICAg
ICByZXR1cm4gYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoYnl0ZXMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAppbmRl
eCBhN2QyOWJiLi4yZGJmOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBNYXJrZWRCbG9jayogTWFya2Vk
QWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBieXRlcykKIAogICAgIHNpemVfdCBjZWxs
U2l6ZSA9IG1fY2VsbFNpemUgPyBtX2NlbGxTaXplIDogV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oYnl0ZXMpOwogCi0gICAgcmV0dXJuIE1hcmtlZEJsb2Nr
OjpjcmVhdGUodGhpcywgYmxvY2tTaXplLCBjZWxsU2l6ZSwgbV9kZXN0cnVjdG9yVHlwZSk7Cisg
ICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgYmxvY2tTaXplLCBjZWxsU2l6ZSwg
bV9uZWVkc0Rlc3RydWN0aW9uKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrKiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgKaW5kZXggYjQ5N2Y4Zi4uMDJhNGFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKQEAgLTI2LDcgKzI2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2b2lkIHJlc3VtZUFsbG9jYXRpbmcoKTsK
ICAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXplOyB9Ci0gICAgTWFya2Vk
QmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKCkgeyByZXR1cm4gbV9kZXN0cnVj
dG9yVHlwZTsgfQorICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIHsgcmV0dXJuIG1fbmVlZHNE
ZXN0cnVjdGlvbjsgfQogICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CiAgICAgSGVhcCogaGVh
cCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIE1hcmtlZEJsb2NrKiB0YWtlTGFzdEFjdGl2ZUJs
b2NrKCkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkQmxvY2so
TWFya2VkQmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKik7Ci0gICAg
dm9pZCBpbml0KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxv
Y2s6OkRlc3RydWN0b3JUeXBlKTsKKyAgICB2b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwg
c2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24pOwogCiAgICAgYm9vbCBpc1Bh
Z2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2NrTGlzdDsKICAgICBEb3Vi
bHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX3JldGlyZWRCbG9ja3M7CiAgICAgc2l6ZV90IG1f
Y2VsbFNpemU7Ci0gICAgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIG1fZGVzdHJ1Y3RvclR5
cGU7CisgICAgYm9vbCBtX25lZWRzRGVzdHJ1Y3Rpb247CiAgICAgSGVhcCogbV9oZWFwOwogICAg
IE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOwogfTsKQEAgLTc0LDE4ICs3NCwxOCBAQCBpbmxp
bmUgTWFya2VkQWxsb2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IoKQogICAgICwgbV9sYXN0QWN0aXZl
QmxvY2soMCkKICAgICAsIG1fbmV4dEJsb2NrVG9Td2VlcCgwKQogICAgICwgbV9jZWxsU2l6ZSgw
KQotICAgICwgbV9kZXN0cnVjdG9yVHlwZShNYXJrZWRCbG9jazo6Tm9uZSkKKyAgICAsIG1fbmVl
ZHNEZXN0cnVjdGlvbihmYWxzZSkKICAgICAsIG1faGVhcCgwKQogICAgICwgbV9tYXJrZWRTcGFj
ZSgwKQogewogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmluaXQoSGVhcCogaGVh
cCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUsIE1hcmtlZEJsb2Nr
OjpEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKK2lubGluZSB2b2lkIE1hcmtlZEFsbG9j
YXRvcjo6aW5pdChIZWFwKiBoZWFwLCBNYXJrZWRTcGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBj
ZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQogewogICAgIG1faGVhcCA9IGhlYXA7CiAg
ICAgbV9tYXJrZWRTcGFjZSA9IG1hcmtlZFNwYWNlOwogICAgIG1fY2VsbFNpemUgPSBjZWxsU2l6
ZTsKLSAgICBtX2Rlc3RydWN0b3JUeXBlID0gZGVzdHJ1Y3RvclR5cGU7CisgICAgbV9uZWVkc0Rl
c3RydWN0aW9uID0gbmVlZHNEZXN0cnVjdGlvbjsKIH0KIAogaW5saW5lIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGUxMDcyMmQuLjVjYmZmMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLU1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgRGVz
dHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCitNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNy
ZWF0ZShNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3Qg
Y2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKIHsKLSAgICByZXR1cm4gbmV3IChOb3RO
dWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhibG9ja1NpemUsIGNhcGFjaXR5KSkgTWFya2VkQmxvY2so
YWxsb2NhdG9yLCBjYXBhY2l0eSwgY2VsbFNpemUsIGRlc3RydWN0b3JUeXBlKTsKKyAgICByZXR1
cm4gbmV3IChOb3ROdWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhibG9ja1NpemUsIGNhcGFjaXR5KSkg
TWFya2VkQmxvY2soYWxsb2NhdG9yLCBjYXBhY2l0eSwgY2VsbFNpemUsIG5lZWRzRGVzdHJ1Y3Rp
b24pOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpkZXN0cm95KE1hcmtlZEJsb2NrKiBibG9jaykK
QEAgLTQ0LDEyICs0NCwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpkZXN0cm95KE1hcmtlZEJsb2Nr
KiBibG9jaykKICAgICBmYXN0QWxpZ25lZEZyZWUoYmxvY2spOwogfQogCi1NYXJrZWRCbG9jazo6
TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKK01hcmtlZEJs
b2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFj
aXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKICAgICA6IERvdWJs
eUxpbmtlZExpc3ROb2RlPE1hcmtlZEJsb2NrPigpCiAgICAgLCBtX2F0b21zUGVyQ2VsbCgoY2Vs
bFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBtX2VuZEF0b20oKGFsbG9j
YXRvci0+Y2VsbFNpemUoKSA/IGF0b21zUGVyQmxvY2sgOiBjYXBhY2l0eSAvIGF0b21TaXplKSAt
IG1fYXRvbXNQZXJDZWxsICsgMSkKICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCi0gICAgLCBt
X2Rlc3RydWN0b3JUeXBlKGRlc3RydWN0b3JUeXBlKQorICAgICwgbV9uZWVkc0Rlc3RydWN0aW9u
KG5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCiAgICAgLCBt
X3N0YXRlKE5ldykgLy8gQWxsIGNlbGxzIHN0YXJ0IG91dCB1bm1hcmtlZC4KICAgICAsIG1fd2Vh
a1NldChhbGxvY2F0b3ItPmhlYXAoKS0+dm0oKSkKQEAgLTU4LDcgKzU4LDYgQEAgTWFya2VkQmxv
Y2s6Ok1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNp
dHksIHNpemVfdCBjZWwKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMp
OwogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRvclR5cGU+CiBp
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoSlNDZWxsKiBjZWxsKQogewog
ICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dlZXAgbWF5IGFscmVhZHkgaGF2ZSBydW4gY2VsbCdz
IGRlc3RydWN0b3IuCkBAIC02NiwyMCArNjUsMjAgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKGNlbGwtPnN0cnVjdHVyZUlEKCkpOwotICAgIGlmIChkdG9yVHlwZSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQotICAgICAgICBqc0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihjZWxsKS0+
Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY2VsbCk7Ci0gICAgZWxzZQorICAgIGlm
IChjZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpCiAgICAgICAg
IGNlbGwtPnN0cnVjdHVyZSgqdm0oKSktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95
KGNlbGwpOworICAgIGVsc2UKKyAgICAgICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4o
Y2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNlbGwpOwogICAgIGNlbGwt
PnphcCgpOwogfQogCi10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRl
LCBNYXJrZWRCbG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0
b3JUeXBlIGR0b3JUeXBlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tT
dGF0ZSwgTWFya2VkQmxvY2s6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIGJvb2wgY2FsbERlc3RydWN0
b3JzPgogTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVw
KCkKIHsKICAgICBBU1NFUlQoYmxvY2tTdGF0ZSAhPSBBbGxvY2F0ZWQgJiYgYmxvY2tTdGF0ZSAh
PSBGcmVlTGlzdGVkKTsKLSAgICBBU1NFUlQoIShkdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9u
ZSAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CisgICAgQVNTRVJUKCEoIWNhbGxEZXN0cnVj
dG9ycyAmJiBzd2VlcE1vZGUgPT0gU3dlZXBPbmx5KSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigoZHRvclR5cGUgIT0gTWFya2VkQmxvY2s6Ok5vbmUgJiYgYmxvY2tTdGF0
ZSAhPSBOZXcpID8gIkNhbGxpbmcgZGVzdHJ1Y3RvcnMiIDogInN3ZWVwaW5nIik7CisgICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oKCFjYWxsRGVzdHJ1Y3RvcnMgJiYgYmxvY2tTdGF0
ZSAhPSBOZXcpID8gIkNhbGxpbmcgZGVzdHJ1Y3RvcnMiIDogInN3ZWVwaW5nIik7CiAgICAgCiAg
ICAgLy8gVGhpcyBwcm9kdWNlcyBhIGZyZWUgbGlzdCB0aGF0IGlzIG9yZGVyZWQgaW4gcmV2ZXJz
ZSB0aHJvdWdoIHRoZSBibG9jay4KICAgICAvLyBUaGlzIGlzIGZpbmUsIHNpbmNlIHRoZSBhbGxv
Y2F0aW9uIGNvZGUgbWFrZXMgbm8gYXNzdW1wdGlvbnMgYWJvdXQgdGhlCkBAIC05Miw4ICs5MSw4
IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgp
CiAKICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4o
JmF0b21zKClbaV0pOwogCi0gICAgICAgIGlmIChkdG9yVHlwZSAhPSBNYXJrZWRCbG9jazo6Tm9u
ZSAmJiBibG9ja1N0YXRlICE9IE5ldykKLSAgICAgICAgICAgIGNhbGxEZXN0cnVjdG9yPGR0b3JU
eXBlPihjZWxsKTsKKyAgICAgICAgaWYgKGNhbGxEZXN0cnVjdG9ycyAmJiBibG9ja1N0YXRlICE9
IE5ldykKKyAgICAgICAgICAgIGNhbGxEZXN0cnVjdG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChz
d2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7CiAgICAgICAgICAgICBGcmVlQ2VsbCogZnJl
ZUNlbGwgPSByZWludGVycHJldF9jYXN0PEZyZWVDZWxsKj4oY2VsbCk7CkBAIC0xMTgsMjMgKzEx
NywyMSBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnN3ZWVwKFN3ZWVwTW9k
ZSBzd2VlcE1vZGUpCiAKICAgICBtX3dlYWtTZXQuc3dlZXAoKTsKIAotICAgIGlmIChzd2VlcE1v
ZGUgPT0gU3dlZXBPbmx5ICYmIG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vbmUp
CisgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcE9ubHkgJiYgIW1fbmVlZHNEZXN0cnVjdGlvbikK
ICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAKLSAgICBpZiAobV9kZXN0cnVjdG9yVHlwZSA9
PSBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAgIHJldHVybiBzd2VlcEhl
bHBlcjxNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmU+KHN3ZWVwTW9kZSk7Ci0gICAgaWYg
KG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKLSAgICAgICAgcmV0dXJu
IHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb3JtYWw+KHN3ZWVwTW9kZSk7Ci0gICAgcmV0dXJu
IHN3ZWVwSGVscGVyPE1hcmtlZEJsb2NrOjpOb25lPihzd2VlcE1vZGUpOworICAgIGlmIChtX25l
ZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgIHJldHVybiBzd2VlcEhlbHBlcjx0cnVlPihzd2VlcE1v
ZGUpOworICAgIHJldHVybiBzd2VlcEhlbHBlcjxmYWxzZT4oc3dlZXBNb2RlKTsKIH0KIAotdGVt
cGxhdGU8TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGR0b3JUeXBlPgordGVtcGxhdGU8Ym9v
bCBjYWxsRGVzdHJ1Y3RvcnM+CiBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnN3
ZWVwSGVscGVyKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7
CiAgICAgY2FzZSBOZXc6CiAgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVM
aXN0KTsKLSAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxp
c3QsIGR0b3JUeXBlPigpOworICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3
ZWVwVG9GcmVlTGlzdCwgY2FsbERlc3RydWN0b3JzPigpOwogICAgIGNhc2UgRnJlZUxpc3RlZDoK
ICAgICAgICAgLy8gSGFwcGVucyB3aGVuIGEgYmxvY2sgdHJhbnNpdGlvbnMgdG8gZnVsbHkgYWxs
b2NhdGVkLgogICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7CkBA
IC0xNDUsOCArMTQyLDggQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzd2Vl
cEhlbHBlcihTd2VlcE1vZGUgc3dlZXBNb2RlKQogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsK
ICAgICBjYXNlIE1hcmtlZDoKICAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJl
ZUxpc3QKLSAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVl
TGlzdCwgZHRvclR5cGU+KCkKLSAgICAgICAgICAgIDogc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQs
IFN3ZWVwT25seSwgZHRvclR5cGU+KCk7CisgICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8
TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGNhbGxEZXN0cnVjdG9ycz4oKQorICAgICAgICAgICAg
OiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5LCBjYWxsRGVzdHJ1Y3RvcnM+KCk7
CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDU3NmVkNTIuLjQ2NzQ5MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMTExLDggKzExMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAg
ICB9OwogCi0gICAgICAgIGVudW0gRGVzdHJ1Y3RvclR5cGUgeyBOb25lLCBJbW1vcnRhbFN0cnVj
dHVyZSwgTm9ybWFsIH07Ci0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKE1hcmtl
ZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9y
VHlwZSk7CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKE1hcmtlZEFsbG9jYXRv
ciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KE1hcmtlZEJsb2NrKik7CiAKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7CkBAIC0xNTUsNyArMTU0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpOwogCiAgICAgICAg
IHNpemVfdCBjZWxsU2l6ZSgpOwotICAgICAgICBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlw
ZSgpOworICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKIAogICAgICAgICBz
aXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE5MCwxNSArMTg5
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21B
bGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOyAvLyBhdG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIg
b2YgdHdvLgogCiAgICAgICAgIGVudW0gQmxvY2tTdGF0ZSB7IE5ldywgRnJlZUxpc3RlZCwgQWxs
b2NhdGVkLCBNYXJrZWQsIFJldGlyZWQgfTsKLSAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3RvclR5
cGU+IEZyZWVMaXN0IHN3ZWVwSGVscGVyKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CisgICAgICAg
IHRlbXBsYXRlPGJvb2wgY2FsbERlc3RydWN0b3JzPiBGcmVlTGlzdCBzd2VlcEhlbHBlcihTd2Vl
cE1vZGUgPSBTd2VlcE9ubHkpOwogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXpl
XTsKIAotICAgICAgICBNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNp
dHksIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOworICAgICAgICBNYXJrZWRCbG9j
ayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6
ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwotICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9y
VHlwZT4gdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqKTsKLSAgICAgICAgdGVtcGxhdGU8Qmxv
Y2tTdGF0ZSwgU3dlZXBNb2RlLCBEZXN0cnVjdG9yVHlwZT4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRT
d2VlcCgpOworICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOworICAgICAgICB0
ZW1wbGF0ZTxCbG9ja1N0YXRlLCBTd2VlcE1vZGUsIGJvb2wgY2FsbERlc3RydWN0b3JzPiBGcmVl
TGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayog
bV9wcmV2OwogICAgICAgICBNYXJrZWRCbG9jayogbV9uZXh0OwpAQCAtMjE1LDcgKzIxNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAKICAgICAgICAgc2l6ZV90IG1fY2FwYWNp
dHk7Ci0gICAgICAgIERlc3RydWN0b3JUeXBlIG1fZGVzdHJ1Y3RvclR5cGU7CisgICAgICAgIGJv
b2wgbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOwogICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7CiAgICAgICAgIFdlYWtTZXQgbV93ZWFr
U2V0OwpAQCAtMzI1LDkgKzMyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4g
bV9hdG9tc1BlckNlbGwgKiBhdG9tU2l6ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgTWFya2VkQmxv
Y2s6OkRlc3RydWN0b3JUeXBlIE1hcmtlZEJsb2NrOjpkZXN0cnVjdG9yVHlwZSgpCisgICAgaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6Om5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclR5cGU7IAorICAgICAgICByZXR1cm4gbV9uZWVkc0Rl
c3RydWN0aW9uOwogICAgIH0KIAogICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OnNpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IDMxZmU5
NDIuLjRmMzA4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5j
cHAKQEAgLTgzLDIwICs4MywxNyBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVh
cCkKICAgICAsIG1faXNJdGVyYXRpbmcoZmFsc2UpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNp
emUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0g
cHJlY2lzZVN0ZXApIHsKLSAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAs
IHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9uZSk7Ci0gICAgICAgIG5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1h
cmtlZEJsb2NrOjpOb3JtYWwpOwotICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JB
bGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJs
b2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSku
aW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgZmFsc2UpOworICAgICAgICBkZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCB0cnVlKTsKICAg
ICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXpl
IDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewotICAgICAg
ICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtl
ZEJsb2NrOjpOb25lKTsKLSAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxs
U2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vcm1hbCk7Ci0g
ICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSku
aW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkltbW9ydGFsU3RydWN0dXJl
KTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxT
aXplLCBmYWxzZSk7CisgICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlu
aXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIHRydWUpOwogICAgIH0KIAotICAgIG1fbm9ybWFsU3Bh
Y2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCBNYXJrZWRCbG9jazo6Tm9uZSk7
Ci0gICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0
aGlzLCAwLCBNYXJrZWRCbG9jazo6Tm9ybWFsKTsKLSAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywgMCwgTWFya2VkQmxv
Y2s6OkltbW9ydGFsU3RydWN0dXJlKTsKKyAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9y
LmluaXQoaGVhcCwgdGhpcywgMCwgZmFsc2UpOworICAgIG1fZGVzdHJ1Y3RvclNwYWNlLmxhcmdl
QWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywgMCwgdHJ1ZSk7CiB9CiAKIE1hcmtlZFNwYWNlOjp+
TWFya2VkU3BhY2UoKQpAQCAtMTM0LDE5ICsxMzEsMTYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVz
ZXRBbGxvY2F0b3JzKCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVw
OyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewog
ICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIG5vcm1hbERl
c3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIGltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAg
ICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICB9CiAKICAg
ICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJl
Y2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewogICAgICAgICBhbGxvY2F0
b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0
b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7Ci0gICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKKyAgICAgICAgZGVzdHJ1Y3RvckFs
bG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICB9CiAKICAgICBtX25vcm1hbFNwYWNl
LmxhcmdlQWxsb2NhdG9yLnJlc2V0KCk7Ci0gICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3IucmVzZXQoKTsKLSAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNw
YWNlLmxhcmdlQWxsb2NhdG9yLnJlc2V0KCk7CisgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VB
bGxvY2F0b3IucmVzZXQoKTsKIAogI2lmIEVOQUJMRShHR0MpCiAgICAgbV9ibG9ja3NXaXRoTmV3
T2JqZWN0cy5jbGVhcigpOwpAQCAtMTg0LDE5ICsxNzgsMTYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6
Zm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIGZvciAoc2l6ZV90IGNl
bGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXpl
ICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGZ1bmN0b3IoYWxsb2NhdG9yRm9yKGNlbGxTaXpl
KSk7Ci0gICAgICAgIGZ1bmN0b3Iobm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6
ZSkpOwotICAgICAgICBmdW5jdG9yKGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkpOworICAgICAgICBmdW5jdG9yKGRlc3RydWN0b3JBbGxvY2F0b3JGb3Io
Y2VsbFNpemUpKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lz
ZVN0ZXA7IGNlbGxTaXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNl
U3RlcCkgewogICAgICAgICBmdW5jdG9yKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOwotICAgICAg
ICBmdW5jdG9yKG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpKTsKLSAgICAg
ICAgZnVuY3RvcihpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNp
emUpKTsKKyAgICAgICAgZnVuY3RvcihkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7
CiAgICAgfQogCiAgICAgZnVuY3RvcihtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9yKTsKLSAg
ICBmdW5jdG9yKG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yKTsKLSAgICBm
dW5jdG9yKG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Ip
OworICAgIGZ1bmN0b3IobV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IpOwogfQogCiBz
dHJ1Y3QgU3RvcEFsbG9jYXRpbmdGdW5jdG9yIHsKQEAgLTIyMywyMSArMjE0LDE4IEBAIGJvb2wg
TWFya2VkU3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogewogICAgIGZvciAoc2l6
ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNl
bGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGlmIChhbGxvY2F0b3JGb3IoY2VsbFNp
emUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIAotICAgICAgICAgICAgfHwgbm9ybWFsRGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkgCi0gICAgICAgICAg
ICB8fCBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlz
UGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICAgICAgfHwgZGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNl
bGxTaXplIDw9IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkgewog
ICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAK
LSAgICAgICAgICAgIHx8IG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlz
UGFnZWRPdXQoZGVhZGxpbmUpIAotICAgICAgICAgICAgfHwgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAg
ICAgICAgIHx8IGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVh
ZGxpbmUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKG1fbm9y
bWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFkbGluZSkKLSAgICAgICAgfHwg
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFkbGlu
ZSkKLSAgICAgICAgfHwgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAgICAgfHwgbV9kZXN0cnVjdG9yU3Bh
Y2UubGFyZ2VBbGxvY2F0b3IuaXNQYWdlZE91dChkZWFkbGluZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkyLDE0ICsyODAsMTIgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkSW5C
bG9jayhtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLnRha2VMYXN0QWN0aXZlQmxv
Y2soKSk7Ci0gICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKG1fbm9ybWFsRGVzdHJ1
Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLnRha2VMYXN0QWN0aXZlQmxvY2soKSk7Ci0g
ICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RBY3RpdmVCbG9jaygpKTsK
KyAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9kZXN0cnVjdG9yU3BhY2UucHJl
Y2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RBY3RpdmVCbG9jaygpKTsKICAgICB9CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpIHsKICAgICAgICAgY2xl
YXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9ub3JtYWxTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3Jz
W2ldLnRha2VMYXN0QWN0aXZlQmxvY2soKSk7Ci0gICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJ
bkJsb2NrKG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0udGFr
ZUxhc3RBY3RpdmVCbG9jaygpKTsKLSAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2so
bV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ld
LnRha2VMYXN0QWN0aXZlQmxvY2soKSk7CisgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJs
b2NrKG1fZGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RBY3Rp
dmVCbG9jaygpKTsKICAgICB9CiAKICAgICAvLyBXZSBoYXZlIHRvIGl0ZXJhdGUgYWxsIG9mIHRo
ZSBibG9ja3MgaW4gdGhlIGxhcmdlIGFsbG9jYXRvcnMgYmVjYXVzZSB0aGV5IGFyZQpAQCAtMzA3
LDggKzI5Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAg
IC8vIHdoaWNoIGNyZWF0ZXMgdGhlIG1fbmV3bHlBbGxvY2F0ZWQgYml0bWFwLgogICAgIENsZWFy
TmV3bHlBbGxvY2F0ZWQgZnVuY3RvcjsKICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9y
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJn
ZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgbV9pbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Cisg
ICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIFZlcmlmeU5ld2x5QWxsb2NhdGVkIHZlcmlmeUZ1bmN0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAppbmRleCA5ZjMyZWUz
Li5lOTM5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAg
LTEwMywxNCArMTAzLDExIEBAIHB1YmxpYzoKIAogICAgIE1hcmtlZEFsbG9jYXRvciYgZmlyc3RB
bGxvY2F0b3IoKTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3QpOwot
ICAgIE1hcmtlZEFsbG9jYXRvciYgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKHNpemVfdCk7Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBub3JtYWxEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKHNpemVfdCk7Ci0gICAgdm9pZCogYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3Rvcihz
aXplX3QpOwotICAgIHZvaWQqIGFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
cihzaXplX3QpOworICAgIE1hcmtlZEFsbG9jYXRvciYgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihz
aXplX3QpOworICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsKICAgICB2
b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7CiAKLSAgICBTdWJzcGFjZSYg
c3Vic3BhY2VGb3JPYmplY3RzV2l0aE5vcm1hbERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1h
bERlc3RydWN0b3JTcGFjZTsgfQotICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRo
SW1tb3J0YWxTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
clNwYWNlOyB9CisgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9y
KCkgeyByZXR1cm4gbV9kZXN0cnVjdG9yU3BhY2U7IH0KICAgICBTdWJzcGFjZSYgc3Vic3BhY2VG
b3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX25vcm1hbFNwYWNlOyB9CiAK
ICAgICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOwpAQCAtMTY4LDggKzE2NSw3IEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1
bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxv
Y2F0b3IoKTsKIAotICAgIFN1YnNwYWNlIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlOwotICAgIFN1
YnNwYWNlIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2U7CisgICAgU3Vic3BhY2Ug
bV9kZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3BhY2UgbV9ub3JtYWxTcGFjZTsKIAogICAgIEhl
YXAqIG1faGVhcDsKQEAgLTIxOSwyNCArMjE1LDE0IEBAIGlubGluZSBNYXJrZWRBbGxvY2F0b3Im
IE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQogICAgIHJldHVybiBtX25v
cm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9yOwogfQogCi1pbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBN
YXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVf
dCBieXRlcykKK2lubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjpkZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKHNpemVfdCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIGlm
IChieXRlcyA8PSBwcmVjaXNlQ3V0b2ZmKQotICAgICAgICByZXR1cm4gbV9pbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNp
c2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0
b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOwogICAgIGlmIChieXRlcyA8PSBpbXByZWNp
c2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNw
YWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKLSAg
ICByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRv
cjsKLX0KLQotaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQotewotICAgIEFTU0VSVChieXRlcyk7Ci0g
ICAgaWYgKGJ5dGVzIDw9IHByZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX25vcm1hbERl
c3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIHByZWNpc2VTdGVw
XTsKLSAgICBpZiAoYnl0ZXMgPD0gaW1wcmVjaXNlQ3V0b2ZmKQotICAgICAgICByZXR1cm4gbV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGlt
cHJlY2lzZVN0ZXBdOwotICAgIHJldHVybiBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvcjsKKyAgICAgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9j
YXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKKyAgICByZXR1cm4gbV9kZXN0cnVj
dG9yU3BhY2UubGFyZ2VBbGxvY2F0b3I7CiB9CiAKIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6
YWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCkBAIC0yNDQsMTQgKzIzMCw5
IEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRob3V0RGVzdHJ1Y3Rvcihz
aXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIGFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0
ZXMpOwogfQogCi1pbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aEltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCitpbmxpbmUgdm9pZCogTWFya2VkU3Bh
Y2U6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQogewotICAgIHJldHVybiBp
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5
dGVzKTsKLX0KLQotaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhOb3JtYWxE
ZXN0cnVjdG9yKHNpemVfdCBieXRlcykKLXsKLSAgICByZXR1cm4gbm9ybWFsRGVzdHJ1Y3RvckFs
bG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOworICAgIHJldHVybiBkZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCkBAIC0yNjMsMTYgKzI0NCwxMCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJl
dHVyblR5cGUgTWFya2VkU3BhY2U6OmZvcgogICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0
b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cmVjaXNlQ291bnQ7ICsraSkKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UucHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9y
U3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAg
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKLSAg
ICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9y
c1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1fZGVzdHJ1Y3RvclNwYWNlLnBy
ZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCi0gICAgICAgIG1faW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7Ci0gICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgICAgIG1fZGVzdHJ1Y3RvclNwYWNl
LmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIG1fZGVz
dHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKIAogICAg
IHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggMDQ1NmEz
ZS4uMjU4NGFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBJbmplY3Rl
ZFNjcmlwdEhvc3Q7CiBjbGFzcyBKU0luamVjdGVkU2NyaXB0SG9zdCA6IHB1YmxpYyBKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNzAs
OCArNzEsNiBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGl0ZXJhdG9yRW50cmllcyhKU0M6
OkV4ZWNTdGF0ZSopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aAppbmRleCAzZWViNjkwLi5hYTQ5NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBERUNMQVJFX0lORk87CiAK
QEAgLTQ4LDkgKzQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToK
ICAgICBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogSlNDOjpK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCA3ZjA3NjFi
Li5iNzdjMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBjbGFzcyBKU0phdmFTY3JpcHRDYWxsRnJhbWUgOiBwdWJsaWMgSlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTc4LDgg
Kzc5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBGVU5DVElP
Tl9OQU1FX1NDT1BFID0gNTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuaAppbmRleCA5YWE3ZWUxLi4wODExYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBERUNMQVJF
X0lORk87CiAKQEAgLTQ4LDkgKzQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi1w
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlND
OjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQog
cHJpdmF0ZToKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCAzN2Y5MjQyLi5kOGE2YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTgxLDYg
KzE4MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsKIAogICAgIHN0YXRp
YyBNYXNxdWVyYWRlciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICB7CkBAIC0xOTcsOSArMTk4LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEpTQzo6TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB8IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOwogfTsKIAogY2xhc3MgUm9vdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CkBA
IC0yNTcsNiArMjU1LDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNJbXB1cmVHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI3Nyw4ICsyNzYsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2RlbGVnYXRlLnNldCh2bSwgdGhpcywgZGVsZWdhdGUp
OwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6SGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBuYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBJbXB1cmVHZXR0
ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW1wdXJlR2V0dGVyKj4ob2JqZWN0KTsKQEAgLTMwOCw2
ICszMDUsNyBAQCBwcml2YXRlOgogY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSlNBcnJheSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAg
ICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKQEAg
LTM5MSw4ICszODksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX3ZlY3Rvci5hcHBlbmQo
ZXhlYy0+YXJndW1lbnQoaSkudG9JbnQzMihleGVjKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0FycmF5OjpTdHJ1Y3R1cmVGbGFn
czsKLQogcHJpdmF0ZToKICAgICBSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBKU0FycmF5KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwg
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggMGVmZWRmOC4uNzdlYzM3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTMxLDkgKzMxLDEwIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jbGFzcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgOiBwdWJsaWMg
SlNDZWxsIHsKK2NsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIAogcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKQEAgLTQ0LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIGNyZWF0ZShWTSYpOwogCiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmgKaW5kZXggYTZhYzc2ZS4uMDQwZjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFz
cyBKU0FycmF5OwogY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRp
YyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgIHsKQEAgLTQ5LDcgKzUwLDYgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFycmF5
UHJvdG90eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJl
RmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgQXJyYXlDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5oCmluZGV4IDU0N2UzMzIuLjJiMjM0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUl0ZXJhdG9yUHJvdG90eXBl
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAg
LTQ4LDkgKzQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgQXJyYXlJdGVyYXRvclByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuaAppbmRleCAzNWVjZTRiLi42ZDhmYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgQm9vbGVhblByb3RvdHlwZSA6IHB1YmxpYyBCb29sZWFuT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEJvb2xlYW5PYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBCb29sZWFuUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CkBAIC00NSw3ICs0Niw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEJvb2xlYW5PYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAg
IEJvb2xlYW5Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5kZXggYzUwNjk0OC4uMTIxOWQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgK
QEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBDbG9uZWRBcmd1bWVudHMg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogICAgIAogcHJpdmF0ZToKICAgICBDbG9uZWRBcmd1
bWVudHMoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTU0LDggKzU1LDYgQEAgcHVibGljOgogICAgIAog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIERFQ0xBUkVfSU5G
TzsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0N1c3RvbUdldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgKaW5kZXggNGRlN2RlZC4uNTQ1MTllYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKQEAgLTMzLDkg
KzMzLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIg
OiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBDdXN0b21HZXR0ZXI7CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYyBDdXN0b21TZXR0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5oCmluZGV4IDE4YmMzNDAuLjA1NGY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICszMCw3IEBA
IGNsYXNzIERhdGVQcm90b3R5cGU7CiBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMg
RGF0ZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0
ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICB7CkBAIC00Nyw3ICs0OCw2IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBEYXRlUHJvdG90
eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7
CiAKIHByaXZhdGU6CiAgICAgRGF0ZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKaW5kZXggODIwZTYw
Yi4uNjcxNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuaApAQCAtMzMsNiArMzMsNyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBEYXRlSW5zdGFuY2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dDsKIAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC01MSw3
ICs1Miw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IERhdGVJbnN0YW5jZTo6U3Ry
dWN0dXJlRmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCmluZGV4IDIxNTdjZTQuLjI5Y2Q2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaApA
QCAtMzAsNiArMzAsNyBAQCBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiBjbGFzcyBFcnJvclByb3Rv
dHlwZSA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9y
SW5zdGFuY2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAog
ICAgIHN0YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDksOCArNTAs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgRXJyb3JQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEVycm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGQxMGQ5MWYuLjIzOTg2ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAg
LTU2LDcgKzU2LDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKIAogCi1jbGFzcyBUZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwcml2YXRlOgogICAgIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcihWTSYgdm0pCiAgICAgICAg
IDogSlNOb25GaW5hbE9iamVjdCh2bSwgdm0udGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0
dXJlLmdldCgpKQpAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OwogCiAgICAgc3RhdGljIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciogY3JlYXRlKFZNJiB2bSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXgg
NDgxMDRlNC4uYjUyYjczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtODQsOSArODQsOSBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1
Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
IAogICAgIENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25z
dDsKQEAgLTExNyw3ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
IAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNhbGw7CiAg
ICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdDsKIApAQCAtMjc4LDExICsyNzcsMTIg
QEAgcHJvdGVjdGVkOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVGb3JDb25z
dHJ1Y3RXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVnczsKIH07CiAKLWNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZSBmaW5hbCA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5
cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CiAKICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgUGFzc1JlZlB0
cjxKSVRDb2RlPiBjYWxsVGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRy
PEpJVENvZGU+IGNvbnN0cnVjdFRodW5rLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50
cmluc2ljIGludHJpbnNpYykKICAgICB7CkBAIC0zNDcsNiArMzQ3LDcgQEAgcHJpdmF0ZToKIGNs
YXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogcHVibGljOgog
ICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7CiAKICAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCk7CiAK
QEAgLTQ0MSwxMCArNDQyLDExIEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9m
aWxpbmdFbmRPZmZzZXQ7CiB9OwogCi1jbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKK2NsYXNzIEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlw
dEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApA
QCAtNDg2LDEwICs0ODgsMTEgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRF
dmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENvZGVCbG9jazsKIH07CiAKLWNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFNjcmlwdEV4
ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0
aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKICAgICB7CkBAIC01MzksMTEgKzU0MiwxMiBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiB9OwogCi1jbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CitjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogcHVibGljOgogICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZSgKICAgICAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IDJlOTM3M2MuLjY3
ZjFiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzLmgKQEAgLTM2LDggKzM2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIGNsYXNz
IEdlbmVyaWNBcmd1bWVudHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOwogCiBwcm90ZWN0ZWQ6CiAgICAgR2VuZXJpY0FyZ3VtZW50cyhWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaAppbmRleCA4MDgwYTgwLi5iOTgzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBKU09i
amVjdDsKIC8vIHRoYXQgaWYgYSBwcm9wZXJ0eSBob2xkaW5nIGEgR2V0dGVyU2V0dGVyIHJlZmVy
ZW5jZSBpcyBjb25zdGFudC1pbmZlcnJlZCBhbmQKIC8vIHRoYXQgY29uc3RhbnQgaXMgb2JzZXJ2
ZWQgdG8gaGF2ZSBhIG5vbi1udWxsIHNldHRlciAob3IgZ2V0dGVyKSB0aGVuIHdlIGNhbgogLy8g
Y29uc3RhbnQgZm9sZCB0aGF0IHNldHRlciAob3IgZ2V0dGVyKS4KLWNsYXNzIEdldHRlclNldHRl
ciA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgR2V0dGVyU2V0dGVyIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogcHJpdmF0ZToKQEAgLTU0LDYgKzU0LDcg
QEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEdldHRlclNldHRlciogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMzdiNWZl
MS4uNzlmNDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsK
IGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEltcGxlbWVudHNIYXNJbnN0YW5jZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAg
LTQ3LDggKzQ4LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpT
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFs
RnVuY3Rpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggNTZhODE2ZC4u
NjZlNjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElW
YWx1ZVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZh
bHVlV3JhcHBlci5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEpTQVBJVmFsdWVXcmFwcGVyIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIEpTVmFsdWUganNBUElWYWx1ZVdyYXBwZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmgKaW5kZXggZWZjZjkxZS4uMDU2N2E1NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRl
cmF0b3IuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQXJndW1l
bnRzSXRlcmF0b3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogCkBAIC02Miw5ICs2Myw2IEBAIHB1YmxpYzoKICAgICBKU0FyZ3VtZW50c0l0ZXJh
dG9yKiBjbG9uZShFeGVjU3RhdGUqKTsKIAogcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgSlNB
cmd1bWVudHNJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAgICAgLCBtX25leHRJbmRleCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDAxZTVhM2IuLmFhYmQ1NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQogICAgIHsKQEAgLTE0MCw3
ICsxNDEsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCAzMTliODJlLi43NTI5
ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
CkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNBcnJheUJ1ZmZlciA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgSlNBcnJheUJ1
ZmZlcihWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+KTsKQEAgLTU2LDgg
KzU3LDYgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBBcnJheUJ1ZmZl
ciogbV9pbXBsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyVmlldy5oCmluZGV4IDNmZWIwM2IuLjA1MTQ0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtOTMsNiArOTMs
NyBAQCBpbmxpbmUgYm9vbCBoYXNBcnJheUJ1ZmZlcihUeXBlZEFycmF5TW9kZSBtb2RlKQogY2xh
c3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogICAgIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmYXN0U2l6ZUxpbWl0ID0gMTAwMDsKICAgICAKQEAgLTE3
NCw4ICsxNzUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGZpbmFsaXplKEpTQ2VsbCop
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotICAgIAogICAgIEFycmF5QnVmZmVyKiBleGlzdGlu
Z0J1ZmZlckluQnV0dGVyZmx5KCk7CiAKICAgICB2b2lkKiBtX3ZlY3RvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggMzY0NGIyOS4u
MTc5NWM5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmgKQEAgLTM2LDYgKzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSopOwogY2xhc3MgSlNCb3VuZEZ1bmN0aW9u
IDogcHVibGljIEpTRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBC
YXNlOworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0hhc0luc3RhbmNlIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgSlNCb3Vu
ZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0YXJnZXRG
dW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQsIGNvbnN0
IFN0cmluZyYpOwogICAgIApAQCAtNTYsOCArNTcsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9J
TkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzSGFzSW5zdGFuY2UgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCmluZGV4IGViYjEx
ZTMuLjVjZDgyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaApA
QCAtNDYsNiArNDYsNyBAQCBjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7
CisgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2U7CiAKICAgICBzdGF0aWMgSlNDYWxsZWUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNj
b3BlKQogICAgIHsKQEAgLTkwLDggKzkxLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEltcGxlbWVudHNI
YXNJbnN0YW5jZSB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTQ2FsbGVlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBK
U0NhbGxlZShWTSYsIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCA0ODM5ZjY0Li5jNDdmYzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtNzMsNyArNzMsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKIAogICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNJbW1vcnRhbFN0cnVjdHVyZSA9IGZhbHNlOwogCiAgICAgZW51bSBDcmVhdGluZ0Vhcmx5Q2Vs
bFRhZyB7IENyZWF0aW5nRWFybHlDZWxsIH07CiAgICAgSlNDZWxsKENyZWF0aW5nRWFybHlDZWxs
VGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApp
bmRleCBkYmIxMDA0Li5mZjkzNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNDAsNyArMjQwLDcgQEAgaW5saW5lIGJvb2wgSlNDZWxs
OjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCiBp
bmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0CiB7CiAgICAg
TWFya2VkQmxvY2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpOwotICAgIGlm
IChibG9jay0+ZGVzdHJ1Y3RvclR5cGUoKSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQorICAgIGlm
IChibG9jay0+bmVlZHNEZXN0cnVjdGlvbigpICYmICEoaW5saW5lVHlwZUZsYWdzKCkgJiBTdHJ1
Y3R1cmVJc0ltbW9ydGFsKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOwogICAgIHJldHVybiBzdHJ1Y3R1
cmUoKmJsb2NrLT52bSgpKS0+Y2xhc3NJbmZvKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgKaW5kZXggOWQyYmEyYy4uYmM3
MjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpT
RGF0YVZpZXdQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CiAKIHByb3RlY3RlZDoKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7CkBAIC00Niw4ICs0Nyw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaAppbmRleCA4
MTFlNGQxLi40YjJjMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Vudmlyb25tZW50UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNFbnZpcm9ubWVudFJlY29yZC5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEpTRW52aXJv
bm1lbnRSZWNvcmQgOiBwdWJsaWMgSlNTeW1ib2xUYWJsZU9iamVjdCB7CiAKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTU3ltYm9sVGFibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIHZhcmlhYmxlcygpCiAgICAgewpAQCAtODUsOCArODYsNiBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgSlNFbnZp
cm9ubWVudFJlY29yZCgKICAgICAgICAgVk0mIHZtLAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA5
YmQzZmUyLi43NjRmODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxs
ZWUgewogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOworICAgIGNvbnN0IHN0
YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBK
U09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
SlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywg
TmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3Rvcik7CiAKQEAgLTEyOCw4ICsxMjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNz
Q29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgY29uc3Qgc3Rh
dGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24oVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IDEz
NDNlZWUuLjM5OTZlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtODcsNiArODcsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJs
aWMgSlNBcnJheUJ1ZmZlclZpZXcgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNBcnJheUJ1ZmZl
clZpZXcgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVs
ZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIAogcHJvdGVj
dGVkOgpAQCAtMjI4LDggKzIzMCw2IEBAIHB1YmxpYzoKICAgICAKIHByb3RlY3RlZDoKICAgICBm
cmllbmQgc3RydWN0IFR5cGVkQXJyYXlDbGFzc0luZm9zOwotICAgIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggM2U1NzgzNy4uMzJjMjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTYsNiArMjk2LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXM7CiAKICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgPSBudWxscHRyKQogICAgIHsKQEAgLTYwNCw5ICs2MDUsNiBAQCBw
dWJsaWM6CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENh
bGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgVGhpc1REWk1vZGUpOwogCiBwcm90ZWN0ZWQ6Ci0K
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Ci0KICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKGNvbnN0IElkZW50aWZpZXImIGksIEpTVmFsdWUgdiwgdW5zaWduZWQg
YSkKICAgICAgICAgICAgIDogaWRlbnRpZmllcihpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggOWVjMDZjNi4uNGQ5
ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU0Vudmlyb25tZW50UmVjb3JkIEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAg
c3RhdGljIEpTTGV4aWNhbEVudmlyb25tZW50KiBjcmVhdGUoCiAgICAgICAgIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlKQpAQCAtNzgsOSArNzksNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwg
VHlwZUluZm8oQWN0aXZhdGlvbk9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsg
fQogCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIGJvb2wgc3ltYm9sVGFi
bGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaAppbmRleCBjMmI2OTUyLi5kYjhkMDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgKQEAgLTM1LDYgKzM1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU05hbWVTY29wZSA6IHB1YmxpYyBKU0Vudmly
b25tZW50UmVjb3JkIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRW52aXJvbm1lbnRSZWNvcmQg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnc3wgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgZW51bSBU
eXBlIHsKICAgICAgICAgQ2F0Y2hTY29wZSwKQEAgLTY4LDggKzY5LDYgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB2YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KDApKS5zZXQodm0sIHRoaXMsIHZhbHVlKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIEpT
TmFtZVNjb3BlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIG5leHQsIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIG5l
eHQsIHN5bWJvbFRhYmxlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTm90QW5PYmplY3QuaAppbmRleCBlN2MwYTA0Li4wYzI2ZWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogLy8gVGhpcyB1bmhvbHkgY2xhc3MgaXMgdXNlZCB0byBhbGxvdyB1cyB0
byBhdm9pZCBtdWx0aXBsZSBleGNlcHRpb24gY2hlY2tzCiAvLyBpbiBjZXJ0YWluIFNxdWlycmVs
RmlzaCBieXRlY29kZXMgLS0gZWZmZWN0aXZlbHkgaXQganVzdCBzaWxlbnRseSBjb25zdW1lcwog
Ly8gYW55IG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uIHRoZSByZXN1bHQgb2YgYSBmYWlsZWQgdG9P
YmplY3QgY2FsbC4KLWNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitjbGFzcyBKU05vdEFuT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogcHJpdmF0ZToKICAgICBleHBsaWNpdCBKU05vdEFuT2JqZWN0KFZNJiB2bSkKICAgICAgICAg
OiBKU05vbkZpbmFsT2JqZWN0KHZtLCB2bS5ub3RBbk9iamVjdFN0cnVjdHVyZS5nZXQoKSkKQEAg
LTQ1LDYgKzQ1LDcgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAg
c3RhdGljIEpTTm90QW5PYmplY3QqIGNyZWF0ZShWTSYgdm0pCiAgICAgewpAQCAtNjEsOSArNjIs
NiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2YXRlOgotCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7Ci0KICAgICAvLyBKU1ZhbHVlIG1ldGhvZHMKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCmluZGV4
IDRlMWE1YWMuLmViNmRhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgU3RyaW5naWZpZXI7CiBjbGFzcyBKU09O
T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90OwogCiAgICAgc3RhdGljIEpTT05PYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIHsKQEAgLTUyLDcgKzUzLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBKU09OT2JqZWN0KFZNJiwgU3RydWN0
dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA1M2Y3
ZjViLi5hNDY5MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTEwMzEsNiArMTAzMSw3IEBAIGNsYXNzIEpTRmluYWxPYmplY3QgOiBwdWJsaWMgSlNPYmpl
Y3QgewogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiAg
ICAgewpAQCAtMTA3Nyw4ICsxMDc4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgOiBKU09iamVjdCh2
bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpCiAgICAgewogICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIH07
CiAKIGlubGluZSBKU0ZpbmFsT2JqZWN0KiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaApp
bmRleCA0OThiYjhiLi5mYzBmMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3Mg
SlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNQcm9taXNlQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0
aWMgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTUHJvbWlz
ZVByb3RvdHlwZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CkBAIC00Niw3ICs0Nyw2IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Byb21pc2VQcm90b3R5
cGUqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmgK
aW5kZXggZmJjZjBjNi4uYjlkYzI4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCkBAIC0zMyw5ICszMywxMCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQgOiBwdWJsaWMgSlNDZWxsIHsKK2Ns
YXNzIEpTUHJvbWlzZURlZmVycmVkIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlRGVmZXJyZWQqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU1Byb21pc2VEZWZlcnJlZCogY3JlYXRlKFZNJiwgSlNPYmplY3QqIHByb21pc2UsIEpTVmFs
dWUgcmVzb2x2ZSwgSlNWYWx1ZSByZWplY3QpOwpAQCAtNDUsOCArNDYsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwotCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIEpTT2JqZWN0KiBwcm9taXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9taXNlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCmluZGV4IDg5M2ZjNGEuLmNkN2NlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlw
ZS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNQcm9taXNlUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90OwogCiAgICAgc3RhdGljIEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKQEAgLTQzLDcgKzQ0
LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKICAgICBKU1Byb21pc2VQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZWFjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rp
b24uaAppbmRleCBiNDI3OTRhLi4wOWJlMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKQEAgLTM2LDkgKzM2LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgSlNQcm9taXNlRGVmZXJyZWQ7CiBjbGFzcyBNaWNyb3Rhc2s7CiAK
LWNsYXNzIEpTUHJvbWlzZVJlYWN0aW9uIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1Byb21p
c2VSZWFjdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGlj
IEpTUHJvbWlzZVJlYWN0aW9uKiBjcmVhdGUoVk0mLCBKU1Byb21pc2VEZWZlcnJlZCosIEpTVmFs
dWUpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNDYsOCArNDcs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1
cmUgPSB0cnVlOwotCiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgSlNQcm9taXNlRGVmZXJyZWQq
IGRlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZC5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaAppbmRleCA3NzgzMDhhLi4zZDhjODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaApAQCAtMzUsMTUg
KzM1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBJZGVudGlmaWVyOwogCi1jbGFzcyBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAg
c3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJik7CiAgICAgc3RhdGlj
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMy
X3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5hbWVBcnJheSYpOwogCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1t
b3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTkyLDggKzkyLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KICAg
ICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1cmVJRCwgdWludDMyX3QsIFJl
ZkNvdW50ZWRJZGVudGlmaWVyU2V0Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIHVp
bnQzMl90LCB1aW50MzJfdCwgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IGNkYTYyMWIuLjJiZGNk
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybzsKIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKICAgICB7CkBAIC02OCw4ICs2
OSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXQp
OwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFRhcmdldChWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYWE4YmRlYi4uZGY1ODFhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMTQ5LDYgKzE0OSw3IEBA
IGVudW0gR2V0T3JQdXQgeyBHZXQsIFB1dCB9OwogY2xhc3MgSlNTY29wZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCmluZGV4IDM0YWY1MmQuLmEyMmU2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJsaWM6CiAgICAg
ZnJpZW5kIHN0cnVjdCBUaHVua0hlbHBlcnM7CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogcHJpdmF0ZToKQEAgLTE4Miw4ICsxODIs
NiBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOwotCiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAKICAgICBi
b29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KQEAgLTIxOSw3
ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhl
Y1N0YXRlKiwgSlNTdHJpbmcqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiB9
OwogCi1jbGFzcyBKU1JvcGVTdHJpbmcgOiBwdWJsaWMgSlNTdHJpbmcgeworY2xhc3MgSlNSb3Bl
U3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICBmcmllbmQgY2xhc3MgSlNTdHJp
bmc7CiAKICAgICBmcmllbmQgSlNSb3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoVk0qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAppbmRleCAyNjg1MzQ2Li5kOTI1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNz
IEpTU3ltYm9sVGFibGVPYmplY3Q7CiBjbGFzcyBKU1N5bWJvbFRhYmxlT2JqZWN0IDogcHVibGlj
IEpTU2NvcGUgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNTY29wZSBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SXNFbnZpcm9ubWVudFJlY29yZCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAgICAgCiAg
ICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJs
ZS5nZXQoKTsgfQogICAgIApAQCAtNTAsOCArNTEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
U3ltYm9sVGFibGVPYmplY3QsIG1fc3ltYm9sVGFibGUpOyB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJl
Y29yZCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LSAgICAKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4
IGY2OTU5NjguLmVjZjZjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKQEAgLTQzLDEyICs0MywxMiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
c0Vudmlyb25tZW50UmVjb3JkID0gMSA8PCA0Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwgNTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
ID0gMSA8PCA2Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAx
IDw8IDc7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
ID0gMSA8PCA4Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZyA9IDEgPDwgOTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0
eVNsb3QgPSAxIDw8IDEwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5ld0ltcHVyZVByb3BlcnR5
RmlyZXNXYXRjaHBvaW50cyA9IDEgPDwgMTE7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlSXNJbW1vcnRhbCA9IDEgPDwgMTI7CiAKIGNsYXNzIFR5cGVJbmZvIHsKIHB1YmxpYzoKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcp
OyB9CiAgICAgYm9vbCBoYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVy
biBpc1NldE9uRmxhZ3MyKEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCk7IH0KICAgICBib29s
IG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczIoTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKTsgfQotICAgIGJvb2wg
c3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0
dXJlSXNJbW1vcnRhbCk7IH0KKyAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MxKFN0cnVjdHVyZUlzSW1tb3J0YWwpOyB9CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IGZsYWdzT2Zmc2V0KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoT2JqZWN0LmgKaW5kZXggODRkMWY0Zi4uZmI3ZDkyOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQCBwcml2
YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgTWF0aE9iamVj
dCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDgsNyArNDksNiBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5oCmluZGV4IDYzMGY1ZTUuLjViOWQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFz
cyBOdW1iZXJQcm90b3R5cGU7CiBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIAogICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQog
ICAgIHsKQEAgLTQ3LDcgKzQ4LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIE51bWJlclByb3RvdHlwZSopOwotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElt
cGxlbWVudHNIYXNJbnN0YW5jZSB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwog
CiBwcml2YXRlOgogICAgIE51bWJlckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDU5
NzJmN2IuLjQ1YWNkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
TnVtYmVyUHJvdG90eXBlIDogcHVibGljIE51bWJlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBOdW1iZXJPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKIAogICAgIHN0YXRpYyBOdW1iZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAg
LTQ1LDcgKzQ2LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTnVtYmVyT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBOdW1iZXJQcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCmluZGV4IGJiMDY3YjEuLmZiYmY4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMzIsNiArMzIsNyBA
QCBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rp
b24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0
YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFByb3RvdHlwZSogb2JqZWN0
UHJvdG90eXBlKQogICAgIHsKQEAgLTUxLDcgKzUyLDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJv
dG90eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxh
Z3M7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCmluZGV4IDc1NGRhMmQuLjdlOGUxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtNzcsNyArNzcsNyBA
QCBpbmxpbmUgdW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpCiAgICAgcmV0dXJuIHY7
CiB9CiAKLWNsYXNzIFByb3BlcnR5VGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFByb3Bl
cnR5VGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGlt
cGxlbWVudGF0aW9uIGZvciAnaXRlcmF0b3InIGFuZCAnY29uc3RfaXRlcmF0b3InLAogICAgIC8v
IHVzZWQgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZSB0YWJsZSBpbiBpbnNlcnRpb24gb3JkZXIuCkBA
IC0xMjAsOCArMTIwLDEwIEBAIGNsYXNzIFByb3BlcnR5VGFibGUgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB9OwogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9
IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CkBAIC0xOTAsOSArMTkyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeSgpOwogI2VuZGlmCiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCiBwcml2YXRlOgog
ICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwogICAgIFBy
b3BlcnR5VGFibGUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDJlMTZmMjkuLjY3MDUwNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC00MiwxMyArNDIsMTMgQEAgY2xhc3MgVk07CiAK
IEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFN0cmluZyYp
OwogCi1jbGFzcyBSZWdFeHAgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFJlZ0V4cCBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZ0V4cCogY3JlYXRlKFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CkBAIC04NSw4ICs4NSw2IEBAIHB1YmxpYzoKICAgICBS
ZWdFeHBLZXkga2V5KCkgeyByZXR1cm4gUmVnRXhwS2V5KG1fZmxhZ3MsIG1fcGF0dGVyblN0cmlu
Zyk7IH0KIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ29uc3RydWN0b3IuaAppbmRleCBhODMyMDA2Li5jYWJlZTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKQEAgLTMzLDYgKzMz
LDcgQEAgY2xhc3MgUmVnRXhwUHJvdG90eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAg
ICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICB7CkBAIC02OCw3
ICs2OSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBSZWdFeHBQcm90b3R5cGUqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIAogcHJpdmF0ZToKICAgICBSZWdFeHBDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSos
IFJlZ0V4cFByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAppbmRleCA3YzRiNzUwLi5hMWY1NzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAg
ICBzdGF0aWMgUmVnRXhwT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVnRXhwKiByZWdFeHApCiAgICAgewpAQCAtNzcsOCArNzgsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhwT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgUmVnRXhw
Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwotCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKaW5kZXggZjk4ZmQwNi4uY2I2ZWU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdFeHBQcm90b3R5
cGUgOiBwdWJsaWMgUmVnRXhwT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJlZ0V4cE9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAg
c3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgIHsKQEAgLTQ2LDcgKzQ3LDYgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgUmVnRXhwUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKiwgUmVnRXhwKik7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgUmVnRXhwT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKaW5kZXggOGVmZDIzZC4u
YjZkN2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZWRBcmd1bWVudHNUYWJsZS5oCkBAIC0zOCw5ICszOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8v
IGFuZCBhbGlhc2VzIG9uZSBvZiB0aGVzZSBhbmQgdGhlbiBkZWNpZGVzIHRvIG1vZGlmeSBpdDsg
aW4gdGhhdCBjYXNlIHdlIGRvIGNvcHktb24td3JpdGUuIFRoaXMKIC8vIG1ha2VzIHNlbnNlIGJl
Y2F1c2Ugc3VjaCBtb2RpZmljYXRpb25zIGFyZSBzbyB1bmNvbW1vbi4gWW91J2QgaGF2ZSB0byBk
byBzb21ldGhpbmcgY3JhenkgbGlrZQogLy8gImRlbGV0ZSBhcmd1bWVudHNbaV0iIG9yIHNvbWUg
dmFyaWFudCBvZiBkZWZpbmVPd25Qcm9wZXJ0eS4KLWNsYXNzIFNjb3BlZEFyZ3VtZW50c1RhYmxl
IDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTY29wZWRBcmd1bWVudHNUYWJsZSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIAogcHJpdmF0ZToKICAgICBTY29wZWRBcmd1bWVu
dHNUYWJsZShWTSYpOwpAQCAtNTEsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNjb3Bl
ZEFyZ3VtZW50c1RhYmxlKiBjcmVhdGUoVk0mLCB1aW50MzJfdCBsZW5ndGgpOwogICAgIAogICAg
IHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIGNsb25lKFZNJik7
CkBAIC03OSw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
QXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFNjb3BlZEFyZ3VtZW50c1RhYmxl
LCBtX2FyZ3VtZW50cyk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7Ci0KICAgICBTY29wZU9mZnNldCYgYXQodWludDMyX3QgaSkKICAgICB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKaW5kZXgg
MDg5MDY3Mi4uZmYzNmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaApAQCAtNTEsOSArNTEsMTAgQEAgc3RydWN0IFNwYXJz
ZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOwogfTsKIAotY2xhc3MgU3BhcnNlQXJyYXlWYWx1ZU1hcCA6IHB1YmxpYyBK
U0NlbGwgeworY2xhc3MgU3BhcnNlQXJyYXlWYWx1ZU1hcCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOwogICAgIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFNwYXJzZUFycmF5RW50cnksIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBNYXA7CkBAIC02OSw4ICs3MCw2IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
ICAgICAKQEAgLTgxLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBTcGFyc2VBcnJheVZh
bHVlTWFwKiBjcmVhdGUoVk0mKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVj
dHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCmluZGV4IDgxNmExYTQuLjEzMTU3ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cmljdEV2YWxB
Y3RpdmF0aW9uIDogcHVibGljIEpTU2NvcGUgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNTY29w
ZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSXNFbnZpcm9ubWVudFJlY29yZDsKIAogICAgIHN0YXRpYyBTdHJp
Y3RFdmFsQWN0aXZhdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogY3VycmVu
dFNjb3BlKQogICAgIHsKQEAgLTUxLDkgKzUyLDYgQEAgcHVibGljOgogICAgIAogICAgIERFQ0xB
UkVfSU5GTzsKIAotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQog
cHJpdmF0ZToKICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgKaW5kZXggMDA4NmE2Yi4uMzU3NTExYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNz
IFN0cmluZ1Byb3RvdHlwZTsKIGNsYXNzIFN0cmluZ0NvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIFN0
cmluZ0NvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3Ry
aW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUpCiAgICAgewpAQCAtNDUsOSArNDYsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9u
OjpTdHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBTdHJpbmdDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJpbmdQcm90b3R5
cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oCmluZGV4IGNiYmQ5NjAuLjM5M2FmNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90OwogCiAgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CkBAIC00OSw5ICs1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotcHJvdGVjdGVkOgotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAppbmRleCAwY2ViZmRlLi45MGU2ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAog
ICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKQEAgLTY3LDcgKzY4LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTU3RyaW5nKik7Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09iamVj
dChWTSYsIFN0cnVjdHVyZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCA5NjU3Nzk2Li5iZDRmMDJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtMzMsNiAr
MzMsNyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTdHJpbmdPYmplY3QgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBTdHJpbmdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKQEAgLTQ1LDcgKzQ2LDYgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNTdHJpbmcqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBTdHJpbmdPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxNzM4
Y2E2Li4wNDZiMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAg
ICAgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZChmYWxzZSk7CiAgICAgc2V0SGFzUmFyZURhdGEo
ZmFsc2UpOwogIAotICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oQ2VsbFR5cGUsIFN0
cnVjdHVyZUlzSW1tb3J0YWwpOworICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKTsKICAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgMCwgdHlwZUluZm8pOwog
ICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggN2I0OGQz
NC4uMWI0NGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
QEAgLTkyLDExICs5MiwxMiBAQCBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgfQogfTsK
IAotY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTdHJ1Y3R1cmUgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOwogCiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBj
b25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5l
Q2FwYWNpdHkgPSAwKTsKIApAQCAtMTUzLDcgKzE1NCw2IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKFZNJiwgSlNP
YmplY3QqKTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIGJl
IHVzZWQgd2l0aCBjYXV0aW9uLiAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uaAppbmRleCA0OWYzZTQ2Li4wZmJkMWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTQwLDExICs0MCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFN0
cnVjdHVyZTsKIAotY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNz
IFN0cnVjdHVyZUNoYWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgeyAKQEAgLTYzLDEyICs2NCw5IEBAIHB1YmxpYzoK
ICAgICBERUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9
IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWw7Ci0KICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBoZWFk
KQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKaW5kZXggMjNmMDVm
OS4uMmIxMWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5oCkBAIC0zNiwxMiArMzYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKLWNsYXNzIFN0
cnVjdHVyZVJhcmVEYXRhIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0
YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgc3RhdGljIFN0cnVjdHVy
ZVJhcmVEYXRhKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lt
bW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwpAQCAtNjUsOCArNjcsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KFZNJiwgU3RydWN0dXJlKik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9wcmV2aW91czsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb2JqZWN0VG9T
dHJpbmdWYWx1ZTsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBt
X2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5oCmluZGV4IDI3YjAxZmMuLjE5YjZmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbC5oCkBAIC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIFN5bWJvbCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgU3ltYm9sIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3Ry
dWN0dXJlID0gdHJ1ZTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTgxLDggKzgxLDYgQEAgcHVibGljOgogICAgIGRvdWJsZSB0b051bWJlcihFeGVj
U3RhdGUqKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwotCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
IFN5bWJvbChWTSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQ
cm90b3R5cGUuaAppbmRleCA4NWE5M2QzLi44YjIyMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIFN5bWJvbFByb3RvdHlwZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIFN5
bWJvbFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7CkBAIC01NSw4ICs1Niw2IEBAIHByb3RlY3RlZDoKICAgICBTeW1i
b2xQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGE2YTIxZTcuLjM3Y2JiMjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTQwNCw5ICs0MDQs
MTAgQEAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxTeW1i
b2xUYWJsZUVudHJ5PiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IHRydWU7CiB9OwogCi1jbGFzcyBTeW1ib2xUYWJsZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3Mg
U3ltYm9sVGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFN5bWJvbFRhYmxlRW50cnksIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPj4sIFN5bWJvbFRhYmxlSW5k
ZXhIYXNoVHJhaXRzPiBNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBs
PiwgR2xvYmFsVmFyaWFibGVJRD4gVW5pcXVlSURNYXA7CkBAIC00MjksNyArNDMwLDYgQEAgcHVi
bGljOgogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRy
dWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNjQyLDkgKzY0Miw2IEBAIHB1YmxpYzoKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgY2xhc3MgV2F0Y2hwb2ludENsZWFudXAgOiBwdWJs
aWMgVW5jb25kaXRpb25hbEZpbmFsaXplciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKaW5kZXggZDFjOTFmMi4uN2UwODJlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCkBAIC0zNCw5ICsz
NCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgV2Vha01hcERhdGEgOiBwdWJsaWMg
SlNDZWxsIHsKK2NsYXNzIFdlYWtNYXBEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CiAKICAgICBzdGF0aWMgV2Vha01hcERhdGEqIGNyZWF0ZShWTSYgdm0pCiAgICAgewpAQCAt
NTEsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxT
dHJ1Y3R1cmUgPSB0cnVlOwogCiAgICAgdm9pZCBzZXQoVk0mLCBKU09iamVjdCosIEpTVmFsdWUp
OwogICAgIEpTVmFsdWUgZ2V0KEpTT2JqZWN0Kik7CkBAIC02MSw4ICs2MSw2IEBAIHB1YmxpYzoK
IAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQog
ICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIFdyaXRlQmFycmllcjxVbmtub3duPj4gTWFw
VHlwZTsKICAgICBNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmJlZ2luKCk7IH0KICAgICBNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZmY5NWIuLjkwM2RlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wNC0xMSAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3Qgc2VncmVnYXRlIGhlYXAgb2JqZWN0
cyBiYXNlZCBvbiBTdHJ1Y3R1cmUgaW1tb3J0YWxpdHkuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDM2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToK
KyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTUtMDQtMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBbGxvdyBMYXVuY2hTZXJ2aWNlcyB0byBoYW5kbGUgVVJMcyBvbiBsaW5r
IG5hdmlnYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IGVkYjJiNzkuLjFlMGM4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCkBAIC04NCwxNSArODQsMTYgQEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd1RoaXNUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGEKIAog
Ly8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0cnVjdG9yIG9iamVjdHMgaW4gdGhlIEpTQyBiaW5k
aW5ncy4KIGNsYXNzIERPTUNvbnN0cnVjdG9yT2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlciB7
Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpT
RE9NV3JhcHBlciBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2U7CisK
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
SlNET01XcmFwcGVyOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdChK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgICAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDA3MzE5NDkuLjYyNWMxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMTAzLDYgKzExMDMsMTYgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxu
Iik7CiAgICAgfQogCisgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKKyAgICBpZiAoJXN0cnVjdHVyZUZs
YWdzKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSAiKTsKKyAgICAgICAgZm9yZWFjaCBteSAkc3RydWN0dXJlRmxhZyAoc29ydCAo
a2V5cyAlc3RydWN0dXJlRmxhZ3MpKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAkc3RydWN0dXJlRmxhZyAuICIgfCAiKTsKKyAgICAgICAgfQorICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiQmFzZTo6U3RydWN0dXJlRmxhZ3M7XG4iKTsKKyAgICB9CisKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CiAKICAgICAjIENvbnN0cnVjdG9yCkBA
IC0xMTE5LDE1ICsxMTI5LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9CiAKLSAgICAjIHN0cnVjdHVyZSBmbGFn
cwotICAgIGlmICglc3RydWN0dXJlRmxhZ3MpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSAiKTsKLSAgICAg
ICAgZm9yZWFjaCBteSAkc3RydWN0dXJlRmxhZyAoc29ydCAoa2V5cyAlc3RydWN0dXJlRmxhZ3Mp
KSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkc3RydWN0dXJlRmxhZyAuICIg
fCAiKTsKLSAgICAgICAgfQotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7XG4iKTsKLSAgICB9Ci0KICAgICAjIEluZGV4IHNldHRlcgogICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBpbmRleFNldHRlcihKU0M6
OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUpO1xuIik7CkBAIC00MzAz
LDcgKzQzMDQsNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAgIyBz
dHJ1Y3R1cmUgZmxhZ3MKICAgICBpZiAoJXN0cnVjdHVyZUZsYWdzKSB7Ci0gICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgInByb3RlY3RlZDpcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJwdWJsaWM6XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9ICIpOwogICAgICAgICBmb3JlYWNoIG15
ICRzdHJ1Y3R1cmVGbGFnIChzb3J0IChrZXlzICVzdHJ1Y3R1cmVGbGFncykpIHsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJHN0cnVjdHVyZUZsYWcgLiAiIHwgIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IGU2YTliYzkuLmY1NTExNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC05Myw2ICs5
Myw3IEBAIHByaXZhdGU6CiBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAg
IHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIHsKQEAgLTEyMyw3ICsxMjQsNiBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5k
ZXggYjZkMWY2OC4uMGQzZjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUnVudGltZUFycmF5IDog
cHVibGljIEpTQXJyYXkgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNBcnJheSBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXM7CiAKICAgICBzdGF0aWMgUnVudGltZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQogICAgIHsKQEAgLTgwLDggKzgxLDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBCaW5kaW5nczo6
QXJyYXkqKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNBcnJheTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgUnVudGltZUFycmF5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKaW5kZXggZTdkYzdmNC4u
OGFkMjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSdW50aW1lTWV0
aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50
ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
OwogCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2QqIG1ldGhvZCkKICAgICB7CkBAIC02MCw3ICs2
MSw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZCopOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0
aW9uOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IDJjMmFlNWYuLmQwYTJmMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC0zNSw2ICszNSw3IEBAIG5h
bWVzcGFjZSBCaW5kaW5ncyB7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSdW50aW1lT2JqZWN0IDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIFJ1bnRpbWVPYmpl
Y3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3Rh
bmNlPiBpbnN0YW5jZSkKICAgICB7CkBAIC03NSw3ICs3Niw2IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBSdW50aW1lT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxJbnN0YW5j
ZT4pOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMzg4MGQ1MC4uZjAxODNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA0
LTExICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBz
ZWdyZWdhdGUgaGVhcCBvYmplY3RzIGJhc2VkIG9uIFN0cnVjdHVyZSBpbW1vcnRhbGl0eS4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MzYzOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0Lmg6CisKIDIwMTUtMDQtMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBbGxvdyBMYXVuY2hTZXJ2aWNlcyB0byBoYW5kbGUgVVJMcyBvbiBsaW5r
IG5hdmlnYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA3OWRhZjViLi43NTdmZmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgTlBSdW50aW1lT2JqZWN0TWFwOwogY2xh
c3MgSlNOUE9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOwogCiAgICAgc3RhdGljIEpTTlBPYmplY3QqIGNyZWF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5QUnVudGltZU9iamVjdE1hcCogb2JqZWN0TWFwLCBOUE9i
amVjdCogbnBPYmplY3QpCiAgICAgewpAQCAtNzQsOCArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgSlNOUE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1
cmUqLCBOUFJ1bnRpbWVPYmplY3RNYXAqLCBOUE9iamVjdCopOwotCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAgICAgCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250620</attachid>
            <date>2015-04-12 20:38:34 -0700</date>
            <delta_ts>2015-04-13 10:50:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-143638.diff</filename>
            <type>text/plain</type>
            <size>121137</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CmluZGV4IGQyNzkyZjguLmYxNzg5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlOwogCiAgICAgc3RhdGljIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpT
T2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewpAQCAtNTYs
NyArNTcsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RDYWxsQXND
b25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDbGFzc1JlZik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgQVBJQ2FsbGJhY2tGdW5jdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZmMxMTlkYS4u
YzA1NmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVm
IFBhcmVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFBhcmVudDo6U3RydWN0dXJlRmxhZ3MgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgfkpT
Q2FsbGJhY2tPYmplY3QoKTsKIApAQCAtMTcwLDkgKzE3MSw2IEBAIHB1YmxpYzoKIAogICAgIHVz
aW5nIFBhcmVudDo6bWV0aG9kVGFibGU7CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgUGFyZW50OjpT
dHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShj
b25zdCBKU09iamVjdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjYTU0ZDIzLi5j
MDNkMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjAgQEAKKzIwMTUt
MDQtMTEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0
IHNlZ3JlZ2F0ZSBoZWFwIG9iamVjdHMgYmFzZWQgb24gU3RydWN0dXJlIGltbW9ydGFsaXR5Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQzNjM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1dCBhbGwgb2JqZWN0cyB0aGF0IG5lZWQg
YSBkZXN0cnVjdG9yIGNhbGwgaW50byB0aGUgc2FtZSBNYXJrZWRCbG9jay4KKyAgICAgICAgVGhp
cyByZWR1Y2VzIG1lbW9yeSBjb25zdW1wdGlvbiBpbiBtYW55IHNpdHVhdGlvbnMsIHdoaWxlIGlt
cHJvdmluZyBsb2NhbGl0eSwKKyAgICAgICAgc2luY2UgbXVjaCBtb3JlIG9mIHRoZSBNYXJrZWRC
bG9jayBzcGFjZSBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIEluc3RlYWQgb2YgYnJhbmNoaW5n
IG9uIHRoZSBNYXJrZWRCbG9jayB0eXBlLCB3ZSBub3cgY2hlY2sgYSBiaXQgaW4gdGhlCisgICAg
ICAgIEpTQ2VsbCdzIGlubGluZSB0eXBlIGZsYWdzIChTdHJ1Y3R1cmVJc0ltbW9ydGFsKSB0byBz
ZWUgd2hldGhlciBpdCdzIHNhZmUKKyAgICAgICAgdG8gYWNjZXNzIHRoZSBjZWxsJ3MgU3RydWN0
dXJlIGR1cmluZyBkZXN0cnVjdGlvbiBvciBub3QuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgYmVu
Y2htYXJrcyBsb29rIG5ldXRyYWwuCisKKyAgICAgICAgT24gdGhlIGFtYXpvbi5jb20gbGFuZGlu
ZyBwYWdlLCB0aGlzIHNhdmVzIHVzIDUwIE1hcmtlZEJsb2NrcyAoMzIwMGtCKSBhbG9uZworICAg
ICAgICB3aXRoIGEgYnVuY2ggb2YgV2Vha0Jsb2NrcyB0aGF0IHdlcmUgaGFuZ2luZyBvZmYgb2Yg
dGhlbS4gVGhhdCdzIG9uIHRoZSBoaWdoZXIKKyAgICAgICAgZW5kIG9mIHNhdmluZ3Mgd2UgY2Fu
IGdldCBmcm9tIHRoaXMsIGJ1dCBzdGlsbCBhIHZlcnkgcmVhbCBpbXByb3ZlbWVudC4KKworICAg
ICAgICBNb3N0IG9mIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgdGhlICJoYXNJbW1vcnRhbFN0cnVj
dHVyZSIgY29uc3RhbnQgZnJvbSBKU0NlbGwKKyAgICAgICAgZGVyaXZlZCBjbGFzc2VzIGFuZCBw
YXNzaW5nIHRoYXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlIFN0cnVjdHVyZUlzSW1tb3J0YWwgZmxh
Zy4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVNYWtlUm9wZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU1ha2VSb3BlKToK
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Vic3BhY2VGb3JP
YmplY3REZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdG9yRm9yT2JqZWN0
V2l0aERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdWJzcGFjZUZvck9iamVjdE5v
cm1hbERlc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzdWJzcGFjZUZv
ck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpI
ZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFsRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkhlYXA6OmFsbG9jYXRlT2JqZWN0T2ZUeXBlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Vic3Bh
Y2VGb3JPYmplY3RPZlR5cGUpOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmpl
Y3RPZlR5cGUpOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVj
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVXaXRoSW1tb3J0YWxT
dHJ1Y3R1cmVEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9j
YXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jayk6
CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Omlu
aXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmRlc3RydWN0b3JUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRCbG9j
ayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnN3ZWVwSGVscGVy
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpuZWVkc0Rlc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmRlc3Ry
dWN0b3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpm
b3JFYWNoQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmlzUGFnZWRPdXQp
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vi
c3BhY2VGb3JPYmplY3RzV2l0aERlc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjph
bGxvY2F0ZVdpdGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVh
Y2hCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzdWJzcGFjZUZvck9iamVjdHNX
aXRoTm9ybWFsRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5vcm1hbERlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlJ
dGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGlt
ZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2Fs
bGVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc0luZm8pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNF
bnZpcm9ubWVudFJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYW1lU2NvcGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTTm90QW5PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6
OkpTRmluYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb21pc2VQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVJl
YWN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9ydGFsKToKKyAgICAgICAgKiBydW50
aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Nj
b3BlZEFyZ3VtZW50c1RhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmg6
CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a01hcERhdGEuaDoKKwogMjAxNS0wNC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBFUzY6IEl0ZXJhdG9yIHRvU3RyaW5nIG5hbWVzIHNob3VsZCBi
ZSBjb25zaXN0ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCmluZGV4IDc5NzIzMjcuLjg1ODRhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMDIsNyAr
MTAyLDEwIEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwog
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgZnJpZW5kIGNsYXNzIFZNOworCiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQpAQCAtMTYyLDcgKzE2NSw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
YXB0dXJlZFZhcmlhYmxlczsgfQogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUg
PSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQpA
QCAtMjE0LDggKzIxNiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwg
SlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiB9Owog
CkBAIC0yNjcsOCArMjY3LDkgQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwogICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rp
b24sIEFwcGx5RnVuY3Rpb24gfTsKIApAQCAtNjA0LDggKzYwNSw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHNpemVfdD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKIAog
cHJvdGVjdGVkOgotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpAQCAt
NjM3LDYgKzYzNiw4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHZvaWQgYWRkRnVuY3Rpb25E
ZWNsYXJhdGlvbihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUpCkBAIC02ODgsNiArNjg5LDggQEAgcHJp
dmF0ZToKIAogcHVibGljOgogICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgdmFyaWFibGUodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fdmFyaWFibGVzW2luZGV4XTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggMjI3Y2IxOS4uNDQxNjY4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBA
IC0zNiw2ICszNiw3IEBAIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBEZWJ1Z2dlclNjb3BlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBEZWJ1Z2dlclNjb3BlKiBjcmVhdGUo
Vk0mIHZtLCBKU1Njb3BlKiBzY29wZSkKICAgICB7CkBAIC05OCw4ICs5OSw2IEBAIHByaXZhdGU6
CiAKICAgICBKU1Njb3BlKiBqc1Njb3BlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZS5nZXQoKTsg
fQogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIFdyaXRlQmFycmllcjxKU1Njb3BlPiBtX3Njb3BlOwog
ICAgIFdyaXRlQmFycmllcjxEZWJ1Z2dlclNjb3BlPiBtX25leHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZWI1MGNhZC4uMTYx
MTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTI3OTUsNyArMjc5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVN
YWtlUm9wZShOb2RlKiBub2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7Ci0gICAgTWFya2Vk
QWxsb2NhdG9yJiBtYXJrZWRBbGxvY2F0b3IgPSBtX2ppdC52bSgpLT5oZWFwLmFsbG9jYXRvckZv
ck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKEpTUm9wZVN0cmlu
ZykpOworICAgIE1hcmtlZEFsbG9jYXRvciYgbWFya2VkQWxsb2NhdG9yID0gbV9qaXQudm0oKS0+
aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplb2YoSlNSb3BlU3RyaW5n
KSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKCZtYXJrZWRBbGxvY2F0b3IpLCBhbGxv
Y2F0b3JHUFIpOwogICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvckdQ
UiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLCBzY3Jh
dGNoR1BSLCBzbG93UGF0aCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCA3MTQyNTU5Li5lMzlkMGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtMzQx
OSw3ICszNDE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAgICAgICAKICAgICAgICAg
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IgPQotICAgICAgICAgICAgdm0oKS5oZWFwLmFsbG9j
YXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZW9mKEpTUm9w
ZVN0cmluZykpOworICAgICAgICAgICAgdm0oKS5oZWFwLmFsbG9jYXRvckZvck9iamVjdFdpdGhE
ZXN0cnVjdG9yKHNpemVvZihKU1JvcGVTdHJpbmcpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigm
YWxsb2NhdG9yKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCA5MDE5ZmM3Li4yMmIw
ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMzcsMTIgKzEzNywxMCBAQCBw
dWJsaWM6CiAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MKICAgICBib29sIGlzQnVzeSgpOwogICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYg
c3Vic3BhY2VGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3Bh
Y2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKTsgfQotICAgIE1hcmtlZFNw
YWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3Rvcigp
OyB9Ci0gICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0
c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOyB9CisgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBz
dWJzcGFjZUZvck9iamVjdERlc3RydWN0b3IoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNw
YWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
bGFzc1R5cGU+IE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RPZlR5cGUo
KTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVj
dG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0b3JGb3IoYnl0
ZXMpOyB9Ci0gICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoTm9ybWFs
RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uubm9ybWFsRGVz
dHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KLSAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvckZvck9iamVjdFdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVz
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLmltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9j
YXRvckZvcihieXRlcyk7IH0KKyAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVj
dFdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5kZXN0
cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNz
VHlwZT4gTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RPZlR5cGUoc2l6ZV90IGJ5
dGVzKTsKICAgICBDb3BpZWRBbGxvY2F0b3ImIHN0b3JhZ2VBbGxvY2F0b3IoKSB7IHJldHVybiBt
X3N0b3JhZ2VTcGFjZS5hbGxvY2F0b3IoKTsgfQogICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9j
YXRlU3RvcmFnZShKU0NlbGwqIGludGVuZGVkT3duZXIsIHNpemVfdCwgdm9pZCoqKTsKQEAgLTI2
Niw4ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2
b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVu
ZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiAKLSAgICB2b2lkKiBhbGxvY2F0
ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRo
IHNwZWNpYWwgb2JqZWN0cyB3aG9zZSBTdHJ1Y3R1cmVzIG5ldmVyIGRpZS4KLSAgICB2b2lkKiBh
bGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmpl
Y3RzIHRoYXQgaW5oZXJpdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGZyb20gSlNEZXN0cnVjdGli
bGVPYmplY3QuCisgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBG
b3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQqIGFsbG9jYXRl
V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0aG91
dCBkZXN0cnVjdG9ycy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQqIGFs
bG9jYXRlT2JqZWN0T2ZUeXBlKHNpemVfdCk7IC8vIENob29zZXMgb25lIG9mIHRoZSBtZXRob2Rz
IGFib3ZlIGJhc2VkIG9uIHR5cGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IDZiYTU0ZGEuLjk1NWNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcElubGluZXMuaApAQCAtMjA5LDIyICsyMDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJiBmdW5j
dG9yKQogICAgIHJldHVybiBtX2NvZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihmdW5jdG9yKTsK
IH0KIAotaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6
ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6
ZV90IGJ5dGVzKQogewogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxv
Z0YoIkpTQyBHQyBhbGxvY2F0aW5nICVsdSBieXRlcyB3aXRoIG5vcm1hbCBkZXN0cnVjdG9yLlxu
IiwgYnl0ZXMpOwogI2VuZGlmCiAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7
Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3Rvcihi
eXRlcyk7Ci19Ci0KLWlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQotewotI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xP
R0dJTkcpCi0gICAgZGF0YUxvZ0YoIkpTQyBHQyBhbGxvY2F0aW5nICVsdSBieXRlcyB3aXRoIGlt
bW9ydGFsIHN0cnVjdHVyZSBkZXN0cnVjdG9yLlxuIiwgYnl0ZXMpOwotI2VuZGlmCi0gICAgQVNT
RVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2Uu
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKGJ5dGVzKTsKKyAgICByZXR1
cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKGJ5dGVzKTsKIH0KIAogaW5s
aW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpA
QCAtMjQwLDEyICsyMzEsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgogdm9pZCog
SGVhcDo6YWxsb2NhdGVPYmplY3RPZlR5cGUoc2l6ZV90IGJ5dGVzKQogewogICAgIC8vIEpTQ2Vs
bDo6Y2xhc3NJbmZvKCkgZXhwZWN0cyBvYmplY3RzIGFsbG9jYXRlZCB3aXRoIG5vcm1hbCBkZXN0
cnVjdG9yIHRvIGRlcml2ZSBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgotICAgIEFTU0VSVCgo
IUNsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiB8fCBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3Ry
dWN0dXJlIHx8IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBKU0Rlc3RydWN0aWJsZU9i
amVjdD46OnZhbHVlKSk7CisgICAgQVNTRVJUKCghQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9u
IHx8IChDbGFzc1R5cGU6OlN0cnVjdHVyZUZsYWdzICYgU3RydWN0dXJlSXNJbW1vcnRhbCkgfHwg
c3RkOjppc19jb252ZXJ0aWJsZTxDbGFzc1R5cGUsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6dmFs
dWUpKTsKIAotICAgIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgQ2xhc3NUeXBl
OjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlV2l0aEltbW9y
dGFsU3RydWN0dXJlRGVzdHJ1Y3RvcihieXRlcyk7CiAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbikKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Io
Ynl0ZXMpOworICAgICAgICByZXR1cm4gYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihieXRlcyk7CiAg
ICAgcmV0dXJuIGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3IoYnl0ZXMpOwogfQogCkBAIC0yNTMs
MTIgKzI0MiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CiBNYXJrZWRTcGFjZTo6
U3Vic3BhY2UmIEhlYXA6OnN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlKCkKIHsKICAgICAvLyBKU0Nl
bGw6OmNsYXNzSW5mbygpIGV4cGVjdHMgb2JqZWN0cyBhbGxvY2F0ZWQgd2l0aCBub3JtYWwgZGVz
dHJ1Y3RvciB0byBkZXJpdmUgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KLSAgICBBU1NFUlQo
KCFDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgQ2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0
cnVjdHVyZSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENsYXNzVHlwZSwgSlNEZXN0cnVjdGlibGVP
YmplY3Q+Ojp2YWx1ZSkpOworICAgIEFTU0VSVCgoIUNsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlv
biB8fCAoQ2xhc3NUeXBlOjpTdHJ1Y3R1cmVGbGFncyAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpIHx8
IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBKU0Rlc3RydWN0aWJsZU9iamVjdD46OnZh
bHVlKSk7CiAgICAgCi0gICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiAmJiBDbGFz
c1R5cGU6Omhhc0ltbW9ydGFsU3RydWN0dXJlKQotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JP
YmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKCk7CiAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNE
ZXN0cnVjdGlvbikKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9yT2JqZWN0Tm9ybWFsRGVzdHJ1
Y3RvcigpOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JPYmplY3REZXN0cnVjdG9yKCk7CiAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKTsKIH0KIApAQCAt
MjY2LDEyICsyNTMsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgogTWFya2VkQWxs
b2NhdG9yJiBIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RPZlR5cGUoc2l6ZV90IGJ5dGVzKQogewog
ICAgIC8vIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgZXhwZWN0cyBvYmplY3RzIGFsbG9jYXRlZCB3aXRo
IG5vcm1hbCBkZXN0cnVjdG9yIHRvIGRlcml2ZSBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lgot
ICAgIEFTU0VSVCgoIUNsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiB8fCBDbGFzc1R5cGU6Omhh
c0ltbW9ydGFsU3RydWN0dXJlIHx8IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBKU0Rl
c3RydWN0aWJsZU9iamVjdD46OnZhbHVlKSk7CisgICAgQVNTRVJUKCghQ2xhc3NUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uIHx8IChDbGFzc1R5cGU6OlN0cnVjdHVyZUZsYWdzICYgU3RydWN0dXJlSXNJ
bW1vcnRhbCkgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxDbGFzc1R5cGUsIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Pjo6dmFsdWUpKTsKICAgICAKLSAgICBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0
aW9uICYmIENsYXNzVHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAgIHJldHVybiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKGJ5dGVzKTsK
ICAgICBpZiAoQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKQotICAgICAgICByZXR1cm4gYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3IoYnl0ZXMpOworICAgICAgICByZXR1
cm4gYWxsb2NhdG9yRm9yT2JqZWN0V2l0aERlc3RydWN0b3IoYnl0ZXMpOwogICAgIHJldHVybiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihieXRlcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCmluZGV4IGE3ZDI5YmIu
LjJkYmY4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2Nh
dG9yLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIE1hcmtlZEJsb2NrKiBNYXJrZWRBbGxvY2F0b3I6
OmFsbG9jYXRlQmxvY2soc2l6ZV90IGJ5dGVzKQogCiAgICAgc2l6ZV90IGNlbGxTaXplID0gbV9j
ZWxsU2l6ZSA/IG1fY2VsbFNpemUgOiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxv
Y2s6OmF0b21TaXplPihieXRlcyk7CiAKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZSh0
aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX2Rlc3RydWN0b3JUeXBlKTsKKyAgICByZXR1cm4g
TWFya2VkQmxvY2s6OmNyZWF0ZSh0aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX25lZWRzRGVz
dHJ1Y3Rpb24pOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxv
Y2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAppbmRleCBiNDk3ZjhmLi4wMmE0YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRBbGxvY2F0b3IuaApAQCAtMjYsNyArMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dG9wQWxsb2NhdGluZygpOwogICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOwogICAgIHNpemVf
dCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KLSAgICBNYXJrZWRCbG9jazo6RGVz
dHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUoKSB7IHJldHVybiBtX2Rlc3RydWN0b3JUeXBlOyB9
CisgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9u
OyB9CiAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKICAgICBIZWFwKiBoZWFwKCkgeyByZXR1
cm4gbV9oZWFwOyB9CiAgICAgTWFya2VkQmxvY2sqIHRha2VMYXN0QWN0aXZlQmxvY2soKQpAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9j
ayopOwogICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIGluaXQo
SGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVzdHJ1
Y3RvclR5cGUpOworICAgIHZvaWQgaW5pdChIZWFwKiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2Vs
bFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CiAKICAgICBib29sIGlzUGFnZWRPdXQoZG91
YmxlIGRlYWRsaW5lKTsKICAgIApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIERvdWJs
eUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fYmxvY2tMaXN0OwogICAgIERvdWJseUxpbmtlZExp
c3Q8TWFya2VkQmxvY2s+IG1fcmV0aXJlZEJsb2NrczsKICAgICBzaXplX3QgbV9jZWxsU2l6ZTsK
LSAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKKyAgICBi
b29sIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkU3Bh
Y2UqIG1fbWFya2VkU3BhY2U7CiB9OwpAQCAtNzQsMTggKzc0LDE4IEBAIGlubGluZSBNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcigpCiAgICAgLCBtX2xhc3RBY3RpdmVCbG9jaygwKQog
ICAgICwgbV9uZXh0QmxvY2tUb1N3ZWVwKDApCiAgICAgLCBtX2NlbGxTaXplKDApCi0gICAgLCBt
X2Rlc3RydWN0b3JUeXBlKE1hcmtlZEJsb2NrOjpOb25lKQorICAgICwgbV9uZWVkc0Rlc3RydWN0
aW9uKGZhbHNlKQogICAgICwgbV9oZWFwKDApCiAgICAgLCBtX21hcmtlZFNwYWNlKDApCiB7CiB9
CiAKLWlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6aW5pdChIZWFwKiBoZWFwLCBNYXJrZWRT
cGFjZSogbWFya2VkU3BhY2UsIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0
b3JUeXBlIGRlc3RydWN0b3JUeXBlKQoraW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0
KEhlYXAqIGhlYXAsIE1hcmtlZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24pCiB7CiAgICAgbV9oZWFwID0gaGVhcDsKICAgICBtX21hcmtl
ZFNwYWNlID0gbWFya2VkU3BhY2U7CiAgICAgbV9jZWxsU2l6ZSA9IGNlbGxTaXplOwotICAgIG1f
ZGVzdHJ1Y3RvclR5cGUgPSBkZXN0cnVjdG9yVHlwZTsKKyAgICBtX25lZWRzRGVzdHJ1Y3Rpb24g
PSBuZWVkc0Rlc3RydWN0aW9uOwogfQogCiBpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjph
bGxvY2F0ZShzaXplX3QgYnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAKaW5kZXggZTEwNzIyZC4uNWNiZmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlw
ZSBkZXN0cnVjdG9yVHlwZSkKK01hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKQogewotICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGZhc3RB
bGlnbmVkTWFsbG9jKGJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBNYXJrZWRCbG9jayhhbGxvY2F0b3Is
IGNhcGFjaXR5LCBjZWxsU2l6ZSwgZGVzdHJ1Y3RvclR5cGUpOworICAgIHJldHVybiBuZXcgKE5v
dE51bGwsIGZhc3RBbGlnbmVkTWFsbG9jKGJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBNYXJrZWRCbG9j
ayhhbGxvY2F0b3IsIGNhcGFjaXR5LCBjZWxsU2l6ZSwgbmVlZHNEZXN0cnVjdGlvbik7CiB9CiAK
IHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtNDQsMTIg
KzQ0LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQog
ICAgIGZhc3RBbGlnbmVkRnJlZShibG9jayk7CiB9CiAKLU1hcmtlZEJsb2NrOjpNYXJrZWRCbG9j
ayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2Vs
bFNpemUsIERlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKQorTWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVf
dCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQogICAgIDogRG91Ymx5TGlua2VkTGlz
dE5vZGU8TWFya2VkQmxvY2s+KCkKICAgICAsIG1fYXRvbXNQZXJDZWxsKChjZWxsU2l6ZSArIGF0
b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5kQXRvbSgoYWxsb2NhdG9yLT5jZWxs
U2l6ZSgpID8gYXRvbXNQZXJCbG9jayA6IGNhcGFjaXR5IC8gYXRvbVNpemUpIC0gbV9hdG9tc1Bl
ckNlbGwgKyAxKQogICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKLSAgICAsIG1fZGVzdHJ1Y3Rv
clR5cGUoZGVzdHJ1Y3RvclR5cGUpCisgICAgLCBtX25lZWRzRGVzdHJ1Y3Rpb24obmVlZHNEZXN0
cnVjdGlvbikKICAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3
KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgogICAgICwgbV93ZWFrU2V0KGFsbG9j
YXRvci0+aGVhcCgpLT52bSgpKQpAQCAtNTgsNyArNTgsNiBAQCBNYXJrZWRCbG9jazo6TWFya2Vk
QmxvY2soTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90
IGNlbAogICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiB9CiAKLXRl
bXBsYXRlPE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkdG9yVHlwZT4KIGlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiB7CiAgICAgLy8gQSBw
cmV2aW91cyBlYWdlciBzd2VlcCBtYXkgYWxyZWFkeSBoYXZlIHJ1biBjZWxsJ3MgZGVzdHJ1Y3Rv
ci4KQEAgLTY2LDIwICs2NSwyMCBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3Ry
dWN0b3IoSlNDZWxsKiBjZWxsKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoY2VsbC0+
c3RydWN0dXJlSUQoKSk7Ci0gICAgaWYgKGR0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb3JtYWwp
Ci0gICAgICAgIGpzQ2FzdDxKU0Rlc3RydWN0aWJsZU9iamVjdCo+KGNlbGwpLT5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKLSAgICBlbHNlCisgICAgaWYgKGNlbGwtPmlu
bGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1vcnRhbCkKICAgICAgICAgY2VsbC0+c3Ry
dWN0dXJlKCp2bSgpKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY2VsbCk7Cisg
ICAgZWxzZQorICAgICAgICBqc0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihjZWxsKS0+Y2xh
c3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koY2VsbCk7CiAgICAgY2VsbC0+emFwKCk7CiB9
CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1hcmtlZEJs
b2NrOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRv
clR5cGU+Cit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0YXRlLCBNYXJr
ZWRCbG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgYm9vbCBjYWxsRGVzdHJ1Y3RvcnM+CiBNYXJr
ZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQogewogICAg
IEFTU0VSVChibG9ja1N0YXRlICE9IEFsbG9jYXRlZCAmJiBibG9ja1N0YXRlICE9IEZyZWVMaXN0
ZWQpOwotICAgIEFTU0VSVCghKGR0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb25lICYmIHN3ZWVw
TW9kZSA9PSBTd2VlcE9ubHkpKTsKKyAgICBBU1NFUlQoISghY2FsbERlc3RydWN0b3JzICYmIHN3
ZWVwTW9kZSA9PSBTd2VlcE9ubHkpKTsKIAotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKChkdG9yVHlwZSAhPSBNYXJrZWRCbG9jazo6Tm9uZSAmJiBibG9ja1N0YXRlICE9IE5ldykg
PyAiQ2FsbGluZyBkZXN0cnVjdG9ycyIgOiAic3dlZXBpbmciKTsKKyAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbigoIWNhbGxEZXN0cnVjdG9ycyAmJiBibG9ja1N0YXRlICE9IE5ldykg
PyAiQ2FsbGluZyBkZXN0cnVjdG9ycyIgOiAic3dlZXBpbmciKTsKICAgICAKICAgICAvLyBUaGlz
IHByb2R1Y2VzIGEgZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2gg
dGhlIGJsb2NrLgogICAgIC8vIFRoaXMgaXMgZmluZSwgc2luY2UgdGhlIGFsbG9jYXRpb24gY29k
ZSBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0aGUKQEAgLTkyLDggKzkxLDggQEAgTWFya2Vk
QmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKCkKIAogICAgICAg
ICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtp
XSk7CiAKLSAgICAgICAgaWYgKGR0b3JUeXBlICE9IE1hcmtlZEJsb2NrOjpOb25lICYmIGJsb2Nr
U3RhdGUgIT0gTmV3KQotICAgICAgICAgICAgY2FsbERlc3RydWN0b3I8ZHRvclR5cGU+KGNlbGwp
OworICAgICAgICBpZiAoY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KQorICAg
ICAgICAgICAgY2FsbERlc3RydWN0b3IoY2VsbCk7CiAKICAgICAgICAgaWYgKHN3ZWVwTW9kZSA9
PSBTd2VlcFRvRnJlZUxpc3QpIHsKICAgICAgICAgICAgIEZyZWVDZWxsKiBmcmVlQ2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPihjZWxsKTsKQEAgLTExOCwyMyArMTE3LDIxIEBAIE1h
cmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAoU3dlZXBNb2RlIHN3ZWVwTW9k
ZSkKIAogICAgIG1fd2Vha1NldC5zd2VlcCgpOwogCi0gICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2Vl
cE9ubHkgJiYgbV9kZXN0cnVjdG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9uZSkKKyAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwT25seSAmJiAhbV9uZWVkc0Rlc3RydWN0aW9uKQogICAgICAgICBy
ZXR1cm4gRnJlZUxpc3QoKTsKIAotICAgIGlmIChtX2Rlc3RydWN0b3JUeXBlID09IE1hcmtlZEJs
b2NrOjpJbW1vcnRhbFN0cnVjdHVyZSkKLSAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPE1hcmtl
ZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZT4oc3dlZXBNb2RlKTsKLSAgICBpZiAobV9kZXN0cnVj
dG9yVHlwZSA9PSBNYXJrZWRCbG9jazo6Tm9ybWFsKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXI8TWFya2VkQmxvY2s6Ok5vcm1hbD4oc3dlZXBNb2RlKTsKLSAgICByZXR1cm4gc3dlZXBIZWxw
ZXI8TWFya2VkQmxvY2s6Ok5vbmU+KHN3ZWVwTW9kZSk7CisgICAgaWYgKG1fbmVlZHNEZXN0cnVj
dGlvbikKKyAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyPHRydWU+KHN3ZWVwTW9kZSk7CisgICAg
cmV0dXJuIHN3ZWVwSGVscGVyPGZhbHNlPihzd2VlcE1vZGUpOwogfQogCi10ZW1wbGF0ZTxNYXJr
ZWRCbG9jazo6RGVzdHJ1Y3RvclR5cGUgZHRvclR5cGU+Cit0ZW1wbGF0ZTxib29sIGNhbGxEZXN0
cnVjdG9ycz4KIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXBIZWxwZXIo
U3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICBjYXNl
IE5ldzoKICAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwotICAg
ICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwgZHRvclR5
cGU+KCk7CisgICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVM
aXN0LCBjYWxsRGVzdHJ1Y3RvcnM+KCk7CiAgICAgY2FzZSBGcmVlTGlzdGVkOgogICAgICAgICAv
LyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCiAg
ICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKQEAgLTE0NSw4ICsx
NDIsOCBAQCBNYXJrZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnN3ZWVwSGVscGVyKFN3
ZWVwTW9kZSBzd2VlcE1vZGUpCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIGNhc2Ug
TWFya2VkOgogICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdAotICAg
ICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBUb0ZyZWVMaXN0LCBkdG9y
VHlwZT4oKQotICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5
LCBkdG9yVHlwZT4oKTsKKyAgICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3
ZWVwVG9GcmVlTGlzdCwgY2FsbERlc3RydWN0b3JzPigpCisgICAgICAgICAgICA6IHNwZWNpYWxp
emVkU3dlZXA8TWFya2VkLCBTd2VlcE9ubHksIGNhbGxEZXN0cnVjdG9ycz4oKTsKICAgICB9CiAK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggNTc2ZWQ1Mi4uNDY3NDkzNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0xMTEsOCArMTExLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBSZXR1cm5UeXBlIG1fY291bnQ7CiAgICAgICAgIH07CiAKLSAg
ICAgICAgZW51bSBEZXN0cnVjdG9yVHlwZSB7IE5vbmUsIEltbW9ydGFsU3RydWN0dXJlLCBOb3Jt
YWwgfTsKLSAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoTWFya2VkQWxsb2NhdG9y
Kiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsKKyAg
ICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUoTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90
IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMg
Ym9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKQEAgLTE1NSw3ICsxNTQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCk7CiAKICAgICAgICAgc2l6ZV90IGNl
bGxTaXplKCk7Ci0gICAgICAgIERlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKCk7CisgICAg
ICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXpl
KCk7CiAgICAgICAgIHNpemVfdCBjYXBhY2l0eSgpOwpAQCAtMTkwLDE1ICsxODksMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1h
c2sgPSBhdG9tU2l6ZSAtIDE7IC8vIGF0b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCiAK
ICAgICAgICAgZW51bSBCbG9ja1N0YXRlIHsgTmV3LCBGcmVlTGlzdGVkLCBBbGxvY2F0ZWQsIE1h
cmtlZCwgUmV0aXJlZCB9OwotICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yVHlwZT4gRnJlZUxp
c3Qgc3dlZXBIZWxwZXIoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKKyAgICAgICAgdGVtcGxhdGU8
Ym9vbCBjYWxsRGVzdHJ1Y3RvcnM+IEZyZWVMaXN0IHN3ZWVwSGVscGVyKFN3ZWVwTW9kZSA9IFN3
ZWVwT25seSk7CiAKICAgICAgICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOwogCi0gICAg
ICAgIE1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90
IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSk7CisgICAgICAgIE1hcmtlZEJsb2NrKE1hcmtlZEFs
bG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICBzaXplX3QgYXRvbU51
bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAgIHRlbXBsYXRlPERlc3RydWN0b3JUeXBlPiB2b2lk
IGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOwotICAgICAgICB0ZW1wbGF0ZTxCbG9ja1N0YXRlLCBT
d2VlcE1vZGUsIERlc3RydWN0b3JUeXBlPiBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7Cisg
ICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7CisgICAgICAgIHRlbXBsYXRlPEJs
b2NrU3RhdGUsIFN3ZWVwTW9kZSwgYm9vbCBjYWxsRGVzdHJ1Y3RvcnM+IEZyZWVMaXN0IHNwZWNp
YWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CiAg
ICAgICAgIE1hcmtlZEJsb2NrKiBtX25leHQ7CkBAIC0yMTUsNyArMjE0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2Nr
Pj4gbV9uZXdseUFsbG9jYXRlZDsKIAogICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKLSAgICAg
ICAgRGVzdHJ1Y3RvclR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKKyAgICAgICAgYm9vbCBtX25lZWRz
RGVzdHJ1Y3Rpb247CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAg
ICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBAIC0z
MjUsOSArMzI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBtX2F0b21zUGVy
Q2VsbCAqIGF0b21TaXplOwogICAgIH0KIAotICAgIGlubGluZSBNYXJrZWRCbG9jazo6RGVzdHJ1
Y3RvclR5cGUgTWFya2VkQmxvY2s6OmRlc3RydWN0b3JUeXBlKCkKKyAgICBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6bmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9kZXN0cnVjdG9yVHlwZTsgCisgICAgICAgIHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247
CiAgICAgfQogCiAgICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggMzFmZTk0Mi4uNGYzMDg5
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcApAQCAtODMs
MjAgKzgzLDE3IEBAIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogICAgICwg
bV9pc0l0ZXJhdGluZyhmYWxzZSkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNp
c2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3Rl
cCkgewotICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2Vs
bFNpemUsIE1hcmtlZEJsb2NrOjpOb25lKTsKLSAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9j
YXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6
Ok5vcm1hbCk7Ci0gICAgICAgIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkltbW9y
dGFsU3RydWN0dXJlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAs
IHRoaXMsIGNlbGxTaXplLCBmYWxzZSk7CisgICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Io
Y2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIHRydWUpOwogICAgIH0KIAogICAg
IGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVj
aXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7Ci0gICAgICAgIGFsbG9jYXRv
ckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5v
bmUpOwotICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0
KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6Tm9ybWFsKTsKLSAgICAgICAgaW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAs
IHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6SW1tb3J0YWxTdHJ1Y3R1cmUpOworICAgICAg
ICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIGZhbHNl
KTsKKyAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0
aGlzLCBjZWxsU2l6ZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFs
bG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1hcmtlZEJsb2NrOjpOb25lKTsKLSAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1h
cmtlZEJsb2NrOjpOb3JtYWwpOwotICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3Bh
Y2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFwLCB0aGlzLCAwLCBNYXJrZWRCbG9jazo6SW1tb3J0
YWxTdHJ1Y3R1cmUpOworICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuaW5pdChoZWFw
LCB0aGlzLCAwLCBmYWxzZSk7CisgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
aW5pdChoZWFwLCB0aGlzLCAwLCB0cnVlKTsKIH0KIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFj
ZSgpCkBAIC0xMzQsMTkgKzEzMSwxNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRv
cnMoKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXpl
IDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFs
bG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKLSAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFs
bG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKLSAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOworICAgICAgICBkZXN0cnVj
dG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwogICAgIH0KIAogICAgIGZvciAoc2l6
ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2Zm
OyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7CiAgICAgICAgIGFsbG9jYXRvckZvcihjZWxs
U2l6ZSkucmVzZXQoKTsKLSAgICAgICAgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxs
U2l6ZSkucmVzZXQoKTsKLSAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOworICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5yZXNldCgpOwogICAgIH0KIAogICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxv
Y2F0b3IucmVzZXQoKTsKLSAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRv
ci5yZXNldCgpOwotICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VB
bGxvY2F0b3IucmVzZXQoKTsKKyAgICBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5y
ZXNldCgpOwogCiAjaWYgRU5BQkxFKEdHQykKICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLmNs
ZWFyKCk7CkBAIC0xODQsMTkgKzE3OCwxNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxs
b2NhdG9yKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBw
cmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lz
ZVN0ZXApIHsKICAgICAgICAgZnVuY3RvcihhbGxvY2F0b3JGb3IoY2VsbFNpemUpKTsKLSAgICAg
ICAgZnVuY3Rvcihub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7Ci0gICAg
ICAgIGZ1bmN0b3IoaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxT
aXplKSk7CisgICAgICAgIGZ1bmN0b3IoZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkp
OwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2Vs
bFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7CiAg
ICAgICAgIGZ1bmN0b3IoYWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7Ci0gICAgICAgIGZ1bmN0b3Io
bm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOwotICAgICAgICBmdW5jdG9y
KGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOworICAg
ICAgICBmdW5jdG9yKGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpKTsKICAgICB9CiAK
ICAgICBmdW5jdG9yKG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IpOwotICAgIGZ1bmN0b3Io
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IpOwotICAgIGZ1bmN0b3IobV9p
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7CisgICAgZnVu
Y3RvcihtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7CiB9CiAKIHN0cnVjdCBTdG9w
QWxsb2NhdGluZ0Z1bmN0b3IgewpAQCAtMjIzLDIxICsyMTQsMTggQEAgYm9vbCBNYXJrZWRTcGFj
ZTo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNp
emUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0g
cHJlY2lzZVN0ZXApIHsKICAgICAgICAgaWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdl
ZE91dChkZWFkbGluZSkgCi0gICAgICAgICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSAKLSAgICAgICAgICAgIHx8IGltbW9y
dGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChk
ZWFkbGluZSkpCisgICAgICAgICAgICB8fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPD0g
aW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKSB7CiAgICAgICAgIGlm
IChhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIAotICAgICAgICAg
ICAgfHwgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChk
ZWFkbGluZSkgCi0gICAgICAgICAgICB8fCBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICAgICAgfHwg
ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAobV9ub3JtYWxTcGFjZS5s
YXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKQotICAgICAgICB8fCBtX25vcm1hbERl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKQotICAgICAg
ICB8fCBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmlz
UGFnZWRPdXQoZGVhZGxpbmUpKQorICAgICAgICB8fCBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yOTIsMTQgKzI4MCwxMiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpj
bGVhck5ld2x5QWxsb2NhdGVkKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNp
c2VDb3VudDsgKytpKSB7CiAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKG1fbm9y
bWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RBY3RpdmVCbG9jaygpKTsKLSAg
ICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9ub3JtYWxEZXN0cnVjdG9yU3BhY2Uu
cHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RBY3RpdmVCbG9jaygpKTsKLSAgICAgICAgY2xl
YXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFj
ZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpOworICAgICAgICBj
bGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2Nh
dG9yc1tpXS50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgewogICAgICAgICBjbGVhck5ld2x5QWxs
b2NhdGVkSW5CbG9jayhtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxh
c3RBY3RpdmVCbG9jaygpKTsKLSAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFzdEFjdGl2
ZUJsb2NrKCkpOwotICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhtX2ltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0udGFrZUxhc3RB
Y3RpdmVCbG9jaygpKTsKKyAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9kZXN0
cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFzdEFjdGl2ZUJsb2NrKCkp
OwogICAgIH0KIAogICAgIC8vIFdlIGhhdmUgdG8gaXRlcmF0ZSBhbGwgb2YgdGhlIGJsb2NrcyBp
biB0aGUgbGFyZ2UgYWxsb2NhdG9ycyBiZWNhdXNlIHRoZXkgYXJlCkBAIC0zMDcsOCArMjkzLDcg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCiAgICAgLy8gd2hpY2gg
Y3JlYXRlcyB0aGUgbV9uZXdseUFsbG9jYXRlZCBiaXRtYXAuCiAgICAgQ2xlYXJOZXdseUFsbG9j
YXRlZCBmdW5jdG9yOwogICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwotICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9y
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rv
clNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBtX2Rlc3Ry
dWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgVmVyaWZ5TmV3bHlBbGxvY2F0ZWQgdmVyaWZ5RnVuY3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDlmMzJlZTMuLmU5Mzk5MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtMTAzLDE0ICsx
MDMsMTEgQEAgcHVibGljOgogCiAgICAgTWFya2VkQWxsb2NhdG9yJiBmaXJzdEFsbG9jYXRvcigp
OwogICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKHNpemVfdCk7Ci0gICAgTWFya2Vk
QWxsb2NhdG9yJiBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90
KTsKLSAgICBNYXJrZWRBbGxvY2F0b3ImIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6
ZV90KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCk7Ci0g
ICAgdm9pZCogYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCk7
CisgICAgTWFya2VkQWxsb2NhdG9yJiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7Cisg
ICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKIAotICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZv
ck9iamVjdHNXaXRoTm9ybWFsRGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3Rv
clNwYWNlOyB9Ci0gICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2U7IH0K
KyAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aERlc3RydWN0b3IoKSB7IHJldHVy
biBtX2Rlc3RydWN0b3JTcGFjZTsgfQogICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNX
aXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbm9ybWFsU3BhY2U7IH0KIAogICAgIHZvaWQg
cmVzZXRBbGxvY2F0b3JzKCk7CkBAIC0xNjgsOCArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoRnVuY3RvciYpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcigpOwog
Ci0gICAgU3Vic3BhY2UgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2U7Ci0gICAgU3Vic3BhY2UgbV9p
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZTsKKyAgICBTdWJzcGFjZSBtX2Rlc3RydWN0
b3JTcGFjZTsKICAgICBTdWJzcGFjZSBtX25vcm1hbFNwYWNlOwogCiAgICAgSGVhcCogbV9oZWFw
OwpAQCAtMjE5LDI0ICsyMTUsMTQgQEAgaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3Bh
Y2U6OmFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIG1fbm9ybWFsU3BhY2Uu
bGFyZ2VBbGxvY2F0b3I7CiB9CiAKLWlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNl
OjppbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQor
aW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JG
b3Ioc2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgaWYgKGJ5dGVzIDw9
IHByZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOwor
ICAgICAgICByZXR1cm4gbV9kZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVz
IC0gMSkgLyBwcmVjaXNlU3RlcF07CiAgICAgaWYgKGJ5dGVzIDw9IGltcHJlY2lzZUN1dG9mZikK
LSAgICAgICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVj
aXNlQWxsb2NhdG9yc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwotICAgIHJldHVybiBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yOwotfQotCi1p
bmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6bm9ybWFsRGVzdHJ1Y3RvckFsbG9j
YXRvckZvcihzaXplX3QgYnl0ZXMpCi17Ci0gICAgQVNTRVJUKGJ5dGVzKTsKLSAgICBpZiAoYnl0
ZXMgPD0gcHJlY2lzZUN1dG9mZikKLSAgICAgICAgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3RvclNw
YWNlLnByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOwotICAgIGlm
IChieXRlcyA8PSBpbXByZWNpc2VDdXRvZmYpCi0gICAgICAgIHJldHVybiBtX25vcm1hbERlc3Ry
dWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3Rl
cF07Ci0gICAgcmV0dXJuIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yOwor
ICAgICAgICByZXR1cm4gbV9kZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1soYnl0
ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOworICAgIHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZS5s
YXJnZUFsbG9jYXRvcjsKIH0KIAogaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdp
dGhvdXREZXN0cnVjdG9yKHNpemVfdCBieXRlcykKQEAgLTI0NCwxNCArMjMwLDkgQEAgaW5saW5l
IHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCBieXRl
cykKICAgICByZXR1cm4gYWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CiB9CiAK
LWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yKHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2Nh
dGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOwotfQot
Ci1pbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Io
c2l6ZV90IGJ5dGVzKQotewotICAgIHJldHVybiBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9y
KGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7CisgICAgcmV0dXJuIGRlc3RydWN0b3JBbGxvY2F0b3JG
b3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JF
YWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKQEAgLTI2MywxNiArMjQ0LDEwIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBN
YXJrZWRTcGFjZTo6Zm9yCiAgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3Vu
dDsgKytpKQotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9y
c1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bXByZWNpc2VDb3VudDsgKytpKQotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXBy
ZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX25vcm1hbERl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQotICAgICAgICBtX2lt
bW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVh
Y2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKLSAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsK
LSAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZv
ckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNl
QWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgbV9kZXN0cnVjdG9yU3Bh
Y2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogCiAgICAgcmV0dXJuIGZ1
bmN0b3IucmV0dXJuVmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCAwNDU2YTNlLi4yNTg0YWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIEluamVjdGVkU2NyaXB0SG9z
dDsKIGNsYXNzIEpTSW5qZWN0ZWRTY3JpcHRIb3N0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC03MCw4ICs3MSw2IEBA
IHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgaXRlcmF0b3JFbnRyaWVzKEpTQzo6RXhlY1N0YXRl
Kik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCmluZGV4IDNl
ZWI2OTAuLmFhNDk2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKQEAgLTMzLDYg
KzMzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNDgsOSAr
NDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxP
YmplY3Qodm0sIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IDdmMDc2MWIuLmI3N2MwNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFT
Y3JpcHRDYWxsRnJhbWUuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IGNsYXNzIEpTSmF2YVNjcmlwdENhbGxGcmFtZSA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNzgsOCArNzksNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IEZVTkNUSU9OX05BTUVfU0NP
UEUgPSA1OwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCmlu
ZGV4IDlhYTdlZTEuLjA4MTFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaApA
QCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApA
QCAtNDgsOSArNDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLXByb3RlY3RlZDoK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgog
ICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogSlNDOjpK
U05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDM3
ZjkyNDIuLmQ4YTZiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwogCiAgICAgc3RhdGljIE1hc3F1ZXJh
ZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsK
QEAgLTE5Nyw5ICsxOTgsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
SlNDOjpNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9Owog
CiBjbGFzcyBSb290IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKQEAgLTI1Nyw2ICsy
NTUsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc0ltcHVyZUdldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc3LDggKzI3Niw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZGVsZWdhdGUuc2V0KHZtLCB0aGlzLCBkZWxlZ2F0ZSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpIYXNJbXB1
cmVHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIG5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIEltcHVyZUdldHRlciogdGhpc09i
amVjdCA9IGpzQ2FzdDxJbXB1cmVHZXR0ZXIqPihvYmplY3QpOwpAQCAtMzA4LDYgKzMwNSw3IEBA
IHByaXZhdGU6CiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBS
dW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewpAQCAtMzkxLDggKzM4
OSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1fdmVjdG9yLmFwcGVuZChleGVjLT5hcmd1
bWVudChpKS50b0ludDMyKGV4ZWMpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQXJyYXk6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2
YXRlOgogICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICA6IEpTQXJyYXkoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCAwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCAwZWZlZGY4Li43N2VjMzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaApAQCAtMzEsOSArMzEsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBKU0NlbGwgewor
Y2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAgICAgCiBwcml2YXRlOgogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludChWTSYpOwpAQCAtNDQsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogY3JlYXRlKFZNJik7CiAKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApp
bmRleCBhNmFjNzZlLi4wNDBmMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEpTQXJyYXk7
CiBjbGFzcyBBcnJheUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVi
bGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIEFycmF5Q29u
c3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3Rv
dHlwZSogYXJyYXlQcm90b3R5cGUpCiAgICAgewpAQCAtNDksNyArNTAsNiBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQXJyYXlQcm90b3R5cGUq
KTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAog
cHJpdmF0ZToKICAgICBBcnJheUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmgKaW5kZXggNTQ3ZTMzMi4uMmIyMzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaApAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5SXRlcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0
aWMgQXJyYXlJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDgsOSArNDks
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCmlu
ZGV4IDM1ZWNlNGIuLjZkOGZjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJvb2xlYW5PYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgQm9vbGVhbk9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKQEAgLTQ1LDcgKzQ2LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
Qm9vbGVhbk9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgQm9vbGVhblBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCBjNTA2OTQ4Li4xMjE5ZDk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNDEsNiAr
NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENsb25lZEFyZ3VtZW50cyA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXM7CiAgICAgCiBwcml2YXRlOgogICAgIENsb25lZEFyZ3VtZW50cyhWTSYs
IFN0cnVjdHVyZSopOwpAQCAtNTQsOCArNTUsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0
dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJT
ZXR0ZXIuaAppbmRleCA0ZGU3ZGVkLi41NDUxOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaApAQCAtMzMsOSArMzMsMTAgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBK
U0NlbGwgeworY2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CiAKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEN1c3Rv
bUdldHRlcjsKICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIEN1c3Rv
bVNldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmgKaW5kZXggMThiYzM0MC4uMDU0ZjU3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgRGF0
ZVByb3RvdHlwZTsKIGNsYXNzIERhdGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBEYXRlQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBEYXRlUHJvdG90eXBl
KiBkYXRlUHJvdG90eXBlKQogICAgIHsKQEAgLTQ3LDcgKzQ4LDYgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIERhdGVQcm90b3R5cGUqKTsKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0
ZToKICAgICBEYXRlQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAppbmRleCA4MjBlNjBiLi42NzE0ZDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCkBA
IC0zMyw2ICszMyw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERhdGVJbnN0
YW5jZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAg
c3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAgLTUxLDcgKzUyLDYgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgRGF0ZUluc3RhbmNlOjpTdHJ1Y3R1cmVGbGFn
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXggMjE1N2NlNC4uMjljZDZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBAIC0zMCw2ICsz
MCw3IEBAIGNsYXNzIE9iamVjdFByb3RvdHlwZTsKIGNsYXNzIEVycm9yUHJvdG90eXBlIDogcHVi
bGljIEVycm9ySW5zdGFuY2UgewogcHVibGljOgogICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGlj
IEVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC00OSw4ICs1MCw2IEBAIHByb3Rl
Y3RlZDoKICAgICBFcnJvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgRXJy
b3JJbnN0YW5jZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmgKaW5kZXggZDEwZDkxZi4uMjM5ODZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNTYsNyArNTYs
NyBAQCBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
RXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOwogCiAKLWNsYXNzIFRlcm1pbmF0ZWRFeGVj
dXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHByaXZhdGU6
CiAgICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKFZNJiB2bSkKICAgICAgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCB2bS50ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuZ2V0KCkp
CkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBz
dGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUoVk0mIHZtKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA0ODEwNGU0Li5i
NTJiNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBA
IC04NCw5ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRy
dWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgQ29k
ZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwpAQCAtMTE3
LDcgKzExNyw2IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJl
SXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9u
dW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwogCkBAIC0yNzgsMTEgKzI3NywxMiBAQCBwcm90ZWN0
ZWQ6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrQW5kUHJlc2VydmVSZWdzOwogfTsKIAotY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSA6
IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CitjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBFeGVj
dXRhYmxlQmFzZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0
YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBQYXNzUmVmUHRyPEpJVENvZGU+
IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8SklUQ29kZT4g
Y29uc3RydWN0VGh1bmssIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBJbnRyaW5zaWMgaW50
cmluc2ljKQogICAgIHsKQEAgLTM0Nyw2ICszNDcsNyBAQCBwcml2YXRlOgogY2xhc3MgU2NyaXB0
RXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBFeGVjdXRhYmxlQmFzZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAog
ICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KTsKIApAQCAtNDQxLDEw
ICs0NDIsMTEgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldDsKIH07CiAKLWNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFi
bGUgeworY2xhc3MgRXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC00ODYsMTAg
KzQ4OCwxMSBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxv
Y2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrOwogfTsKIAotY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CitjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBQcm9ncmFt
RXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQogICAgIHsKQEAgLTUzOSwxMSArNTQyLDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBy
b2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKIH07CiAKLWNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKK2NsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOwogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKAogICAg
ICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggMmU5MzczYy4uNjdmMWIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApA
QCAtMzYsOCArMzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogY2xhc3MgR2VuZXJpY0Fy
Z3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7
CiAKIHByb3RlY3RlZDoKICAgICBHZW5lcmljQXJndW1lbnRzKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5o
CmluZGV4IDgwODBhODAuLmI5ODNmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEpTT2JqZWN0OwogLy8g
dGhhdCBpZiBhIHByb3BlcnR5IGhvbGRpbmcgYSBHZXR0ZXJTZXR0ZXIgcmVmZXJlbmNlIGlzIGNv
bnN0YW50LWluZmVycmVkIGFuZAogLy8gdGhhdCBjb25zdGFudCBpcyBvYnNlcnZlZCB0byBoYXZl
IGEgbm9uLW51bGwgc2V0dGVyIChvciBnZXR0ZXIpIHRoZW4gd2UgY2FuCiAvLyBjb25zdGFudCBm
b2xkIHRoYXQgc2V0dGVyIChvciBnZXR0ZXIpLgotY2xhc3MgR2V0dGVyU2V0dGVyIDogcHVibGlj
IEpTQ2VsbCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXIgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBmcmllbmQgY2xhc3MgSklUOwogCiBwcml2YXRlOgpAQCAtNTQsNiArNTQsNyBAQCBwcml2YXRl
OgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCAzN2I1ZmUxLi43OWY0Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgSW50
ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50
c0hhc0luc3RhbmNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtNDcsOCArNDgs
NiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0
cnVjdHVyZUZsYWdzOwotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbihW
TSYsIFN0cnVjdHVyZSopOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAppbmRleCA1NmE4MTZkLi42NmU2MWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVy
LmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgSlNBUElWYWx1ZVdyYXBwZXIgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICBmcmllbmQgSlNWYWx1ZSBqc0FQSVZhbHVlV3JhcHBlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlKTsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJndW1lbnRzSXRlcmF0b3IuaAppbmRleCBlZmNmOTFlLi4wNTY3YTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNBcmd1bWVudHNJdGVyYXRv
ciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAK
QEAgLTYyLDkgKzYzLDYgQEAgcHVibGljOgogICAgIEpTQXJndW1lbnRzSXRlcmF0b3IqIGNsb25l
KEV4ZWNTdGF0ZSopOwogCiBwcml2YXRlOgotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU0FyZ3VtZW50c0l0
ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICAgICAsIG1fbmV4dEluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKaW5kZXggMDFlNWEzYi4uYWFiZDU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBKU0FycmF5
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiAgICAgewpAQCAtMTQwLDcgKzE0MSw2IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IDMxOWI4MmUuLjc1MjllMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0FycmF5QnVmZmVyIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKICAgICAKIHByb3RlY3RlZDoKICAgICBKU0FycmF5QnVmZmVyKFZNJiwg
U3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4pOwpAQCAtNTYsOCArNTcsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIEFycmF5QnVmZmVyKiBtX2ltcGw7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmgKaW5kZXggM2ZlYjAzYi4uMDUxNDQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC05Myw2ICs5Myw3IEBAIGlubGlu
ZSBib29sIGhhc0FycmF5QnVmZmVyKFR5cGVkQXJyYXlNb2RlIG1vZGUpCiBjbGFzcyBKU0FycmF5
QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAgICAgCiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGZhc3RTaXplTGltaXQgPSAxMDAwOwogICAgIApAQCAtMTc0LDggKzE3NSw2
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7Ci0gICAgCiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5C
dXR0ZXJmbHkoKTsKIAogICAgIHZvaWQqIG1fdmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCAzNjQ0YjI5Li4xNzk1Yzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApA
QCAtMzYsNiArMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rp
b25Db25zdHJ1Y3QoRXhlY1N0YXRlKik7CiBjbGFzcyBKU0JvdW5kRnVuY3Rpb24gOiBwdWJsaWMg
SlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisgICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBKU0JvdW5kRnVuY3Rpb24q
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBK
U1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5nJik7
CiAgICAgCkBAIC01Niw4ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHBy
b3RlY3RlZDoKLSAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNIYXNJbnN0YW5jZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKaW5kZXggZWJiMTFlMy4uNWNkODJi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIEpTQ2FsbGVlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAog
cHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBjb25z
dCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEltcGxlbWVudHNIYXNJbnN0YW5jZTsKIAogICAgIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUpCiAgICAg
ewpAQCAtOTAsOCArOTEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgY29u
c3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlND
YWxsZWUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTQ2FsbGVlKFZN
JiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCmluZGV4IDQ4MzlmNjQuLmM0N2ZjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC03Myw3ICs3Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSAwOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFs
U3RydWN0dXJlID0gZmFsc2U7CiAKICAgICBlbnVtIENyZWF0aW5nRWFybHlDZWxsVGFnIHsgQ3Jl
YXRpbmdFYXJseUNlbGwgfTsKICAgICBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGRiYjEw
MDQuLmZmOTM1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKQEAgLTI0MCw3ICsyNDAsNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmNhblVzZUZh
c3RHZXRPd25Qcm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSkKIGlubGluZSBjb25z
dCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKIHsKICAgICBNYXJrZWRCbG9j
ayogYmxvY2sgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyk7Ci0gICAgaWYgKGJsb2NrLT5k
ZXN0cnVjdG9yVHlwZSgpID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCisgICAgaWYgKGJsb2NrLT5u
ZWVkc0Rlc3RydWN0aW9uKCkgJiYgIShpbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1t
b3J0YWwpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNEZXN0cnVjdGlibGVP
YmplY3QqPih0aGlzKS0+Y2xhc3NJbmZvKCk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZSgqYmxvY2st
PnZtKCkpLT5jbGFzc0luZm8oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAppbmRleCA5ZDJiYTJjLi5iYzcyNDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNEYXRhVmlld1By
b3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKIAogcHJvdGVjdGVkOgogICAgIEpTRGF0YVZpZXdQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKQEAgLTQ2LDggKzQ3LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5oCmluZGV4IDgxMWU0ZDEuLjRi
MmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJv
bm1lbnRSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Vudmly
b25tZW50UmVjb3JkLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgSlNFbnZpcm9ubWVudFJlY29y
ZCA6IHB1YmxpYyBKU1N5bWJvbFRhYmxlT2JqZWN0IHsKIAogcHVibGljOgogICAgIHR5cGVkZWYg
SlNTeW1ib2xUYWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogdmFyaWFibGVzKCkKICAgICB7CkBAIC04NSw4ICs4Niw2IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU0Vudmlyb25tZW50UmVj
b3JkKAogICAgICAgICBWTSYgdm0sCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDliZDNmZTIuLjc2
NGY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAg
LTU3LDYgKzU3LDcgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBKU0NhbGxlZSB7CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7CisgICAgY29uc3Qgc3RhdGljIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9u
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsK
IApAQCAtMTI4LDggKzEyOSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3Rv
ckZ1bmN0aW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0
cnVjdHVyZUZsYWdzOwotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggMTM0M2VlZS4uMzk5
NmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC04Nyw2ICs4Nyw4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5
QnVmZmVyVmlldyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0FycmF5QnVmZmVyVmlldyBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm87CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZWxlbWVudFNpemUg
PSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0y
MjgsOCArMjMwLDYgQEAgcHVibGljOgogICAgIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBzdHJ1
Y3QgVHlwZWRBcnJheUNsYXNzSW5mb3M7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZTU3ODM3
Li4zMmMyOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTI5Niw2ICsyOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIAogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsK
IAogICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSA9IG51bGxwdHIpCiAgICAgewpAQCAtNjA0LDkgKzYwNSw2IEBAIHB1YmxpYzoKICAg
ICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwg
RXZhbEV4ZWN1dGFibGUqLCBUaGlzVERaTW9kZSk7CiAKIHByb3RlY3RlZDoKLQotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LQogICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oY29uc3QgSWRlbnRpZmllciYgaSwgSlNWYWx1ZSB2LCB1bnNpZ25lZCBhKQogICAgICAg
ICAgICAgOiBpZGVudGlmaWVyKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5ZWMwNmM2Li40ZDllMzQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICAKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTRW52aXJvbm1lbnRSZWNvcmQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMgSlNM
ZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZSgKICAgICAgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
CkBAIC03OCw5ICs3OSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIHsgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhB
Y3RpdmF0aW9uT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyB9CiAKLXByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05hbWVTY29wZS5oCmluZGV4IGMyYjY5NTIuLmRiOGQwMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpTTmFtZVNjb3BlIDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNv
cmQgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNFbnZpcm9ubWVudFJlY29yZCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBlbnVtIFR5cGUgewogICAg
ICAgICBDYXRjaFNjb3BlLApAQCAtNjgsOCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHZh
cmlhYmxlQXQoU2NvcGVPZmZzZXQoMCkpLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgSlNOYW1lU2NvcGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogbmV4dCwgU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgbmV4dCwgc3ltYm9s
VGFibGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOb3RBbk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9i
amVjdC5oCmluZGV4IGU3YzBhMDQuLjBjMjZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAvLyBUaGlzIHVuaG9seSBjbGFzcyBpcyB1c2VkIHRvIGFsbG93IHVzIHRvIGF2b2lkIG11
bHRpcGxlIGV4Y2VwdGlvbiBjaGVja3MKIC8vIGluIGNlcnRhaW4gU3F1aXJyZWxGaXNoIGJ5dGVj
b2RlcyAtLSBlZmZlY3RpdmVseSBpdCBqdXN0IHNpbGVudGx5IGNvbnN1bWVzCiAvLyBhbnkgb3Bl
cmF0aW9ucyBwZXJmb3JtZWQgb24gdGhlIHJlc3VsdCBvZiBhIGZhaWxlZCB0b09iamVjdCBjYWxs
LgotY2xhc3MgSlNOb3RBbk9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNz
IEpTTm90QW5PYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEpTTm90QW5PYmplY3QoVk0mIHZtKQogICAgICAgICA6IEpTTm9uRmlu
YWxPYmplY3Qodm0sIHZtLm5vdEFuT2JqZWN0U3RydWN0dXJlLmdldCgpKQpAQCAtNDUsNiArNDUs
NyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMgSlNO
b3RBbk9iamVjdCogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC02MSw5ICs2Miw2IEBAIHB1Ymxp
YzoKICAgICBERUNMQVJFX0lORk87CiAKIHByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQog
ICAgIC8vIEpTVmFsdWUgbWV0aG9kcwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShj
b25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKaW5kZXggNGUxYTVhYy4u
ZWI2ZGFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBTdHJpbmdpZmllcjsKIGNsYXNzIEpTT05PYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAg
ICBzdGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewpAQCAtNTIsNyArNTMsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCiBwcml2YXRlOgogICAgIEpTT05PYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDUzZjdmNWIuLmE0Njkw
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTAzMSw2
ICsxMDMxLDcgQEAgY2xhc3MgSlNGaW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CkBAIC0x
MDc3LDggKzEwNzgsNiBAQCBwcml2YXRlOgogICAgICAgICA6IEpTT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIGJ1dHRlcmZseSkKICAgICB7CiAgICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAogaW5saW5l
IEpTRmluYWxPYmplY3QqIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCmluZGV4IDQ5OGJi
OGIuLmZjMGYwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlQ29uc3RydWN0b3IuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBKU1Byb21pc2VQ
cm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBKU1Byb21p
c2VDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJvdG90eXBl
Kik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKQEAgLTQ2LDcgKzQ3LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTUHJvbWlzZVByb3RvdHlwZSopOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRl
OgogICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuaAppbmRleCBmYmNm
MGM2Li5iOWRjMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZURlZmVycmVkLmgKQEAgLTMzLDkgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBKU1Byb21pc2VEZWZlcnJlZCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNQcm9t
aXNlRGVmZXJyZWQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU1Byb21pc2VEZWZlcnJlZCogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTUHJvbWlz
ZURlZmVycmVkKiBjcmVhdGUoVk0mLCBKU09iamVjdCogcHJvbWlzZSwgSlNWYWx1ZSByZXNvbHZl
LCBKU1ZhbHVlIHJlamVjdCk7CkBAIC00NSw4ICs0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7Ci0KICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwogCiAgICAgSlNPYmplY3QqIHByb21pc2UoKSBjb25zdCB7IHJldHVybiBt
X3Byb21pc2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUHJvdG90eXBlLmgKaW5kZXggODkzZmM0YS4uY2Q3Y2VmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAg
ICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpAQCAtNDMsNyArNDQsNiBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJl
Kik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRl
OgogICAgIEpTUHJvbWlzZVByb3RvdHlwZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCmluZGV4
IGI0Mjc5NGEuLjA5YmUyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlUmVhY3Rpb24uaApAQCAtMzYsOSArMzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBKU1Byb21pc2VEZWZlcnJlZDsKIGNsYXNzIE1pY3JvdGFzazsKIAotY2xhc3MgSlNQ
cm9taXNlUmVhY3Rpb24gOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTUHJvbWlzZVJlYWN0aW9u
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgSlNQcm9taXNl
UmVhY3Rpb24qIGNyZWF0ZShWTSYsIEpTUHJvbWlzZURlZmVycmVkKiwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC00Niw4ICs0Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7
Ci0KICAgICBERUNMQVJFX0lORk87CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCogZGVmZXJyZWQo
KSBjb25zdCB7IHJldHVybiBtX2RlZmVycmVkLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCmluZGV4
IDc3ODMwOGEuLjNkOGM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCkBAIC0zNSwxNSArMzUsMTUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIElkZW50aWZpZXI7CiAKLWNsYXNzIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mKTsKICAgICBzdGF0aWMgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCwgdWludDMy
X3QsIFByb3BlcnR5TmFtZUFycmF5Jik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVj
dHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtOTIsOCArOTIsNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQogICAgIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcihWTSYsIFN0cnVjdHVyZUlELCB1aW50MzJfdCwgUmVmQ291bnRlZElk
ZW50aWZpZXJTZXQqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgdWludDMyX3QsIHVp
bnQzMl90LCBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggY2RhNjIxYi4uMmJkY2QxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpTUHJveHkgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvOwogCiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU09iamVjdCogdGFyZ2V0KQogICAgIHsKQEAgLTY4LDggKzY5LDYgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIHRhcmdldCk7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0VGFyZ2V0KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCBhYThiZGViLi5kZjU4MWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBHZXRP
clB1dCB7IEdldCwgUHV0IH07CiBjbGFzcyBKU1Njb3BlIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mTmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggMzRhZjUyZC4uYTIyZTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICBmcmllbmQgc3Ry
dWN0IFRodW5rSGVscGVyczsKIAogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAog
ICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiBwcml2YXRlOgpAQCAtMTgyLDggKzE4Miw2IEBAIHB1Ymxp
YzoKICAgICB9OwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7Ci0KICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKIAogICAgIGJvb2wgaXNSb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQpAQCAtMjE5LDcgKzIxNyw3IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBK
U1N0cmluZyosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIH07CiAKLWNsYXNz
IEpTUm9wZVN0cmluZyA6IHB1YmxpYyBKU1N0cmluZyB7CitjbGFzcyBKU1JvcGVTdHJpbmcgZmlu
YWwgOiBwdWJsaWMgSlNTdHJpbmcgewogICAgIGZyaWVuZCBjbGFzcyBKU1N0cmluZzsKIAogICAg
IGZyaWVuZCBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihWTSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IDI2
ODUzNDYuLmQ5MjUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSlNTeW1ib2xU
YWJsZU9iamVjdDsKIGNsYXNzIEpTU3ltYm9sVGFibGVPYmplY3QgOiBwdWJsaWMgSlNTY29wZSB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU1Njb3BlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJc0Vudmlyb25t
ZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKICAgICAKICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9
CiAgICAgCkBAIC01MCw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJs
ZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50UmVjb3JkIHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotICAgIAogICAg
IEpTU3ltYm9sVGFibGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29w
ZSogc2NvcGUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKaW5kZXggZjY5NTk2OC4u
ZWNmNmMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaApA
QCAtNDMsMTIgKzQzLDEyIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlID0gMSA8PCAzOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIElzRW52aXJvbm1l
bnRSZWNvcmQgPSAxIDw8IDQ7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90ID0gMSA8PCA1Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gPSAxIDw8IDY7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1vcnRhbCA9IDEgPDwgNzsKIAog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgPSAxIDw8IDg7
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCA5
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEg
PDwgMTA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNo
cG9pbnRzID0gMSA8PCAxMTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsID0gMSA8PCAxMjsKIAogY2xhc3MgVHlwZUluZm8gewogcHVibGljOgpAQCAtOTEsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyk7IH0KICAgICBi
b29sIGhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25G
bGFnczIoSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KTsgfQogICAgIGJvb2wgbmV3SW1wdXJl
UHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihO
ZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMpOyB9Ci0gICAgYm9vbCBzdHJ1Y3R1cmVJ
c0ltbW9ydGFsKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihTdHJ1Y3R1cmVJc0ltbW9y
dGFsKTsgfQorICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlz
U2V0T25GbGFnczEoU3RydWN0dXJlSXNJbW1vcnRhbCk7IH0KIAogICAgIHN0YXRpYyBwdHJkaWZm
X3QgZmxhZ3NPZmZzZXQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhPYmplY3QuaAppbmRleCA4NGQxZjRmLi5mYjdkOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBAIHByaXZhdGU6CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7CkBAIC00OCw3ICs0OSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKaW5k
ZXggNjMwZjVlNS4uNWI5ZDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNzIE51bWJlclBy
b3RvdHlwZTsKIGNsYXNzIE51bWJlckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgc3RhdGljIE51bWJlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgTnVtYmVyUHJvdG90eXBlKiBudW1iZXJQcm90b3R5cGUpCiAgICAgewpAQCAt
NDcsNyArNDgsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgTnVtYmVyUHJvdG90eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6
CiAgICAgTnVtYmVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKaW5kZXggNTk3MmY3Yi4uNDVh
Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBOdW1iZXJQcm90
b3R5cGUgOiBwdWJsaWMgTnVtYmVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIE51bWJl
ck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAg
ICAgc3RhdGljIE51bWJlclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDUsNyArNDYs
NiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOdW1iZXJPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCiBwcml2YXRlOgogICAgIE51bWJlclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKaW5kZXggYmIwNjdiMS4uZmJiZjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIE9i
amVjdFByb3RvdHlwZTsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIE9iamVj
dENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUp
CiAgICAgewpAQCAtNTEsNyArNTIsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBPYmplY3RQcm90b3R5cGUqKTsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJp
dmF0ZToKICAgICBPYmplY3RDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5k
ZXggNzU0ZGEyZC4uN2U4ZTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIGlubGluZSB1
bnNpZ25lZCBuZXh0UG93ZXJPZjIodW5zaWduZWQgdikKICAgICByZXR1cm4gdjsKIH0KIAotY2xh
c3MgUHJvcGVydHlUYWJsZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgUHJvcGVydHlUYWJsZSBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRp
b24gZm9yICdpdGVyYXRvcicgYW5kICdjb25zdF9pdGVyYXRvcicsCiAgICAgLy8gdXNlZCBmb3Ig
aXRlcmF0aW5nIG92ZXIgdGhlIHRhYmxlIGluIGluc2VydGlvbiBvcmRlci4KQEAgLTEyMCw4ICsx
MjAsMTAgQEAgY2xhc3MgUHJvcGVydHlUYWJsZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIH07CiAK
IHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKKwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKQEAgLTE5MCw5ICsxOTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCk7CiAjZW5kaWYKIAotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0KIHByaXZhdGU6CiAgICAgUHJvcGVy
dHlUYWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgUHJvcGVydHlUYWJs
ZShWTSYsIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmgKaW5kZXggMmUxNmYyOS4uNjcwNTA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBjbGFzcyBWTTsKIAogSlNfRVhQT1JU
X1BSSVZBVEUgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgU3RyaW5nJik7CiAKLWNsYXNz
IFJlZ0V4cCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVj
dHVyZUlzSW1tb3J0YWw7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnRXhwKiBj
cmVhdGUoVk0mLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAogICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAm
IEZsYWdHbG9iYWw7IH0KQEAgLTg1LDggKzg1LDYgQEAgcHVibGljOgogICAgIFJlZ0V4cEtleSBr
ZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3RyaW5nKTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKLQogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5oCmluZGV4IGE4MzIwMDYuLmNhYmVlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBS
ZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgIHsKQEAgLTY4LDcgKzY5LDYgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZ0V4
cFByb3RvdHlwZSopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBw
cml2YXRlOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKiwgUmVnRXhwUHJv
dG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CmluZGV4IDdjNGI3NTAuLmExZjU3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBS
ZWdFeHBPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAq
IHJlZ0V4cCkKICAgICB7CkBAIC03Nyw4ICs3OCw2IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBSZWdFeHBPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0K
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAppbmRleCBmOThmZDA2Li5jYjZlZTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaApAQCAtMjks
NiArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZSA6IHB1Ymxp
YyBSZWdFeHBPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgUmVnRXhwT2JqZWN0IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgUmVn
RXhwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhw
KiByZWdFeHApCiAgICAgewpAQCAtNDYsNyArNDcsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBSZWdFeHBQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBSZWdFeHBPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaAppbmRleCA4ZWZkMjNkLi5iNmQ3ZGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHNU
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50
c1RhYmxlLmgKQEAgLTM4LDkgKzM4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogLy8gYW5kIGFsaWFz
ZXMgb25lIG9mIHRoZXNlIGFuZCB0aGVuIGRlY2lkZXMgdG8gbW9kaWZ5IGl0OyBpbiB0aGF0IGNh
c2Ugd2UgZG8gY29weS1vbi13cml0ZS4gVGhpcwogLy8gbWFrZXMgc2Vuc2UgYmVjYXVzZSBzdWNo
IG1vZGlmaWNhdGlvbnMgYXJlIHNvIHVuY29tbW9uLiBZb3UnZCBoYXZlIHRvIGRvIHNvbWV0aGlu
ZyBjcmF6eSBsaWtlCiAvLyAiZGVsZXRlIGFyZ3VtZW50c1tpXSIgb3Igc29tZSB2YXJpYW50IG9m
IGRlZmluZU93blByb3BlcnR5LgotY2xhc3MgU2NvcGVkQXJndW1lbnRzVGFibGUgOiBwdWJsaWMg
SlNDZWxsIHsKK2NsYXNzIFNjb3BlZEFyZ3VtZW50c1RhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CiAgICAgCiBwcml2YXRlOgogICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKFZN
Jik7CkBAIC01MSw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU2NvcGVkQXJndW1lbnRz
VGFibGUqIGNyZWF0ZShWTSYsIHVpbnQzMl90IGxlbmd0aCk7CiAgICAgCiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogY2xvbmUoVk0mKTsKQEAgLTc5LDgg
Kzc5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBcmd1bWVudHMo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVkQXJndW1lbnRzVGFibGUsIG1fYXJndW1l
bnRzKTsgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAg
IFNjb3BlT2Zmc2V0JiBhdCh1aW50MzJfdCBpKQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAppbmRleCAwODkwNjcyLi5m
ZjM2Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VB
cnJheVZhbHVlTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5oCkBAIC01MSw5ICs1MSwxMCBAQCBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRy
eSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXM7CiB9OwogCi1jbGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIDogcHVibGljIEpTQ2VsbCB7Citj
bGFzcyBTcGFyc2VBcnJheVZhbHVlTWFwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CiAgICAgCiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3BhcnNlQXJy
YXlFbnRyeSwgV1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1aW50NjRfdD4+IE1hcDsKQEAgLTY5LDggKzcwLDYgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Ci0KIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogICAgIApAQCAt
ODEsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNwYXJzZUFycmF5VmFsdWVNYXAqIGNy
ZWF0ZShWTSYpOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1
ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggODE2YTFhNC4uMTMxNTdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC0z
Myw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgU3RyaWN0RXZhbEFjdGl2YXRpb24g
OiBwdWJsaWMgSlNTY29wZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU1Njb3BlIEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBJc0Vudmlyb25tZW50UmVjb3JkOwogCiAgICAgc3RhdGljIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUpCiAg
ICAgewpAQCAtNTEsOSArNTIsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
SXNFbnZpcm9ubWVudFJlY29yZCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgog
ICAgIFN0cmljdEV2YWxBY3RpdmF0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAppbmRl
eCAwMDg2YTZiLi4zNTc1MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgU3RyaW5nUHJv
dG90eXBlOwogY2xhc3MgU3RyaW5nQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgU3RyaW5nQ29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJpbmdQcm90b3R5
cGUqIHN0cmluZ1Byb3RvdHlwZSkKICAgICB7CkBAIC00NSw5ICs0Niw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0K
IAotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVy
ZUZsYWdzOwotCiBwcml2YXRlOgogICAgIFN0cmluZ0NvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cmluZ1Byb3RvdHlwZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmgKaW5kZXggY2JiZDk2MC4uMzkzYWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAK
ICAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAg
LTQ5LDkgKzUwLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5o
CmluZGV4IDBjZWJmZGUuLjkwZTZlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU1dyYXBwZXJPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGlj
IFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewpAQCAtNjcsNyArNjgsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNTdHJpbmcqKTsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTV3JhcHBlck9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nT2JqZWN0KFZNJiwgU3Ry
dWN0dXJlKik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5oCmluZGV4IDk2NTc3OTYuLmJkNGYwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCkBAIC0zMyw2ICszMyw3IEBAIHBy
aXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIFN0cmluZ09iamVjdCBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgc3RhdGljIFN0cmluZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKIApAQCAtNDUsNyArNDYsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cmluZ09i
amVjdDo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDE3MzhjYTYuLjA0NmIw
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAt
MjAyLDcgKzIwMiw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKICAgICBzZXRTdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKGZhbHNlKTsKICAgICBzZXRIYXNSYXJlRGF0YShmYWxzZSk7CiAg
Ci0gICAgVHlwZUluZm8gdHlwZUluZm8gPSBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlSXNJ
bW1vcnRhbCk7CisgICAgVHlwZUluZm8gdHlwZUluZm8gPSBUeXBlSW5mbyhDZWxsVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpOwogICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYih2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpLCAwLCB0eXBlSW5mbyk7CiAgICAgbV9vdXRP
ZkxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA3YjQ4ZDM0Li4xYjQ0ZTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtOTIsMTEg
KzkyLDEyIEBAIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICB9CiB9OwogCi1jbGFzcyBT
dHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU7CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNz
SW5mbyosIEluZGV4aW5nVHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9
IDApOwogCkBAIC0xNTMsNyArMTU0LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoVk0mLCBKU09iamVjdCopOwog
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRo
IGNhdXRpb24uICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oCmluZGV4IDQ5ZjNlNDYuLjBmYmQxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtNDAsMTEgKzQwLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgU3RydWN0dXJlOwog
Ci1jbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgU3RydWN0dXJl
Q2hhaW4gZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogCiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogaGVhZCkKICAgICB7IApAQCAtNjMsMTIgKzY0LDkgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
OwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKLQog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCAyM2YwNWY5Li4yYjExYWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmgKQEAgLTM2LDEyICszNiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjsKIGNsYXNzIFN0cnVjdHVyZTsKIAotY2xhc3MgU3RydWN0dXJlUmFy
ZURhdGEgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDog
cHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICBzdGF0aWMgU3RydWN0dXJlUmFyZURhdGEq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1
Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC02NSw4
ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3RydWN0dXJlUmFyZURhdGEoVk0mLCBTdHJ1
Y3R1cmUqKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Q2VsbDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3By
ZXZpb3VzOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9vYmplY3RUb1N0cmluZ1ZhbHVl
OwogICAgIFdyaXRlQmFycmllcjxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+IG1fY2FjaGVkUHJv
cGVydHlOYW1lRW51bWVyYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgK
aW5kZXggMjdiMDFmYy4uMTliNmY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sLmgKQEAgLTM0LDE0ICszNCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgU3lt
Ym9sIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0
cnVlOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
ODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7Ci0KICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgU3ltYm9sKFZN
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5o
CmluZGV4IDg1YTkzZDMuLjhiMjIxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFByb3RvdHlwZS5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgU3ltYm9sUHJvdG90eXBlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIHsKQEAgLTU1LDggKzU2LDYgQEAgcHJvdGVjdGVkOgogICAgIFN5bWJvbFByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmgKaW5kZXggYTZhMjFlNy4uMzdjYmIyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtNDA0LDkgKzQwNCwxMCBAQCBzdHJ1
Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFN5bWJvbFRhYmxlRW50
cnk+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIH07
CiAKLWNsYXNzIFN5bWJvbFRhYmxlIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTeW1ib2xUYWJs
ZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgU3ltYm9sVGFibGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+PiwgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFp
dHM+IE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBHbG9iYWxW
YXJpYWJsZUlEPiBVbmlxdWVJRE1hcDsKQEAgLTQyOSw3ICs0MzAsNiBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwot
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCkBAIC02NDIsOSArNjQyLDYgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIAotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LQogcHJpdmF0ZToKICAgICBjbGFzcyBXYXRjaHBvaW50Q2xlYW51cCA6IHB1YmxpYyBVbmNvbmRp
dGlvbmFsRmluYWxpemVyIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcERhdGEuaAppbmRleCBkMWM5MWYyLi43ZTA4MmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKQEAgLTM0LDkgKzM0LDEwIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWFrTWFwRGF0YSA6IHB1YmxpYyBKU0NlbGwgewor
Y2xhc3MgV2Vha01hcERhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IHN0YXRpYyBXZWFrTWFwRGF0YSogY3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC01MSw3ICs1Miw2
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9
IHRydWU7CiAKICAgICB2b2lkIHNldChWTSYsIEpTT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBnZXQoSlNPYmplY3QqKTsKQEAgLTYxLDggKzYxLDYgQEAgcHVibGljOgogCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPEpTT2JqZWN0KiwgV3JpdGVCYXJyaWVyPFVua25vd24+PiBNYXBUeXBlOwogICAg
IE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVn
aW4oKTsgfQogICAgIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJmZjk1Yi4uOTAzZGUzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTExICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBEb24ndCBzZWdyZWdhdGUgaGVhcCBvYmplY3RzIGJhc2VkIG9u
IFN0cnVjdHVyZSBpbW1vcnRhbGl0eS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0
MzYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAo
R2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbik6CisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuaDoKKwogMjAxNS0wNC0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFsbG93IExhdW5jaFNlcnZpY2VzIHRvIGhhbmRsZSBVUkxzIG9uIGxpbmsgbmF2aWdhdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggZWRiMmI3
OS4uMWUwYzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
QEAgLTg0LDE1ICs4NCwxNiBAQCBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYQogCiAvLyBCYXNlIGNs
YXNzIGZvciBhbGwgY29uc3RydWN0b3Igb2JqZWN0cyBpbiB0aGUgSlNDIGJpbmRpbmdzLgogY2xh
c3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKLSAgICB0eXBl
ZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogcHVibGljOgorICAgIHR5cGVkZWYgSlNET01XcmFwcGVy
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZTsKKwogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU0RPTVdyYXBw
ZXI6OlN0cnVjdHVyZUZsYWdzOwogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAg
IDogSlNET01XcmFwcGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
MDczMTk0OS4uNjI1YzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTExMDMsNiArMTEwMywxNiBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG4iKTsKICAgICB9
CiAKKyAgICAjIHN0cnVjdHVyZSBmbGFncworICAgIGlmICglc3RydWN0dXJlRmxhZ3MpIHsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
ICIpOworICAgICAgICBmb3JlYWNoIG15ICRzdHJ1Y3R1cmVGbGFnIChzb3J0IChrZXlzICVzdHJ1
Y3R1cmVGbGFncykpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRzdHJ1Y3R1
cmVGbGFnIC4gIiB8ICIpOworICAgICAgICB9CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJCYXNlOjpTdHJ1Y3R1cmVGbGFncztcbiIpOworICAgIH0KKwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsKIAogICAgICMgQ29uc3RydWN0b3IKQEAgLTExMTksMTUg
KzExMjksNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB9XG5cbiIpOwogICAgIH0KIAotICAgICMgc3RydWN0dXJlIGZsYWdzCi0gICAgaWYg
KCVzdHJ1Y3R1cmVGbGFncykgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9ICIpOwotICAgICAgICBmb3JlYWNo
IG15ICRzdHJ1Y3R1cmVGbGFnIChzb3J0IChrZXlzICVzdHJ1Y3R1cmVGbGFncykpIHsKLSAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRzdHJ1Y3R1cmVGbGFnIC4gIiB8ICIpOwotICAg
ICAgICB9Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJCYXNlOjpTdHJ1Y3R1cmVGbGFn
cztcbiIpOwotICAgIH0KLQogICAgICMgSW5kZXggc2V0dGVyCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKQEAgLTQzMDMsNyArNDMwNCw3
IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAKICAgICAjIHN0cnVjdHVyZSBm
bGFncwogICAgIGlmICglc3RydWN0dXJlRmxhZ3MpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAicHJvdGVjdGVkOlxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInB1Ymxp
YzpcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJHN0cnVjdHVy
ZUZsYWcgKHNvcnQgKGtleXMgJXN0cnVjdHVyZUZsYWdzKSkgewogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkc3RydWN0dXJlRmxhZyAuICIgfCAiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggZTZhOWJjOS4uZjU1MTE2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHJp
dmF0ZToKIGNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIE9i
amNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiAgICAgewpAQCAtMTIzLDcgKzEyNCw2IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBiNmQxZjY4
Li4wZDNmMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNB
cnJheSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsK
IAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEJpbmRp
bmdzOjpBcnJheSogYXJyYXkpCiAgICAgewpAQCAtODAsOCArODEsNiBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEJpbmRpbmdzOjpBcnJheSopOwog
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0FycmF5
OjpTdHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBSdW50aW1lQXJyYXkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAppbmRleCBlN2RjN2Y0Li44YWQyNzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVNZXRob2QgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBz
dGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQmluZGluZ3M6Ok1ldGhvZCogbWV0aG9kKQogICAgIHsKQEAgLTYwLDcgKzYxLDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFJ1bnRpbWVNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBCaW5kaW5nczo6TWV0aG9kKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVj
dHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggMmMyYWU1Zi4uZDBhMmYyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEJp
bmRpbmdzIHsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGluc3Rh
bmNlKQogICAgIHsKQEAgLTc1LDcgKzc2LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJ1
bnRpbWVPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEluc3RhbmNlPik7CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzODgwZDUw
Li5mMDE4M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDQtMTEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHNlZ3JlZ2F0ZSBo
ZWFwIG9iamVjdHMgYmFzZWQgb24gU3RydWN0dXJlIGltbW9ydGFsaXR5LgorICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTQzNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaDoKKwogMjAxNS0wNC0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFsbG93IExhdW5jaFNlcnZpY2VzIHRvIGhhbmRsZSBVUkxzIG9uIGxpbmsgbmF2aWdhdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCmluZGV4IDc5ZGFmNWIuLjc1N2ZmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApA
QCAtNDQsNiArNDQsNyBAQCBjbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXA7CiBjbGFzcyBKU05QT2Jq
ZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7
CiAKICAgICBzdGF0aWMgSlNOUE9iamVjdCogY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIE5QT2JqZWN0KiBucE9i
amVjdCkKICAgICB7CkBAIC03NCw4ICs3NSw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICBKU05QT2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QUnVu
dGltZU9iamVjdE1hcCosIE5QT2JqZWN0Kik7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAg
ICAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsK
</data>
<flag name="review"
          id="275406"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250658</attachid>
            <date>2015-04-13 10:50:50 -0700</date>
            <delta_ts>2015-04-13 10:50:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-143638.diff</filename>
            <type>text/plain</type>
            <size>122948</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CmluZGV4IGQyNzkyZjguLmYxNzg5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlOwogCiAgICAgc3RhdGljIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpT
T2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykgCiAgICAgewpAQCAtNTYs
NyArNTcsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RDYWxsQXND
b25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDbGFzc1JlZik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgQVBJQ2FsbGJhY2tGdW5jdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggZmMxMTlkYS4u
YzA1NmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVm
IFBhcmVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFBhcmVudDo6U3RydWN0dXJlRmxhZ3MgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgfkpT
Q2FsbGJhY2tPYmplY3QoKTsKIApAQCAtMTcwLDkgKzE3MSw2IEBAIHB1YmxpYzoKIAogICAgIHVz
aW5nIFBhcmVudDo6bWV0aG9kVGFibGU7CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgUGFyZW50OjpT
dHJ1Y3R1cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShj
b25zdCBKU09iamVjdCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjYTU0ZDIzLi4w
Y2I2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjMgQEAKKzIwMTUt
MDQtMTMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0
IHNlZ3JlZ2F0ZSBoZWFwIG9iamVjdHMgYmFzZWQgb24gU3RydWN0dXJlIGltbW9ydGFsaXR5Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQzNjM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFB1dCBhbGwgb2JqZWN0cyB0aGF0IG5lZWQgYSBk
ZXN0cnVjdG9yIGNhbGwgaW50byB0aGUgc2FtZSBNYXJrZWRCbG9jay4KKyAgICAgICAgVGhpcyBy
ZWR1Y2VzIG1lbW9yeSBjb25zdW1wdGlvbiBpbiBtYW55IHNpdHVhdGlvbnMsIHdoaWxlIGltcHJv
dmluZyBsb2NhbGl0eSwKKyAgICAgICAgc2luY2UgbXVjaCBtb3JlIG9mIHRoZSBNYXJrZWRCbG9j
ayBzcGFjZSBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIEluc3RlYWQgb2YgYnJhbmNoaW5nIG9u
IHRoZSBNYXJrZWRCbG9jayB0eXBlLCB3ZSBub3cgY2hlY2sgYSBiaXQgaW4gdGhlCisgICAgICAg
IEpTQ2VsbCdzIGlubGluZSB0eXBlIGZsYWdzIChTdHJ1Y3R1cmVJc0ltbW9ydGFsKSB0byBzZWUg
d2hldGhlciBpdCdzIHNhZmUKKyAgICAgICAgdG8gYWNjZXNzIHRoZSBjZWxsJ3MgU3RydWN0dXJl
IGR1cmluZyBkZXN0cnVjdGlvbiBvciBub3QuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgYmVuY2ht
YXJrcyBsb29rIG5ldXRyYWwuCisKKyAgICAgICAgT24gdGhlIGFtYXpvbi5jb20gbGFuZGluZyBw
YWdlLCB0aGlzIHNhdmVzIHVzIDUwIE1hcmtlZEJsb2NrcyAoMzIwMGtCKSBhbG9uZworICAgICAg
ICB3aXRoIGEgYnVuY2ggb2YgV2Vha0Jsb2NrcyB0aGF0IHdlcmUgaGFuZ2luZyBvZmYgb2YgdGhl
bS4gVGhhdCdzIG9uIHRoZSBoaWdoZXIKKyAgICAgICAgZW5kIG9mIHNhdmluZ3Mgd2UgY2FuIGdl
dCBmcm9tIHRoaXMsIGJ1dCBzdGlsbCBhIHZlcnkgcmVhbCBpbXByb3ZlbWVudC4KKworICAgICAg
ICBNb3N0IG9mIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgdGhlICJoYXNJbW1vcnRhbFN0cnVjdHVy
ZSIgY29uc3RhbnQgZnJvbSBKU0NlbGwKKyAgICAgICAgZGVyaXZlZCBjbGFzc2VzIGFuZCBwYXNz
aW5nIHRoYXQgcmVzcG9uc2liaWxpdHkgdG8gdGhlIFN0cnVjdHVyZUlzSW1tb3J0YWwgZmxhZy4K
KyAgICAgICAgU3RydWN0dXJlRmxhZ3MgaXMgbWFkZSBwdWJsaWMgc28gdGhhdCBpdCdzIGFjY2Vz
c2libGUgZnJvbSBub24tbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICAgICAgSSBtYWRlIHN1cmUgdG8g
ZGVjbGFyZSBpdCBldmVyeXdoZXJlIGFuZCBtYWtlIGNsYXNzZXMgZmluYWwgdG8gdHJ5IHRvIG1h
a2UgaXQKKyAgICAgICAgZXhwbGljaXQgd2hhdCBlYWNoIGNsYXNzIGlzIGRvaW5nIHRvIGl0cyBp
bmhlcml0ZWQgZmxhZ3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmg6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVNYWtlUm9wZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6
OnN1YnNwYWNlRm9yT2JqZWN0RGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRvckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Vic3Bh
Y2VGb3JPYmplY3ROb3JtYWxEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVh
cDo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Ip
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXBJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZU9iamVjdE9mVHlwZSk6CisgICAgICAgIChKU0M6
OkhlYXA6OnN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxs
b2NhdG9yRm9yT2JqZWN0T2ZUeXBlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVXaXRo
Tm9ybWFsRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRl
V2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogaGVh
cC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFs
bG9jYXRlQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6
Ok1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjppbml0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkZXN0cnVj
dG9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6TWFya2VkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
Ojpzd2VlcEhlbHBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpkZXN0cnVjdG9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZSk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
Ojppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxv
Y2F0ZWQpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmRlc3RydWN0b3JBbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3Vic3Bh
Y2VGb3JPYmplY3RzV2l0aE5vcm1hbERlc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvckFsbG9jYXRvckZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
Ojpub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3Rvcik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhOb3JtYWxEZXN0
cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9KU0NhbGxlZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJ
bmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0OjpKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb21pc2VSZWFjdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6Cisg
ICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAg
ICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmg6CisgICAgICAg
ICogcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
Lmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2wuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKIDIwMTUtMDQtMTAgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgRVM2OiBJdGVyYXRvciB0b1N0cmluZyBu
YW1lcyBzaG91bGQgYmUgY29uc2lzdGVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA3OTcyMzI3Li40YzAxYjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aApAQCAtOTcsMTIgKzk3LDE1IEBAIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewogICAgIFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uLAogfTsKIAotY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwogICAgIGZyaWVuZCBj
bGFzcyBWTTsKKwogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOworCiAgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5v
ZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBSZWZQdHI8U291
cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKQEAgLTE2Miw3
ICsxNjUsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAogICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lt
bW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWls
dGluRnVuY3Rpb247IH0KQEAgLTIxNCw4ICsyMTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0
dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwogfTsKIApAQCAtMjY3LDggKzI2Nyw5IEBAIHN0cnVjdCBVbmxpbmtlZEluc3Ry
dWN0aW9uIHsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwogICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFw
cGx5RnVuY3Rpb24gfTsKIApAQCAtNjA0LDggKzYwNSw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHNpemVfdD4gbV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsKIAogcHJvdGVj
dGVkOgotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0
dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpAQCAtNjI1LDcg
KzYyNCw3IEBAIHByb3RlY3RlZDoKICAgICBERUNMQVJFX0lORk87CiB9OwogCi1jbGFzcyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewor
Y2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xv
YmFsQ29kZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKICAg
ICBzdGF0aWMgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKQEAgLTYzNyw2ICs2MzYsOCBAQCBwcml2YXRlOgogCiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKICAgICB2b2lkIGFkZEZ1bmN0aW9uRGVjbGFyYXRpb24oVk0mIHZtLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
KQpAQCAtNjc1LDcgKzY3Niw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiB9OwogCi1j
bGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxv
Y2sgeworY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsK
IApAQCAtNjg4LDYgKzY4OSw4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIFVu
bGlua2VkR2xvYmFsQ29kZUJsb2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OworCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIGNvbnN0IElkZW50
aWZpZXImIHZhcmlhYmxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBtX3ZhcmlhYmxlc1tpbmRl
eF07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CmluZGV4IDIyN2NiMTkuLjQ0MTY2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBKU1Njb3BlOwog
Y2xhc3MgRGVidWdnZXJTY29wZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0
aWMgRGVidWdnZXJTY29wZSogY3JlYXRlKFZNJiB2bSwgSlNTY29wZSogc2NvcGUpCiAgICAgewpA
QCAtOTgsOCArOTksNiBAQCBwcml2YXRlOgogCiAgICAgSlNTY29wZSoganNTY29wZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NvcGUuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBXcml0ZUJh
cnJpZXI8SlNTY29wZT4gbV9zY29wZTsKICAgICBXcml0ZUJhcnJpZXI8RGVidWdnZXJTY29wZT4g
bV9uZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IGViNTBjYWQuLjE2MTE3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0yNzk1LDcgKzI3OTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dQYXRoOwotICAgIE1hcmtlZEFsbG9jYXRvciYgbWFya2VkQWxsb2NhdG9yID0gbV9q
aXQudm0oKS0+aGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yKHNpemVvZihKU1JvcGVTdHJpbmcpKTsKKyAgICBNYXJrZWRBbGxvY2F0b3ImIG1hcmtl
ZEFsbG9jYXRvciA9IG1faml0LnZtKCktPmhlYXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aERlc3Ry
dWN0b3Ioc2l6ZW9mKEpTUm9wZVN0cmluZykpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cigmbWFya2VkQWxsb2NhdG9yKSwgYWxsb2NhdG9yR1BSKTsKICAgICBlbWl0QWxsb2NhdGVKU0Nl
bGwocmVzdWx0R1BSLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXgg
NzE0MjU1OS4uZTM5ZDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKQEAgLTM0MTksNyArMzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQ
YXRoKTsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yID0KLSAg
ICAgICAgICAgIHZtKCkuaGVhcC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1
cmVEZXN0cnVjdG9yKHNpemVvZihKU1JvcGVTdHJpbmcpKTsKKyAgICAgICAgICAgIHZtKCkuaGVh
cC5hbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplb2YoSlNSb3BlU3RyaW5nKSk7
CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVDZWxsKAogICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoJmFsbG9jYXRvciksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKaW5kZXggOTAxOWZjNy4uMjJiMGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aApAQCAtMTM3LDEyICsxMzcsMTAgQEAgcHVibGljOgogICAgIC8vIHRydWUgaWYgYW4gYWxsb2Nh
dGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgYm9vbCBpc0J1c3koKTsKICAg
ICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0
b3IoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0
cnVjdG9yKCk7IH0KLSAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0
Tm9ybWFsRGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmpl
Y3RzV2l0aE5vcm1hbERlc3RydWN0b3IoKTsgfQotICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYg
c3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFsU3RydWN0dXJlKCkgeyByZXR1cm4gbV9vYmpl
Y3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoSW1tb3J0YWxTdHJ1Y3R1cmUoKTsgfQorICAg
IE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3REZXN0cnVjdG9yKCkgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoRGVzdHJ1Y3RvcigpOyB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPiBNYXJrZWRTcGFjZTo6U3Vic3BhY2Um
IHN1YnNwYWNlRm9yT2JqZWN0T2ZUeXBlKCk7CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0
b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2Jq
ZWN0U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQotICAgIE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yRm9yT2JqZWN0V2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVy
biBtX29iamVjdFNwYWNlLm5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9Ci0g
ICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoSW1tb3J0YWxTdHJ1Y3R1
cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5pbW1vcnRh
bFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CisgICAgTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsg
cmV0dXJuIG1fb2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+IE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
Rm9yT2JqZWN0T2ZUeXBlKHNpemVfdCBieXRlcyk7CiAgICAgQ29waWVkQWxsb2NhdG9yJiBzdG9y
YWdlQWxsb2NhdG9yKCkgeyByZXR1cm4gbV9zdG9yYWdlU3BhY2UuYWxsb2NhdG9yKCk7IH0KICAg
ICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVN0b3JhZ2UoSlNDZWxsKiBpbnRlbmRlZE93bmVy
LCBzaXplX3QsIHZvaWQqKik7CkBAIC0yNjYsOCArMjY0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBzaXpl
X3QpOwogCi0gICAgdm9pZCogYWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
KHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBzcGVjaWFsIG9iamVjdHMgd2hvc2UgU3RydWN0dXJl
cyBuZXZlciBkaWUuCi0gICAgdm9pZCogYWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3RvcihzaXpl
X3QpOyAvLyBGb3IgdXNlIHdpdGggb2JqZWN0cyB0aGF0IGluaGVyaXQgZGlyZWN0bHkgb3IgaW5k
aXJlY3RseSBmcm9tIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LgorICAgIHZvaWQqIGFsbG9jYXRlV2l0
aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0aCBkZXN0cnVj
dG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZv
ciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVzdHJ1Y3RvcnMuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2xhc3NUeXBlPiB2b2lkKiBhbGxvY2F0ZU9iamVjdE9mVHlwZShzaXplX3QpOyAvLyBD
aG9vc2VzIG9uZSBvZiB0aGUgbWV0aG9kcyBhYm92ZSBiYXNlZCBvbiB0eXBlLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCA2YmE1NGRhLi45NTVjYWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIwOSwyMiArMjA5
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVh
Y2hDb2RlQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICByZXR1cm4gbV9jb2RlQmxvY2tzLml0
ZXJhdGU8RnVuY3Rvcj4oZnVuY3Rvcik7CiB9CiAKLWlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0
ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKK2lubGluZSB2b2lkKiBIZWFwOjph
bGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKIHsKICNpZiBFTkFCTEUoQUxMT0NB
VElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0MgYWxsb2NhdGluZyAlbHUgYnl0ZXMg
d2l0aCBub3JtYWwgZGVzdHJ1Y3Rvci5cbiIsIGJ5dGVzKTsKICNlbmRpZgogICAgIEFTU0VSVChp
c1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwotICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9j
YXRlV2l0aE5vcm1hbERlc3RydWN0b3IoYnl0ZXMpOwotfQotCi1pbmxpbmUgdm9pZCogSGVhcDo6
YWxsb2NhdGVXaXRoSW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKLXsK
LSNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQotICAgIGRhdGFMb2dGKCJKU0MgR0MgYWxs
b2NhdGluZyAlbHUgYnl0ZXMgd2l0aCBpbW1vcnRhbCBzdHJ1Y3R1cmUgZGVzdHJ1Y3Rvci5cbiIs
IGJ5dGVzKTsKLSNlbmRpZgotICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwot
ICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlV2l0aEltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvcihieXRlcyk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVXaXRoRGVz
dHJ1Y3RvcihieXRlcyk7CiB9CiAKIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhvdXRE
ZXN0cnVjdG9yKHNpemVfdCBieXRlcykKQEAgLTI0MCwxMiArMjMxLDEwIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENsYXNzVHlwZT4KIHZvaWQqIEhlYXA6OmFsbG9jYXRlT2JqZWN0T2ZUeXBlKHNpemVf
dCBieXRlcykKIHsKICAgICAvLyBKU0NlbGw6OmNsYXNzSW5mbygpIGV4cGVjdHMgb2JqZWN0cyBh
bGxvY2F0ZWQgd2l0aCBub3JtYWwgZGVzdHJ1Y3RvciB0byBkZXJpdmUgZnJvbSBKU0Rlc3RydWN0
aWJsZU9iamVjdC4KLSAgICBBU1NFUlQoKCFDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwg
Q2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENs
YXNzVHlwZSwgSlNEZXN0cnVjdGlibGVPYmplY3Q+Ojp2YWx1ZSkpOworICAgIEFTU0VSVCgoIUNs
YXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiB8fCAoQ2xhc3NUeXBlOjpTdHJ1Y3R1cmVGbGFncyAm
IFN0cnVjdHVyZUlzSW1tb3J0YWwpIHx8IHN0ZDo6aXNfY29udmVydGlibGU8Q2xhc3NUeXBlLCBK
U0Rlc3RydWN0aWJsZU9iamVjdD46OnZhbHVlKSk7CiAKLSAgICBpZiAoQ2xhc3NUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uICYmIENsYXNzVHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUpCi0gICAgICAg
IHJldHVybiBhbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3IoYnl0ZXMpOwog
ICAgIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBhbGxv
Y2F0ZVdpdGhOb3JtYWxEZXN0cnVjdG9yKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRl
V2l0aERlc3RydWN0b3IoYnl0ZXMpOwogICAgIHJldHVybiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVj
dG9yKGJ5dGVzKTsKIH0KIApAQCAtMjUzLDEyICsyNDIsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2xhc3NUeXBlPgogTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBIZWFwOjpzdWJzcGFjZUZvck9iamVj
dE9mVHlwZSgpCiB7CiAgICAgLy8gSlNDZWxsOjpjbGFzc0luZm8oKSBleHBlY3RzIG9iamVjdHMg
YWxsb2NhdGVkIHdpdGggbm9ybWFsIGRlc3RydWN0b3IgdG8gZGVyaXZlIGZyb20gSlNEZXN0cnVj
dGlibGVPYmplY3QuCi0gICAgQVNTRVJUKCghQ2xhc3NUeXBlOjpuZWVkc0Rlc3RydWN0aW9uIHx8
IENsYXNzVHlwZTo6aGFzSW1tb3J0YWxTdHJ1Y3R1cmUgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxD
bGFzc1R5cGUsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6dmFsdWUpKTsKKyAgICBBU1NFUlQoKCFD
bGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gfHwgKENsYXNzVHlwZTo6U3RydWN0dXJlRmxhZ3Mg
JiBTdHJ1Y3R1cmVJc0ltbW9ydGFsKSB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPENsYXNzVHlwZSwg
SlNEZXN0cnVjdGlibGVPYmplY3Q+Ojp2YWx1ZSkpOwogICAgIAotICAgIGlmIChDbGFzc1R5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24gJiYgQ2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSkKLSAg
ICAgICAgcmV0dXJuIHN1YnNwYWNlRm9yT2JqZWN0c1dpdGhJbW1vcnRhbFN0cnVjdHVyZSgpOwog
ICAgIGlmIChDbGFzc1R5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgIHJldHVybiBzdWJz
cGFjZUZvck9iamVjdE5vcm1hbERlc3RydWN0b3IoKTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9yT2JqZWN0RGVzdHJ1Y3RvcigpOwogICAgIHJldHVybiBzdWJzcGFjZUZvck9iamVjdFdpdGhv
dXREZXN0cnVjdG9yKCk7CiB9CiAKQEAgLTI2NiwxMiArMjUzLDEwIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENsYXNzVHlwZT4KIE1hcmtlZEFsbG9jYXRvciYgSGVhcDo6YWxsb2NhdG9yRm9yT2JqZWN0
T2ZUeXBlKHNpemVfdCBieXRlcykKIHsKICAgICAvLyBKU0NlbGw6OmNsYXNzSW5mbygpIGV4cGVj
dHMgb2JqZWN0cyBhbGxvY2F0ZWQgd2l0aCBub3JtYWwgZGVzdHJ1Y3RvciB0byBkZXJpdmUgZnJv
bSBKU0Rlc3RydWN0aWJsZU9iamVjdC4KLSAgICBBU1NFUlQoKCFDbGFzc1R5cGU6Om5lZWRzRGVz
dHJ1Y3Rpb24gfHwgQ2xhc3NUeXBlOjpoYXNJbW1vcnRhbFN0cnVjdHVyZSB8fCBzdGQ6OmlzX2Nv
bnZlcnRpYmxlPENsYXNzVHlwZSwgSlNEZXN0cnVjdGlibGVPYmplY3Q+Ojp2YWx1ZSkpOworICAg
IEFTU0VSVCgoIUNsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiB8fCAoQ2xhc3NUeXBlOjpTdHJ1
Y3R1cmVGbGFncyAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpIHx8IHN0ZDo6aXNfY29udmVydGlibGU8
Q2xhc3NUeXBlLCBKU0Rlc3RydWN0aWJsZU9iamVjdD46OnZhbHVlKSk7CiAgICAgCi0gICAgaWYg
KENsYXNzVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiAmJiBDbGFzc1R5cGU6Omhhc0ltbW9ydGFsU3Ry
dWN0dXJlKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yRm9yT2JqZWN0V2l0aEltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvcihieXRlcyk7CiAgICAgaWYgKENsYXNzVHlwZTo6bmVlZHNEZXN0cnVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvckZvck9iamVjdFdpdGhOb3JtYWxEZXN0cnVj
dG9yKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRvckZvck9iamVjdFdpdGhEZXN0cnVj
dG9yKGJ5dGVzKTsKICAgICByZXR1cm4gYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0
b3IoYnl0ZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcAppbmRleCBhN2QyOWJiLi4yZGJmOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBNYXJr
ZWRCbG9jayogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBieXRlcykKIAog
ICAgIHNpemVfdCBjZWxsU2l6ZSA9IG1fY2VsbFNpemUgPyBtX2NlbGxTaXplIDogV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oYnl0ZXMpOwogCi0gICAgcmV0
dXJuIE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgYmxvY2tTaXplLCBjZWxsU2l6ZSwgbV9kZXN0
cnVjdG9yVHlwZSk7CisgICAgcmV0dXJuIE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgYmxvY2tT
aXplLCBjZWxsU2l6ZSwgbV9uZWVkc0Rlc3RydWN0aW9uKTsKIH0KIAogdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKaW5kZXggYjQ5N2Y4Zi4uMTYxYWY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKQEAgLTI2LDcgKzI2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsKICAgICB2b2lkIHJlc3Vt
ZUFsbG9jYXRpbmcoKTsKICAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2NlbGxTaXpl
OyB9Ci0gICAgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBlKCkgeyBy
ZXR1cm4gbV9kZXN0cnVjdG9yVHlwZTsgfQorICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIHsg
cmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
CiAgICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIE1hcmtlZEJsb2NrKiB0
YWtlTGFzdEFjdGl2ZUJsb2NrKCkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtl
ZEJsb2NrKik7Ci0gICAgdm9pZCBpbml0KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxs
U2l6ZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlKTsKKyAgICB2b2lkIGluaXQoSGVhcCos
IE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24pOwog
CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAKQEAgLTU5LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2Nr
TGlzdDsKICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX3JldGlyZWRCbG9ja3M7
CiAgICAgc2l6ZV90IG1fY2VsbFNpemU7Ci0gICAgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBl
IG1fZGVzdHJ1Y3RvclR5cGU7CisgICAgYm9vbCBtX25lZWRzRGVzdHJ1Y3Rpb24geyBmYWxzZSB9
OwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKIH07
CkBAIC03NCwxOCArNzQsMTcgQEAgaW5saW5lIE1hcmtlZEFsbG9jYXRvcjo6TWFya2VkQWxsb2Nh
dG9yKCkKICAgICAsIG1fbGFzdEFjdGl2ZUJsb2NrKDApCiAgICAgLCBtX25leHRCbG9ja1RvU3dl
ZXAoMCkKICAgICAsIG1fY2VsbFNpemUoMCkKLSAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoTWFya2Vk
QmxvY2s6Ok5vbmUpCiAgICAgLCBtX2hlYXAoMCkKICAgICAsIG1fbWFya2VkU3BhY2UoMCkKIHsK
IH0KIAotaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjppbml0KEhlYXAqIGhlYXAsIE1hcmtl
ZFNwYWNlKiBtYXJrZWRTcGFjZSwgc2l6ZV90IGNlbGxTaXplLCBNYXJrZWRCbG9jazo6RGVzdHJ1
Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCitpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omlu
aXQoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKIHsKICAgICBtX2hlYXAgPSBoZWFwOwogICAgIG1fbWFy
a2VkU3BhY2UgPSBtYXJrZWRTcGFjZTsKICAgICBtX2NlbGxTaXplID0gY2VsbFNpemU7Ci0gICAg
bV9kZXN0cnVjdG9yVHlwZSA9IGRlc3RydWN0b3JUeXBlOworICAgIG1fbmVlZHNEZXN0cnVjdGlv
biA9IG5lZWRzRGVzdHJ1Y3Rpb247CiB9CiAKIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6
OmFsbG9jYXRlKHNpemVfdCBieXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAppbmRleCBlMTA3MjJkLi41Y2JmZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1NYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIERlc3RydWN0b3JU
eXBlIGRlc3RydWN0b3JUeXBlKQorTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoTWFy
a2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXpl
LCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24pCiB7Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFz
dEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFsbG9jYXRv
ciwgY2FwYWNpdHksIGNlbGxTaXplLCBkZXN0cnVjdG9yVHlwZSk7CisgICAgcmV0dXJuIG5ldyAo
Tm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJs
b2NrKGFsbG9jYXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uKTsKIH0K
IAogdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShNYXJrZWRCbG9jayogYmxvY2spCkBAIC00NCwx
MiArNDQsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShNYXJrZWRCbG9jayogYmxvY2sp
CiAgICAgZmFzdEFsaWduZWRGcmVlKGJsb2NrKTsKIH0KIAotTWFya2VkQmxvY2s6Ok1hcmtlZEJs
b2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBj
ZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUpCitNYXJrZWRCbG9jazo6TWFy
a2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwgc2l6
ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgOiBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxNYXJrZWRCbG9jaz4oKQogICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsg
YXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNl
bGxTaXplKCkgPyBhdG9tc1BlckJsb2NrIDogY2FwYWNpdHkgLyBhdG9tU2l6ZSkgLSBtX2F0b21z
UGVyQ2VsbCArIDEpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQotICAgICwgbV9kZXN0cnVj
dG9yVHlwZShkZXN0cnVjdG9yVHlwZSkKKyAgICAsIG1fbmVlZHNEZXN0cnVjdGlvbihuZWVkc0Rl
c3RydWN0aW9uKQogICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwgbV9zdGF0ZShO
ZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCiAgICAgLCBtX3dlYWtTZXQoYWxs
b2NhdG9yLT5oZWFwKCktPnZtKCkpCkBAIC01OCw3ICs1OCw2IEBAIE1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXpl
X3QgY2VsCiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIH0KIAot
dGVtcGxhdGU8TWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGR0b3JUeXBlPgogaW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCkKIHsKICAgICAvLyBB
IHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJlYWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVj
dG9yLgpAQCAtNjYsMjAgKzY1LDIwIEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVz
dHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChjZWxs
LT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICBpZiAoZHRvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vcm1h
bCkKLSAgICAgICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4oY2VsbCktPmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNlbGwpOwotICAgIGVsc2UKKyAgICBpZiAoY2VsbC0+
aW5saW5lVHlwZUZsYWdzKCkgJiBTdHJ1Y3R1cmVJc0ltbW9ydGFsKQogICAgICAgICBjZWxsLT5z
dHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsK
KyAgICBlbHNlCisgICAgICAgIGpzQ2FzdDxKU0Rlc3RydWN0aWJsZU9iamVjdCo+KGNlbGwpLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKICAgICBjZWxsLT56YXAoKTsK
IH0KIAotdGVtcGxhdGU8TWFya2VkQmxvY2s6OkJsb2NrU3RhdGUgYmxvY2tTdGF0ZSwgTWFya2Vk
QmxvY2s6OlN3ZWVwTW9kZSBzd2VlcE1vZGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBk
dG9yVHlwZT4KK3RlbXBsYXRlPE1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlIGJsb2NrU3RhdGUsIE1h
cmtlZEJsb2NrOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBib29sIGNhbGxEZXN0cnVjdG9ycz4KIE1h
cmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCgpCiB7CiAg
ICAgQVNTRVJUKGJsb2NrU3RhdGUgIT0gQWxsb2NhdGVkICYmIGJsb2NrU3RhdGUgIT0gRnJlZUxp
c3RlZCk7Ci0gICAgQVNTRVJUKCEoZHRvclR5cGUgPT0gTWFya2VkQmxvY2s6Ok5vbmUgJiYgc3dl
ZXBNb2RlID09IFN3ZWVwT25seSkpOworICAgIEFTU0VSVCghKCFjYWxsRGVzdHJ1Y3RvcnMgJiYg
c3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwogCi0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oKGR0b3JUeXBlICE9IE1hcmtlZEJsb2NrOjpOb25lICYmIGJsb2NrU3RhdGUgIT0gTmV3
KSA/ICJDYWxsaW5nIGRlc3RydWN0b3JzIiA6ICJzd2VlcGluZyIpOworICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCghY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3
KSA/ICJDYWxsaW5nIGRlc3RydWN0b3JzIiA6ICJzd2VlcGluZyIpOwogICAgIAogICAgIC8vIFRo
aXMgcHJvZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2UgdGhyb3Vn
aCB0aGUgYmxvY2suCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2NhdGlvbiBj
b2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQpAQCAtOTIsOCArOTEsOCBAQCBNYXJr
ZWRCbG9jazo6RnJlZUxpc3QgTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQogCiAgICAg
ICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygp
W2ldKTsKIAotICAgICAgICBpZiAoZHRvclR5cGUgIT0gTWFya2VkQmxvY2s6Ok5vbmUgJiYgYmxv
Y2tTdGF0ZSAhPSBOZXcpCi0gICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcjxkdG9yVHlwZT4oY2Vs
bCk7CisgICAgICAgIGlmIChjYWxsRGVzdHJ1Y3RvcnMgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCisg
ICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKIAogICAgICAgICBpZiAoc3dlZXBNb2Rl
ID09IFN3ZWVwVG9GcmVlTGlzdCkgewogICAgICAgICAgICAgRnJlZUNlbGwqIGZyZWVDZWxsID0g
cmVpbnRlcnByZXRfY2FzdDxGcmVlQ2VsbCo+KGNlbGwpOwpAQCAtMTE4LDIzICsxMTcsMjEgQEAg
TWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzd2VlcChTd2VlcE1vZGUgc3dlZXBN
b2RlKQogCiAgICAgbV93ZWFrU2V0LnN3ZWVwKCk7CiAKLSAgICBpZiAoc3dlZXBNb2RlID09IFN3
ZWVwT25seSAmJiBtX2Rlc3RydWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb25lKQorICAgIGlm
IChzd2VlcE1vZGUgPT0gU3dlZXBPbmx5ICYmICFtX25lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAg
IHJldHVybiBGcmVlTGlzdCgpOwogCi0gICAgaWYgKG1fZGVzdHJ1Y3RvclR5cGUgPT0gTWFya2Vk
QmxvY2s6OkltbW9ydGFsU3RydWN0dXJlKQotICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXI8TWFy
a2VkQmxvY2s6OkltbW9ydGFsU3RydWN0dXJlPihzd2VlcE1vZGUpOwotICAgIGlmIChtX2Rlc3Ry
dWN0b3JUeXBlID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCi0gICAgICAgIHJldHVybiBzd2VlcEhl
bHBlcjxNYXJrZWRCbG9jazo6Tm9ybWFsPihzd2VlcE1vZGUpOwotICAgIHJldHVybiBzd2VlcEhl
bHBlcjxNYXJrZWRCbG9jazo6Tm9uZT4oc3dlZXBNb2RlKTsKKyAgICBpZiAobV9uZWVkc0Rlc3Ry
dWN0aW9uKQorICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXI8dHJ1ZT4oc3dlZXBNb2RlKTsKKyAg
ICByZXR1cm4gc3dlZXBIZWxwZXI8ZmFsc2U+KHN3ZWVwTW9kZSk7CiB9CiAKLXRlbXBsYXRlPE1h
cmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkdG9yVHlwZT4KK3RlbXBsYXRlPGJvb2wgY2FsbERl
c3RydWN0b3JzPgogTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzd2VlcEhlbHBl
cihTd2VlcE1vZGUgc3dlZXBNb2RlKQogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNh
c2UgTmV3OgogICAgICAgICBBU1NFUlQoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCk7Ci0g
ICAgICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPE5ldywgU3dlZXBUb0ZyZWVMaXN0LCBkdG9y
VHlwZT4oKTsKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJl
ZUxpc3QsIGNhbGxEZXN0cnVjdG9ycz4oKTsKICAgICBjYXNlIEZyZWVMaXN0ZWQ6CiAgICAgICAg
IC8vIEhhcHBlbnMgd2hlbiBhIGJsb2NrIHRyYW5zaXRpb25zIHRvIGZ1bGx5IGFsbG9jYXRlZC4K
ICAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpOwpAQCAtMTQ1LDgg
KzE0Miw4IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXBIZWxwZXIo
U3dlZXBNb2RlIHN3ZWVwTW9kZSkKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgY2Fz
ZSBNYXJrZWQ6CiAgICAgICAgIHJldHVybiBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0Ci0g
ICAgICAgICAgICA/IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcFRvRnJlZUxpc3QsIGR0
b3JUeXBlPigpCi0gICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8TWFya2VkLCBTd2VlcE9u
bHksIGR0b3JUeXBlPigpOworICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwg
U3dlZXBUb0ZyZWVMaXN0LCBjYWxsRGVzdHJ1Y3RvcnM+KCkKKyAgICAgICAgICAgIDogc3BlY2lh
bGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwT25seSwgY2FsbERlc3RydWN0b3JzPigpOwogICAgIH0K
IAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaAppbmRleCA1NzZlZDUyLi40Njc0OTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTExMSw4ICsxMTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIFJldHVyblR5cGUgbV9jb3VudDsKICAgICAgICAgfTsKIAot
ICAgICAgICBlbnVtIERlc3RydWN0b3JUeXBlIHsgTm9uZSwgSW1tb3J0YWxTdHJ1Y3R1cmUsIE5v
cm1hbCB9OwotICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShNYXJrZWRBbGxvY2F0
b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUpOwor
ICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShNYXJrZWRBbGxvY2F0b3IqLCBzaXpl
X3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShNYXJrZWRCbG9jayopOwogCiAgICAgICAgIHN0YXRp
YyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwpAQCAtMTU1LDcgKzE1NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzRW1wdHkoKTsKIAogICAgICAgICBzaXplX3Qg
Y2VsbFNpemUoKTsKLSAgICAgICAgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1Y3RvclR5cGUoKTsKKyAg
ICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNp
emUoKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xOTAsMTUgKzE4OSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50
TWFzayA9IGF0b21TaXplIC0gMTsgLy8gYXRvbVNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4K
IAogICAgICAgICBlbnVtIEJsb2NrU3RhdGUgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwg
TWFya2VkLCBSZXRpcmVkIH07Ci0gICAgICAgIHRlbXBsYXRlPERlc3RydWN0b3JUeXBlPiBGcmVl
TGlzdCBzd2VlcEhlbHBlcihTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworICAgICAgICB0ZW1wbGF0
ZTxib29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3dlZXBIZWxwZXIoU3dlZXBNb2RlID0g
U3dlZXBPbmx5KTsKIAogICAgICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAg
ICAgICAgTWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXpl
X3QgY2VsbFNpemUsIERlc3RydWN0b3JUeXBlKTsKKyAgICAgICAgTWFya2VkQmxvY2soTWFya2Vk
QWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIHNpemVfdCBhdG9t
TnVtYmVyKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3RvclR5cGU+IHZv
aWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7Ci0gICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUs
IFN3ZWVwTW9kZSwgRGVzdHJ1Y3RvclR5cGU+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsK
KyAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqKTsKKyAgICAgICAgdGVtcGxhdGU8
QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBib29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3Bl
Y2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fcHJldjsK
ICAgICAgICAgTWFya2VkQmxvY2sqIG1fbmV4dDsKQEAgLTIxNSw3ICsyMTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdURjo6Qml0bWFwPGF0b21zUGVyQmxv
Y2s+PiBtX25ld2x5QWxsb2NhdGVkOwogCiAgICAgICAgIHNpemVfdCBtX2NhcGFjaXR5OwotICAg
ICAgICBEZXN0cnVjdG9yVHlwZSBtX2Rlc3RydWN0b3JUeXBlOworICAgICAgICBib29sIG1fbmVl
ZHNEZXN0cnVjdGlvbjsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAg
ICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKQEAg
LTMyNSw5ICszMjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fYXRvbXNQ
ZXJDZWxsICogYXRvbVNpemU7CiAgICAgfQogCi0gICAgaW5saW5lIE1hcmtlZEJsb2NrOjpEZXN0
cnVjdG9yVHlwZSBNYXJrZWRCbG9jazo6ZGVzdHJ1Y3RvclR5cGUoKQorICAgIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2Rlc3RydWN0b3JUeXBlOyAKKyAgICAgICAgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlv
bjsKICAgICB9CiAKICAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjpzaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCAzMWZlOTQyLi40ZjMw
ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC04
MywyMCArODMsMTcgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAg
LCBtX2lzSXRlcmF0aW5nKGZhbHNlKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJl
Y2lzZVN0ZXA7IGNlbGxTaXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VT
dGVwKSB7Ci0gICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBj
ZWxsU2l6ZSwgTWFya2VkQmxvY2s6Ok5vbmUpOwotICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9j
azo6Tm9ybWFsKTsKLSAgICAgICAgaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6SW1t
b3J0YWxTdHJ1Y3R1cmUpOworICAgICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVh
cCwgdGhpcywgY2VsbFNpemUsIGZhbHNlKTsKKyAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXBy
ZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKLSAgICAgICAgYWxsb2Nh
dG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBNYXJrZWRCbG9jazo6
Tm9uZSk7Ci0gICAgICAgIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmlu
aXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpOb3JtYWwpOwotICAgICAgICBp
bW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVh
cCwgdGhpcywgY2VsbFNpemUsIE1hcmtlZEJsb2NrOjpJbW1vcnRhbFN0cnVjdHVyZSk7CisgICAg
ICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgZmFs
c2UpOworICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAs
IHRoaXMsIGNlbGxTaXplLCB0cnVlKTsKICAgICB9CiAKLSAgICBtX25vcm1hbFNwYWNlLmxhcmdl
QWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywgMCwgTWFya2VkQmxvY2s6Ok5vbmUpOwotICAgIG1f
bm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmluaXQoaGVhcCwgdGhpcywgMCwg
TWFya2VkQmxvY2s6Ok5vcm1hbCk7Ci0gICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JT
cGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhlYXAsIHRoaXMsIDAsIE1hcmtlZEJsb2NrOjpJbW1v
cnRhbFN0cnVjdHVyZSk7CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5pbml0KGhl
YXAsIHRoaXMsIDAsIGZhbHNlKTsKKyAgICBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRv
ci5pbml0KGhlYXAsIHRoaXMsIDAsIHRydWUpOwogfQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNw
YWNlKCkKQEAgLTEzNCwxOSArMTMxLDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2Nh
dG9ycygpCiB7CiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNp
emUgPD0gcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApIHsKICAgICAgICAg
YWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwotICAgICAgICBub3JtYWxEZXN0cnVjdG9y
QWxsb2NhdG9yRm9yKGNlbGxTaXplKS5yZXNldCgpOwotICAgICAgICBpbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CisgICAgICAgIGRlc3Ry
dWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CiAgICAgfQogCiAgICAgZm9yIChz
aXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRv
ZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAgYWxsb2NhdG9yRm9yKGNl
bGxTaXplKS5yZXNldCgpOwotICAgICAgICBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNl
bGxTaXplKS5yZXNldCgpOwotICAgICAgICBpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoY2VsbFNpemUpLnJlc2V0KCk7CisgICAgICAgIGRlc3RydWN0b3JBbGxvY2F0b3JG
b3IoY2VsbFNpemUpLnJlc2V0KCk7CiAgICAgfQogCiAgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFs
bG9jYXRvci5yZXNldCgpOwotICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2Nh
dG9yLnJlc2V0KCk7Ci0gICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJn
ZUFsbG9jYXRvci5yZXNldCgpOworICAgIG1fZGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9y
LnJlc2V0KCk7CiAKICNpZiBFTkFCTEUoR0dDKQogICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHMu
Y2xlYXIoKTsKQEAgLTE4NCwxOSArMTc4LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hB
bGxvY2F0b3IoRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9
IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVj
aXNlU3RlcCkgewogICAgICAgICBmdW5jdG9yKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOwotICAg
ICAgICBmdW5jdG9yKG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNpemUpKTsKLSAg
ICAgICAgZnVuY3RvcihpbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2Vs
bFNpemUpKTsKKyAgICAgICAgZnVuY3RvcihkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBj
ZWxsU2l6ZSA8PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsK
ICAgICAgICAgZnVuY3RvcihhbGxvY2F0b3JGb3IoY2VsbFNpemUpKTsKLSAgICAgICAgZnVuY3Rv
cihub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7Ci0gICAgICAgIGZ1bmN0
b3IoaW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7Cisg
ICAgICAgIGZ1bmN0b3IoZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOwogICAgIH0K
IAogICAgIGZ1bmN0b3IobV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvcik7Ci0gICAgZnVuY3Rv
cihtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7Ci0gICAgZnVuY3Rvciht
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yKTsKKyAgICBm
dW5jdG9yKG1fZGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yKTsKIH0KIAogc3RydWN0IFN0
b3BBbGxvY2F0aW5nRnVuY3RvciB7CkBAIC0yMjMsMjEgKzIxNCwxOCBAQCBib29sIE1hcmtlZFNw
YWNlOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxs
U2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSAr
PSBwcmVjaXNlU3RlcCkgewogICAgICAgICBpZiAoYWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1Bh
Z2VkT3V0KGRlYWRsaW5lKSAKLSAgICAgICAgICAgIHx8IG5vcm1hbERlc3RydWN0b3JBbGxvY2F0
b3JGb3IoY2VsbFNpemUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpIAotICAgICAgICAgICAgfHwgaW1t
b3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0
KGRlYWRsaW5lKSkKKyAgICAgICAgICAgIHx8IGRlc3RydWN0b3JBbGxvY2F0b3JGb3IoY2VsbFNp
emUpLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
PSBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lzZVN0ZXApIHsKICAgICAgICAg
aWYgKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkgCi0gICAgICAg
ICAgICB8fCBub3JtYWxEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0
KGRlYWRsaW5lKSAKLSAgICAgICAgICAgIHx8IGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFs
bG9jYXRvckZvcihjZWxsU2l6ZSkuaXNQYWdlZE91dChkZWFkbGluZSkpCisgICAgICAgICAgICB8
fCBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChtX25vcm1hbFNwYWNl
LmxhcmdlQWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVhZGxpbmUpCi0gICAgICAgIHx8IG1fbm9ybWFs
RGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVhZGxpbmUpCi0gICAg
ICAgIHx8IG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
aXNQYWdlZE91dChkZWFkbGluZSkpCisgICAgICAgIHx8IG1fZGVzdHJ1Y3RvclNwYWNlLmxhcmdl
QWxsb2NhdG9yLmlzUGFnZWRPdXQoZGVhZGxpbmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI5MiwxNCArMjgwLDEyIEBAIHZvaWQgTWFya2VkU3BhY2U6
OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJl
Y2lzZUNvdW50OyArK2kpIHsKICAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2sobV9u
b3JtYWxTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpOwot
ICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhtX25vcm1hbERlc3RydWN0b3JTcGFj
ZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpOwotICAgICAgICBj
bGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNw
YWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLnRha2VMYXN0QWN0aXZlQmxvY2soKSk7CisgICAgICAg
IGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKG1fZGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxv
Y2F0b3JzW2ldLnRha2VMYXN0QWN0aXZlQmxvY2soKSk7CiAgICAgfQogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKSB7CiAgICAgICAgIGNsZWFyTmV3bHlB
bGxvY2F0ZWRJbkJsb2NrKG1fbm9ybWFsU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtl
TGFzdEFjdGl2ZUJsb2NrKCkpOwotICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayht
X25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLnRha2VMYXN0QWN0
aXZlQmxvY2soKSk7Ci0gICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKG1faW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS50YWtlTGFz
dEFjdGl2ZUJsb2NrKCkpOworICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhtX2Rl
c3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLnRha2VMYXN0QWN0aXZlQmxvY2so
KSk7CiAgICAgfQogCiAgICAgLy8gV2UgaGF2ZSB0byBpdGVyYXRlIGFsbCBvZiB0aGUgYmxvY2tz
IGluIHRoZSBsYXJnZSBhbGxvY2F0b3JzIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMwNyw4ICsyOTMs
NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICAgICAvLyB3aGlj
aCBjcmVhdGVzIHRoZSBtX25ld2x5QWxsb2NhdGVkIGJpdG1hcC4KICAgICBDbGVhck5ld2x5QWxs
b2NhdGVkIGZ1bmN0b3I7CiAgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0
b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVj
dG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIG1fZGVz
dHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKIAogI2lm
bmRlZiBOREVCVUcKICAgICBWZXJpZnlOZXdseUFsbG9jYXRlZCB2ZXJpZnlGdW5jdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggOWYzMmVlMy4uZTkzOTkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC0xMDMsMTQg
KzEwMywxMSBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRBbGxvY2F0b3ImIGZpcnN0QWxsb2NhdG9y
KCk7CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3Ioc2l6ZV90KTsKLSAgICBNYXJr
ZWRBbGxvY2F0b3ImIGltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXpl
X3QpOwotICAgIE1hcmtlZEFsbG9jYXRvciYgbm9ybWFsRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihz
aXplX3QpOwotICAgIHZvaWQqIGFsbG9jYXRlV2l0aE5vcm1hbERlc3RydWN0b3Ioc2l6ZV90KTsK
LSAgICB2b2lkKiBhbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3Ioc2l6ZV90
KTsKKyAgICBNYXJrZWRBbGxvY2F0b3ImIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsK
KyAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxs
b2NhdGVXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QpOwogCi0gICAgU3Vic3BhY2UmIHN1YnNwYWNl
Rm9yT2JqZWN0c1dpdGhOb3JtYWxEZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxEZXN0cnVj
dG9yU3BhY2U7IH0KLSAgICBTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RzV2l0aEltbW9ydGFs
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZTsg
fQorICAgIFN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdHNXaXRoRGVzdHJ1Y3RvcigpIHsgcmV0
dXJuIG1fZGVzdHJ1Y3RvclNwYWNlOyB9CiAgICAgU3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0
c1dpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9ub3JtYWxTcGFjZTsgfQogCiAgICAgdm9p
ZCByZXNldEFsbG9jYXRvcnMoKTsKQEAgLTE2OCw4ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKCk7
CiAKLSAgICBTdWJzcGFjZSBtX25vcm1hbERlc3RydWN0b3JTcGFjZTsKLSAgICBTdWJzcGFjZSBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlOworICAgIFN1YnNwYWNlIG1fZGVzdHJ1
Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CiAKICAgICBIZWFwKiBtX2hl
YXA7CkBAIC0yMTksMjQgKzIxNSwxNCBAQCBpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRT
cGFjZTo6YWxsb2NhdG9yRm9yKHNpemVfdCBieXRlcykKICAgICByZXR1cm4gbV9ub3JtYWxTcGFj
ZS5sYXJnZUFsbG9jYXRvcjsKIH0KIAotaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3Bh
Y2U6OmltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvckFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMp
CitpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6ZGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBpZiAoYnl0ZXMg
PD0gcHJlY2lzZUN1dG9mZikKLSAgICAgICAgcmV0dXJuIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07
CisgICAgICAgIHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1soYnl0
ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKICAgICBpZiAoYnl0ZXMgPD0gaW1wcmVjaXNlQ3V0b2Zm
KQotICAgICAgICByZXR1cm4gbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXBy
ZWNpc2VBbGxvY2F0b3JzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07Ci0gICAgcmV0dXJu
IG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3I7Ci19Ci0K
LWlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjpub3JtYWxEZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKHNpemVfdCBieXRlcykKLXsKLSAgICBBU1NFUlQoYnl0ZXMpOwotICAgIGlmIChi
eXRlcyA8PSBwcmVjaXNlQ3V0b2ZmKQotICAgICAgICByZXR1cm4gbV9ub3JtYWxEZXN0cnVjdG9y
U3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07Ci0gICAg
aWYgKGJ5dGVzIDw9IGltcHJlY2lzZUN1dG9mZikKLSAgICAgICAgcmV0dXJuIG1fbm9ybWFsRGVz
dHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VT
dGVwXTsKLSAgICByZXR1cm4gbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3I7
CisgICAgICAgIHJldHVybiBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzWyhi
eXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07CisgICAgcmV0dXJuIG1fZGVzdHJ1Y3RvclNwYWNl
LmxhcmdlQWxsb2NhdG9yOwogfQogCiBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRl
V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpAQCAtMjQ0LDE0ICsyMzAsOSBAQCBpbmxp
bmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5
dGVzKQogICAgIHJldHVybiBhbGxvY2F0b3JGb3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKIH0K
IAotaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhJbW1vcnRhbFN0cnVjdHVy
ZURlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxv
Y2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKIHsKLSAgICByZXR1cm4gaW1tb3J0YWxT
dHJ1Y3R1cmVEZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5hbGxvY2F0ZShieXRlcyk7Ci19
Ci0KLWlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoTm9ybWFsRGVzdHJ1Y3Rv
cihzaXplX3QgYnl0ZXMpCi17Ci0gICAgcmV0dXJuIG5vcm1hbERlc3RydWN0b3JBbGxvY2F0b3JG
b3IoYnl0ZXMpLmFsbG9jYXRlKGJ5dGVzKTsKKyAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRv
ckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZv
ckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQpAQCAtMjYzLDE2ICsyNDQsMTAgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBl
IE1hcmtlZFNwYWNlOjpmb3IKICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVh
Y2hCbG9jayhmdW5jdG9yKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNv
dW50OyArK2kpCi0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGltcHJlY2lzZUNvdW50OyArK2kpCi0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmlt
cHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIG1fbm9ybWFs
RGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCi0gICAgICAgIG1f
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9y
RWFjaEJsb2NrKGZ1bmN0b3IpOworICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxs
b2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQotICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVz
dHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgICAgICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBtX2Rlc3RydWN0b3JT
cGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4g
ZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDA0NTZhM2UuLjI1ODRh
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRI
b3N0OwogY2xhc3MgSlNJbmplY3RlZFNjcmlwdEhvc3QgOiBwdWJsaWMgSlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0lORk87CiAKQEAgLTcwLDggKzcxLDYg
QEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBpdGVyYXRvckVudHJpZXMoSlNDOjpFeGVjU3Rh
dGUqKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKaW5kZXgg
M2VlYjY5MC4uYWE0OTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC00OCw5
ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotcHJvdGVjdGVkOgotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgSlNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgKaW5kZXggN2YwNzYxYi4uYjc3YzA2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2
YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogY2xhc3MgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkBAIC03OCw4ICs3OSw2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgRlVOQ1RJT05fTkFNRV9T
Q09QRSA9IDU7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgK
aW5kZXggOWFhN2VlMS4uMDgxMWMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgREVDTEFSRV9JTkZPOwog
CkBAIC00OCw5ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotcHJvdGVjdGVk
OgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6
CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBKU0M6
OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXgg
MzdmOTI0Mi4uZDhhNmJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE4MSw2ICsxODEsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7CiAKICAgICBzdGF0aWMgTWFzcXVl
cmFkZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
ewpAQCAtMTk3LDkgKzE5OCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87
Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBKU0M6Ok1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07
CiAKIGNsYXNzIFJvb3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewpAQCAtMjU3LDYg
KzI1NSw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzSW1wdXJlR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzcsOCArMjc2LDYgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9kZWxlZ2F0ZS5zZXQodm0sIHRoaXMsIGRlbGVnYXRlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Okhhc0lt
cHVyZUdldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgbmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgSW1wdXJlR2V0dGVyKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEltcHVyZUdldHRlcio+KG9iamVjdCk7CkBAIC0zMDgsNiArMzA1LDcg
QEAgcHJpdmF0ZToKIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQXJyYXkgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGlj
IFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7CkBAIC0zOTEsOCAr
Mzg5LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgbV92ZWN0b3IuYXBwZW5kKGV4ZWMtPmFy
Z3VtZW50KGkpLnRvSW50MzIoZXhlYykpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNBcnJheTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHBy
aXZhdGU6CiAgICAgUnVudGltZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogSlNBcnJheShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oCmluZGV4IDBlZmVkZjguLmFiMjZmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5oCkBAIC0zMSwyMCArMzEsMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBKU0NlbGwg
eworY2xhc3MgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICAKLXByaXZhdGU6
Ci0gICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7Ci0gICAgCi1wdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgREVDTEFSRV9JTkZPOwogICAg
IAogICAgIHN0YXRpYyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIGNyZWF0ZShWTSYp
OwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJik7CkBAIC01NCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZp
cmVBbGwoKTsKIAogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQoVk0mKTsKKyAgICAKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmgKaW5kZXggYTZhYzc2ZS4uMDQwZjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBKU0Fy
cmF5OwogY2xhc3MgQXJyYXlDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBBcnJh
eUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQ
cm90b3R5cGUqIGFycmF5UHJvdG90eXBlKQogICAgIHsKQEAgLTQ5LDcgKzUwLDYgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFycmF5UHJvdG90
eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7
CiAKIHByaXZhdGU6CiAgICAgQXJyYXlDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5oCmluZGV4IDU0N2UzMzIuLjJiMjM0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUl0ZXJhdG9yUHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
c3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAgLTQ4LDkg
KzQ5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgQXJyYXlJdGVyYXRvclByb3RvdHlwZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAppbmRleCAzNWVjZTRiLi42ZDhmYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgQm9vbGVhblByb3RvdHlwZSA6IHB1YmxpYyBCb29sZWFuT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEJvb2xlYW5PYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBCb29sZWFuUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICB7CkBAIC00NSw3ICs0Niw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEJvb2xlYW5PYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIEJvb2xl
YW5Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5kZXggYzUwNjk0OC4uMTIxOWQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTQx
LDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBDbG9uZWRBcmd1bWVudHMgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzOwogICAgIAogcHJpdmF0ZToKICAgICBDbG9uZWRBcmd1bWVudHMo
Vk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTU0LDggKzU1LDYgQEAgcHVibGljOgogICAgIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIERFQ0xBUkVfSU5GTzsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3Rv
bUdldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0
dGVyU2V0dGVyLmgKaW5kZXggNGRlN2RlZC4uNTQ1MTllYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKQEAgLTMzLDkgKzMzLDEw
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBDdXN0b21HZXR0ZXJTZXR0ZXIgOiBwdWJs
aWMgSlNDZWxsIHsKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwogCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBD
dXN0b21HZXR0ZXI7CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBD
dXN0b21TZXR0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5oCmluZGV4IDE4YmMzNDAuLjA1NGY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC0zMCw2ICszMCw3IEBAIGNsYXNz
IERhdGVQcm90b3R5cGU7CiBjbGFzcyBEYXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgRGF0ZUNv
bnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0ZVByb3Rv
dHlwZSogZGF0ZVByb3RvdHlwZSkKICAgICB7CkBAIC00Nyw3ICs0OCw2IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBEYXRlUHJvdG90eXBlKik7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CiAgICAgRGF0ZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgKaW5kZXggODIwZTYwYi4uNjcx
NGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
aApAQCAtMzMsNiArMzMsNyBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBEYXRl
SW5zdGFuY2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAog
ICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC01MSw3ICs1Miw2
IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IERhdGVJbnN0YW5jZTo6U3RydWN0dXJl
RmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCmluZGV4IDIxNTdjZTQuLjI5Y2Q2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaApAQCAtMzAs
NiArMzAsNyBAQCBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiBjbGFzcyBFcnJvclByb3RvdHlwZSA6
IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEVycm9ySW5zdGFu
Y2UgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0
YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDksOCArNTAsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgRXJyb3JQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEVycm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGQxMGQ5MWYuLmQ1MGUxZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTU2LDE3
ICs1NiwxMCBAQCBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoRXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOwogCiAKLWNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXByaXZhdGU6Ci0g
ICAgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKFZNJiB2bSkKLSAgICAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KHZtLCB2bS50ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1Y3R1cmUuZ2V0KCkpCi0g
ICAgewotICAgIH0KLQotICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwotCitjbGFzcyBUZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciog
Y3JlYXRlKFZNJiB2bSkKICAgICB7CkBAIC04MSw2ICs3NCwxNSBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBUZXJt
aW5hdGVkRXhlY3V0aW9uRXJyb3IoVk0mIHZtKQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
dm0sIHZtLnRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZS5nZXQoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4
IDQ4MTA0ZTQuLmJhNWYxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTg0LDkgKzg0LDkgQEAgcHJvdGVjdGVkOgogCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3Ry
dWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAg
ICAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29u
c3Q7CkBAIC0xMTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDYWxsOwog
ICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7CiAKQEAgLTI3OCwxMSArMjc3LDEy
IEBAIHByb3RlY3RlZDoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3M7CiB9OwogCi1jbGFzcyBOYXRpdmVF
eGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKK2NsYXNzIE5hdGl2ZUV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OwogCiAgICAgc3RhdGljIE5hdGl2ZUV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFBhc3NSZWZQ
dHI8SklUQ29kZT4gY2FsbFRodW5rLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0
cjxKSVRDb2RlPiBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIElu
dHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgewpAQCAtMzQ3LDggKzM0Nyw3IEBAIHByaXZhdGU6CiBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7Ci0KLSAgICBTY3JpcHRFeGVjdXRhYmxl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgICAgICAKQEAgLTQxNiw2ICs0MTUsOCBAQCBwcml2YXRlOgogICAg
IEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9u
KiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6CisgICAg
U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQpOworCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CkBAIC00NDEsMTAgKzQ0MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0OwogfTsKIAotY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CitjbGFzcyBFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogcHVibGljOgogICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKQEAgLTQ4NiwxMCArNDg4LDExIEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFVubGlu
a2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CiB9OwogCi1jbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKK2NsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAg
c3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgewpAQCAtNTM5LDExICs1NDIsMTIgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAot
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoCiAgICAgICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAppbmRleCAyZTkzNzNj
Li42N2YxYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50cy5oCkBAIC0zNiw4ICszNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBj
bGFzcyBHZW5lcmljQXJndW1lbnRzIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0
UHJvcGVydHlOYW1lczsKIAogcHJvdGVjdGVkOgogICAgIEdlbmVyaWNBcmd1bWVudHMoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgKaW5kZXggODA4MGE4MC4uYjk4M2YwNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
SlNPYmplY3Q7CiAvLyB0aGF0IGlmIGEgcHJvcGVydHkgaG9sZGluZyBhIEdldHRlclNldHRlciBy
ZWZlcmVuY2UgaXMgY29uc3RhbnQtaW5mZXJyZWQgYW5kCiAvLyB0aGF0IGNvbnN0YW50IGlzIG9i
c2VydmVkIHRvIGhhdmUgYSBub24tbnVsbCBzZXR0ZXIgKG9yIGdldHRlcikgdGhlbiB3ZSBjYW4K
IC8vIGNvbnN0YW50IGZvbGQgdGhhdCBzZXR0ZXIgKG9yIGdldHRlcikuCi1jbGFzcyBHZXR0ZXJT
ZXR0ZXIgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEdldHRlclNldHRlciBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKIHByaXZhdGU6CkBAIC01NCw2ICs1
NCw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDM3
YjVmZTEuLjc5ZjQ3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CkBAIC00Nyw4ICs0OCw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRl
cm5hbEZ1bmN0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4IDU2YTgx
NmQuLjY2ZTYxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QVBJVmFsdWVXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBKU0FQSVZhbHVlV3JhcHBl
ciA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBKU1ZhbHVlIGpzQVBJVmFsdWVXcmFwcGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oCmluZGV4IGVmY2Y5MWUuLjA1Njdh
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRz
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0Fy
Z3VtZW50c0l0ZXJhdG9yIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIApAQCAtNjIsOSArNjMsNiBAQCBwdWJsaWM6CiAgICAgSlNBcmd1bWVudHNJ
dGVyYXRvciogY2xvbmUoRXhlY1N0YXRlKik7CiAKIHByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAg
IEpTQXJndW1lbnRzSXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9uZXh0SW5kZXgoMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAwMWU1YTNiLi5hYWJkNTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0zNyw2ICszNyw3IEBA
IGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CkBAIC0x
NDAsNyArMTQxLDYgQEAgcHVibGljOgogICAgIH0KICAgICAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgKaW5kZXggMzE5YjgyZS4u
NzUyOWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXIuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQXJyYXlCdWZm
ZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogICAgIAogcHJvdGVjdGVkOgogICAgIEpTQXJy
YXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPik7CkBAIC01
Niw4ICs1Nyw2IEBAIHByb3RlY3RlZDoKICAgICAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgQXJyYXlC
dWZmZXIqIG1faW1wbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCAzZmViMDNiLi4wNTE0NDUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTkzLDYg
KzkzLDcgQEAgaW5saW5lIGJvb2wgaGFzQXJyYXlCdWZmZXIoVHlwZWRBcnJheU1vZGUgbW9kZSkK
IGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKICAgICAK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CiAgICAgCkBA
IC0xNzQsOCArMTc1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBmaW5hbGl6ZShKU0Nl
bGwqKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLSAgICAKICAgICBBcnJheUJ1ZmZlciogZXhp
c3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgdm9pZCogbV92ZWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oCmluZGV4IDM2NDRi
MjkuLjE3OTVjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5oCkBAIC0zNiw2ICszNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqKTsKIGNsYXNzIEpTQm91bmRGdW5j
dGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRnVuY3Rp
b24gQmFzZTsKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNIYXNJbnN0YW5jZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgc3RhdGljIEpT
Qm91bmRGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFy
Z2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBj
b25zdCBTdHJpbmcmKTsKICAgICAKQEAgLTU2LDggKzU3LDYgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0hhc0luc3RhbmNlIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0K
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
bGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAppbmRleCBl
YmIxMWUzLi41Y2Q4MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVl
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSlNDYWxsZWUgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBC
YXNlOworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlOwogCiAgICAgc3RhdGljIEpTQ2Fs
bGVlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3Bl
KiBzY29wZSkKICAgICB7CkBAIC05MCw4ICs5MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0NhbGxlZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAg
ICAgSlNDYWxsZWUoVk0mLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNDgzOWY2NC4uYzQ3ZmMxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTczLDcgKzczLDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CiAKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSBmYWxzZTsKIAogICAgIGVudW0gQ3JlYXRpbmdFYXJs
eUNlbGxUYWcgeyBDcmVhdGluZ0Vhcmx5Q2VsbCB9OwogICAgIEpTQ2VsbChDcmVhdGluZ0Vhcmx5
Q2VsbFRhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKaW5kZXggZGJiMTAwNC4uZmY5MzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjQwLDcgKzI0MCw3IEBAIGlubGluZSBib29sIEpT
Q2VsbDo6Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYgc3RydWN0dXJl
KQogaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZm8oKSBjb25zdAogewog
ICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKTsKLSAg
ICBpZiAoYmxvY2stPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAg
ICBpZiAoYmxvY2stPm5lZWRzRGVzdHJ1Y3Rpb24oKSAmJiAhKGlubGluZVR5cGVGbGFncygpICYg
U3RydWN0dXJlSXNJbW1vcnRhbCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U0Rlc3RydWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsKICAgICByZXR1cm4gc3Ry
dWN0dXJlKCpibG9jay0+dm0oKSktPmNsYXNzSW5mbygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCmluZGV4IDlkMmJhMmMu
LmJjNzI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU0RhdGFWaWV3UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwogCiBwcm90ZWN0ZWQ6CiAgICAgSlNEYXRhVmlld1Byb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOwpAQCAtNDYsOCArNDcsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmgKaW5k
ZXggODExZTRkMS4uNGIyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNFbnZpcm9ubWVudFJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBKU0Vu
dmlyb25tZW50UmVjb3JkIDogcHVibGljIEpTU3ltYm9sVGFibGVPYmplY3QgewogCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU1N5bWJvbFRhYmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB2YXJpYWJsZXMoKQogICAgIHsKQEAgLTg1LDggKzg2
LDYgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIEpT
RW52aXJvbm1lbnRSZWNvcmQoCiAgICAgICAgIFZNJiB2bSwKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggOWJkM2ZlMi4uNThhYTliZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpT
Q2FsbGVlIHsKIAogcHVibGljOgogICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKKyAgICBjb25z
dCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKQEAgLTEyOCw4ICsx
MjksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
LQogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IDEzNDNlZWUuLjM5OTZlMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaApAQCAtODcsNiArODcsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xh
c3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNBcnJheUJ1ZmZlclZpZXcgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
OworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMjI4LDggKzIzMCw2IEBA
IHB1YmxpYzoKICAgICAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgc3RydWN0IFR5cGVkQXJyYXlD
bGFzc0luZm9zOwotICAgIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggM2U1NzgzNy4uMzJjMjkxYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0y
OTYsNiArMjk2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMg
SlNHbG9iYWxPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSBudWxs
cHRyKQogICAgIHsKQEAgLTYwNCw5ICs2MDUsNiBAQCBwdWJsaWM6CiAgICAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxl
KiwgVGhpc1REWk1vZGUpOwogCiBwcm90ZWN0ZWQ6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBzdHJ1Y3Qg
R2xvYmFsUHJvcGVydHlJbmZvIHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKGNvbnN0IElk
ZW50aWZpZXImIGksIEpTVmFsdWUgdiwgdW5zaWduZWQgYSkKICAgICAgICAgICAgIDogaWRlbnRp
ZmllcihpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKaW5kZXggOWVjMDZjNi4uNGQ5ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC00NCw2
ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Vudmlyb25t
ZW50UmVjb3JkIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGljIEpTTGV4aWNhbEVudmlyb25t
ZW50KiBjcmVhdGUoCiAgICAgICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2Nv
cGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQpAQCAtNzgsOSArNzks
NiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oQWN0aXZhdGlvbk9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwotCiBwcml2YXRlOgogICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU05hbWVTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2Nv
cGUuaAppbmRleCBjMmI2OTUyLi5jNWY5NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTmFtZVNjb3BlLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBj
bGFzcyBKU05hbWVTY29wZSA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTRW52aXJvbm1lbnRSZWNvcmQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIENhdGNoU2Nv
cGUsCkBAIC02OCw4ICs2OSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgdmFyaWFibGVBdChTY29w
ZU9mZnNldCgwKSkuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICBKU05hbWVTY29wZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBuZXh0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
CiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBuZXh0LCBzeW1ib2xUYWJsZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKaW5kZXgg
ZTdjMGEwNC4uMGMyNmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOb3RBbk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIFRoaXMg
dW5ob2x5IGNsYXNzIGlzIHVzZWQgdG8gYWxsb3cgdXMgdG8gYXZvaWQgbXVsdGlwbGUgZXhjZXB0
aW9uIGNoZWNrcwogLy8gaW4gY2VydGFpbiBTcXVpcnJlbEZpc2ggYnl0ZWNvZGVzIC0tIGVmZmVj
dGl2ZWx5IGl0IGp1c3Qgc2lsZW50bHkgY29uc3VtZXMKIC8vIGFueSBvcGVyYXRpb25zIHBlcmZv
cm1lZCBvbiB0aGUgcmVzdWx0IG9mIGEgZmFpbGVkIHRvT2JqZWN0IGNhbGwuCi1jbGFzcyBKU05v
dEFuT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNOb3RBbk9iamVj
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgSlNOb3RBbk9iamVjdChWTSYgdm0pCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwg
dm0ubm90QW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6
CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBKU05vdEFuT2JqZWN0KiBj
cmVhdGUoVk0mIHZtKQogICAgIHsKQEAgLTYxLDkgKzYyLDYgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogcHJpdmF0ZToKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgLy8gSlNWYWx1
ZSBtZXRob2RzCiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAppbmRleCA0ZTFhNWFjLi5lYjZkYWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCkBAIC0zNSw2ICszNSw3
IEBAIGNsYXNzIFN0cmluZ2lmaWVyOwogY2xhc3MgSlNPTk9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBKU09O
T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC01
Miw3ICs1Myw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CiAgICAgSlNPTk9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNTNmN2Y1Yi4uYTQ2OTAyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBj
bGFzcyBKU0ZpbmFsT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKIAogcHVibGljOgogICAgIHR5
cGVkZWYgSlNPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQogICAgIHsKQEAgLTEwNzcsOCArMTA3OCw2
IEBAIHByaXZhdGU6CiAgICAgICAgIDogSlNPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5
KQogICAgIHsKICAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCiBpbmxpbmUgSlNGaW5hbE9iamVj
dCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKaW5kZXggNDk4YmI4Yi4uZmMwZjA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNs
YXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVi
bGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIEpTUHJvbWlzZUNvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Byb21pc2VQcm90b3R5cGUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwpAQCAtNDYsNyArNDcsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNQcm9taXNlUHJvdG90eXBlKik7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgSlNQcm9t
aXNlQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCmluZGV4IGZiY2YwYzYuLmI5ZGMyOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJy
ZWQuaApAQCAtMzMsOSArMzMsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEpTUHJv
bWlzZURlZmVycmVkIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1Byb21pc2VEZWZlcnJlZCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTUHJvbWlzZURlZmVycmVkKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNlRGVmZXJyZWQqIGNy
ZWF0ZShWTSYsIEpTT2JqZWN0KiBwcm9taXNlLCBKU1ZhbHVlIHJlc29sdmUsIEpTVmFsdWUgcmVq
ZWN0KTsKQEAgLTQ1LDggKzQ2LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKLQogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CiAKICAgICBKU09iamVjdCogcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuaAppbmRleCA4OTNmYzRhLi5jZDdjZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBKU1By
b21pc2VQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CkBAIC00Myw3ICs0NCw2IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgSlNQcm9t
aXNlUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKaW5kZXggYjQyNzk0YS4uMDli
ZTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVhY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VS
ZWFjdGlvbi5oCkBAIC0zNiw5ICszNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTUHJv
bWlzZURlZmVycmVkOwogY2xhc3MgTWljcm90YXNrOwogCi1jbGFzcyBKU1Byb21pc2VSZWFjdGlv
biA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNQcm9taXNlUmVhY3Rpb24gZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBKU1Byb21pc2VSZWFjdGlvbiogY3Jl
YXRlKFZNJiwgSlNQcm9taXNlRGVmZXJyZWQqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTQ2LDggKzQ3LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKLQogICAgIERFQ0xB
UkVfSU5GTzsKIAogICAgIEpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVmZXJyZWQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggNzc4MzA4YS4uM2Q4
Yzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTM1LDE1ICszNSwxNSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgSWRlbnRpZmllcjsKIAotY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
IDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGNyZWF0ZShWTSYpOwogICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVydHlO
YW1lQXJyYXkmKTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0
cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC05Miw4ICs5Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKFZNJiwgU3RydWN0dXJlSUQsIHVpbnQzMl90LCBSZWZDb3VudGVkSWRlbnRpZmllclNldCop
OwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCB1aW50MzJfdCwgdWludDMyX3QsIFBhc3NS
ZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuaAppbmRleCBjZGE2MjFiLi4yYmRjZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSlNQcm94eSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87CiAKICAg
ICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
T2JqZWN0KiB0YXJnZXQpCiAgICAgewpAQCAtNjgsOCArNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1fdGFyZ2V0LnNldCh2bSwgdGhpcywgdGFyZ2V0KTsKICAgICB9CiAKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRUYXJn
ZXQoVk0mLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5oCmluZGV4IGFhOGJkZWIuLmRmNTgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEdldE9yUHV0IHsgR2V0LCBQ
dXQgfTsKIGNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZOZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAz
NGFmNTJkLi5hMjJlNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKQEAgLTczLDkgKzczLDkgQEAgcHVibGljOgogICAgIGZyaWVuZCBzdHJ1Y3QgVGh1bmtIZWxw
ZXJzOwogCiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKIHByaXZhdGU6CkBAIC0xODIsOCArMTgyLDYgQEAgcHVibGljOgogICAgIH07CiAK
IHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQog
ICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwogCiAgICAgYm9vbCBpc1JvcGUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CkBAIC0yMTksNyArMjE3LDcgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogfTsKIAotY2xhc3MgSlNSb3BlU3RyaW5n
IDogcHVibGljIEpTU3RyaW5nIHsKK2NsYXNzIEpTUm9wZVN0cmluZyBmaW5hbCA6IHB1YmxpYyBK
U1N0cmluZyB7CiAgICAgZnJpZW5kIGNsYXNzIEpTU3RyaW5nOwogCiAgICAgZnJpZW5kIEpTUm9w
ZVN0cmluZyoganNTdHJpbmdCdWlsZGVyKFZNKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMjY4NTM0Ni4uZDkyNTA5
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBKU1N5bWJvbFRhYmxlT2JqZWN0Owog
Y2xhc3MgSlNTeW1ib2xUYWJsZU9iamVjdCA6IHB1YmxpYyBKU1Njb3BlIHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTU2NvcGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IElzRW52aXJvbm1lbnRSZWNvcmQgfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogICAgIAogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xU
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAgICAKQEAgLTUw
LDggKzUxLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTeW1ib2xU
YWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0LCBtX3N5
bWJvbFRhYmxlKTsgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgCiAgICAgSlNTeW1ib2xUYWJs
ZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSkKICAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIHNjb3BlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAppbmRleCBmNjk1OTY4Li5lY2Y2YzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCkBAIC00MywxMiArNDMs
MTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PSAxIDw8IDM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgSXNFbnZpcm9ubWVudFJlY29yZCA9IDEg
PDwgNDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
PSAxIDw8IDU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgNjsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCA3OwogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyA9IDEgPDwgODsKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCAxMDsKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMgPSAxIDw8
IDExOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDEy
OwogCiBjbGFzcyBUeXBlSW5mbyB7CiBwdWJsaWM6CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczIoUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKTsgfQogICAgIGJvb2wgaGFzSW1wdXJl
R2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1
cmVHZXRPd25Qcm9wZXJ0eVNsb3QpOyB9CiAgICAgYm9vbCBuZXdJbXB1cmVQcm9wZXJ0eUZpcmVz
V2F0Y2hwb2ludHMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKE5ld0ltcHVyZVByb3Bl
cnR5RmlyZXNXYXRjaHBvaW50cyk7IH0KLSAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlzSW1tb3J0YWwpOyB9CisgICAg
Ym9vbCBzdHJ1Y3R1cmVJc0ltbW9ydGFsKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMShT
dHJ1Y3R1cmVJc0ltbW9ydGFsKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNl
dCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCmlu
ZGV4IDg0ZDFmNGYuLmZiN2Q5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGhPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoT2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90OwogCiAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAg
LTQ4LDcgKzQ5LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0
cnVjdHVyZUZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAppbmRleCA2MzBmNWU1Li5m
OGIxZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgTnVtYmVyUHJvdG90eXBlOwogY2xh
c3MgTnVtYmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2U7CiAKICAgICBzdGF0aWMg
TnVtYmVyQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBO
dW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKICAgICB7CkBAIC00Nyw3ICs0OCw2IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOdW1i
ZXJQcm90b3R5cGUqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJ
bnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBOdW1iZXJD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAppbmRleCA1OTcyZjdiLi40NWFjZDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtMjgs
NiArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIE51bWJlclByb3RvdHlwZSA6IHB1Ymxp
YyBOdW1iZXJPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgTnVtYmVyT2JqZWN0IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgTnVt
YmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC00NSw3ICs0Niw2IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE51bWJlck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CiAgICAgTnVtYmVyUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBiYjA2
N2IxLi5mYmJmOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgT2JqZWN0UHJvdG90eXBl
OwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgT2JqZWN0Q29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKICAgICB7CkBAIC01
MSw3ICs1Miw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIE9i
amVjdENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCA3NTRkYTJkLi43
ZThlMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRQ
b3dlck9mMih1bnNpZ25lZCB2KQogICAgIHJldHVybiB2OwogfQogCi1jbGFzcyBQcm9wZXJ0eVRh
YmxlIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgJ2l0ZXJh
dG9yJyBhbmQgJ2NvbnN0X2l0ZXJhdG9yJywKICAgICAvLyB1c2VkIGZvciBpdGVyYXRpbmcgb3Zl
ciB0aGUgdGFibGUgaW4gaW5zZXJ0aW9uIG9yZGVyLgpAQCAtMTIwLDggKzEyMCwxMCBAQCBjbGFz
cyBQcm9wZXJ0eVRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfTsKIAogcHVibGljOgorICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpAQCAtMTkwLDkg
KzE5Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKICNlbmRpZgog
Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbDsKLQogcHJpdmF0ZToKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgY29uc3Qg
UHJvcGVydHlUYWJsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCAyZTE2ZjI5Li42NzA1MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aApAQCAtNDIsMTMgKzQyLDEzIEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBSZWdF
eHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBTdHJpbmcmKTsKIAotY2xhc3MgUmVnRXhwIDogcHVi
bGljIEpTQ2VsbCB7CitjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShWTSYsIGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9y
dGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CiAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsg
fQpAQCAtODUsOCArODUsNiBAQCBwdWJsaWM6CiAgICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJu
IFJlZ0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJpbmcpOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOwotCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXgg
YTgzMjAwNi4uY2FiZWUxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFJlZ0V4cFByb3Rv
dHlwZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCiAgICAgc3RhdGljIFJlZ0V4cENvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwUHJvdG90eXBl
KiByZWdFeHBQcm90b3R5cGUpCiAgICAgewpAQCAtNjgsNyArNjksNiBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVnRXhwUHJvdG90eXBlKik7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAg
UmVnRXhwQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggN2M0Yjc1
MC4uYTFmNTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdFeHBPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGljIFJlZ0V4cE9iamVjdCog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAg
IHsKQEAgLTc3LDggKzc4LDYgQEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
Z0V4cE9iamVjdChWTSYsIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5oCmluZGV4IGY5OGZkMDYuLmNiNmVlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogY2xhc3MgUmVnRXhwUHJvdG90eXBlIDogcHVibGljIFJlZ0V4cE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSZWdFeHBPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAg
ICB7CkBAIC00Niw3ICs0Nyw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFJlZ0V4cFBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSosIFJlZ0V4cCopOwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFJlZ0V4
cE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlZEFyZ3VtZW50c1RhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZWRBcmd1bWVudHNUYWJsZS5oCmluZGV4IDhlZmQyM2QuLmI2ZDdkZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaApAQCAt
MzgsOSArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBhbmQgYWxpYXNlcyBvbmUgb2YgdGhl
c2UgYW5kIHRoZW4gZGVjaWRlcyB0byBtb2RpZnkgaXQ7IGluIHRoYXQgY2FzZSB3ZSBkbyBjb3B5
LW9uLXdyaXRlLiBUaGlzCiAvLyBtYWtlcyBzZW5zZSBiZWNhdXNlIHN1Y2ggbW9kaWZpY2F0aW9u
cyBhcmUgc28gdW5jb21tb24uIFlvdSdkIGhhdmUgdG8gZG8gc29tZXRoaW5nIGNyYXp5IGxpa2UK
IC8vICJkZWxldGUgYXJndW1lbnRzW2ldIiBvciBzb21lIHZhcmlhbnQgb2YgZGVmaW5lT3duUHJv
cGVydHkuCi1jbGFzcyBTY29wZWRBcmd1bWVudHNUYWJsZSA6IHB1YmxpYyBKU0NlbGwgeworY2xh
c3MgU2NvcGVkQXJndW1lbnRzVGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
ICAgICAKIHByaXZhdGU6CiAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUoVk0mKTsKQEAgLTUxLDcg
KzUyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBTY29wZWRBcmd1bWVudHNUYWJsZSogY3JlYXRl
KFZNJiwgdWludDMyX3QgbGVuZ3RoKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0
cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAg
IFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBjbG9uZShWTSYpOwpAQCAtNzksOCArNzksNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFyZ3VtZW50cygpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTY29wZWRBcmd1bWVudHNUYWJsZSwgbV9hcmd1bWVudHMpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0
dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiAgICAgU2NvcGVPZmZzZXQm
IGF0KHVpbnQzMl90IGkpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpIDwgbV9sZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCmluZGV4IDA4OTA2NzIuLmZmMzZjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmgKQEAgLTUxLDkgKzUxLDEwIEBAIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdy
aXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKIH07CiAKLWNs
YXNzIFNwYXJzZUFycmF5VmFsdWVNYXAgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFNwYXJzZUFy
cmF5VmFsdWVNYXAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICAKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBTcGFyc2VBcnJheUVudHJ5LCBXVEY6
OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gTWFwOwpAQCAtNjksOCArNzAsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQog
cHVibGljOgogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAgICAgCkBAIC04MSw3ICs4MCw2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU3BhcnNlQXJyYXlWYWx1ZU1hcCogY3JlYXRlKFZNJik7CiAg
ICAgCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uaAppbmRleCA4MTZhMWE0Li4xMzE1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJpY3RFdmFsQWN0aXZhdGlvbiA6IHB1YmxpYyBKU1Nj
b3BlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTU2NvcGUgQmFzZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IElzRW52
aXJvbm1lbnRSZWNvcmQ7CiAKICAgICBzdGF0aWMgU3RyaWN0RXZhbEFjdGl2YXRpb24qIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSkKICAgICB7CkBAIC01MSw5
ICs1Miw2IEBAIHB1YmxpYzoKICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLXByb3RlY3RlZDoK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50
UmVjb3JkIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgU3RyaWN0RXZh
bEFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNTY29wZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCmluZGV4IDAwODZhNmIuLjM1
NzUxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaApAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBTdHJpbmdQcm90b3R5cGU7CiBjbGFz
cyBTdHJpbmdDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBTdHJpbmdDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJv
dG90eXBlKQogICAgIHsKQEAgLTQ1LDkgKzQ2LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi1wcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7Ci0KIHBy
aXZhdGU6CiAgICAgU3RyaW5nQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgU3RyaW5nUHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAppbmRl
eCBjYmJkOTYwLi4zOTNhZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNDksOSArNTAsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKLQogcHJpdmF0ZToKICAgICBTdHJpbmdJdGVyYXRvclByb3RvdHlwZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggMGNlYmZk
ZS4uOTBlNmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJpbmdPYmpl
Y3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTV3Jh
cHBlck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBAIC02Nyw3ICs2
OCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU1N0cmluZyopOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgK
aW5kZXggOTY1Nzc5Ni4uYmQ0ZjAyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKQEAgLTMzLDYgKzMzLDcgQEAgcHJpdmF0ZToKIAogcHVi
bGljOgogICAgIHR5cGVkZWYgU3RyaW5nT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBzdGF0
aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogCkBAIC00NSw3ICs0Niw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RyaW5nT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMTczOGNhNi4uMDQ2YjA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yMDIsNyArMjAyLDcg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAgIHNldFN0YXRpY0Z1bmN0aW9uc1Jl
aWZpZWQoZmFsc2UpOwogICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKICAKLSAgICBUeXBlSW5m
byB0eXBlSW5mbyA9IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVJc0ltbW9ydGFsKTsKKyAg
ICBUeXBlSW5mbyB0eXBlSW5mbyA9IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyk7
CiAgICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmFsbG9jYXRlSUQodGhpcyksIDAsIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVGbGFn
cyA9IHR5cGVJbmZvLm91dE9mTGluZVR5cGVGbGFncygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDdiNDhkMzQuLjFiNDRlMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC05MiwxMSArOTIsMTIgQEAgc3Ry
dWN0IFByb3BlcnR5TWFwRW50cnkgewogICAgIH0KIH07CiAKLWNsYXNzIFN0cnVjdHVyZSA6IHB1
YmxpYyBKU0NlbGwgeworY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBw
dWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTsKIAogICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAg
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhp
bmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKQEAgLTE1
Myw3ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBm
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShWTSYsIEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKaW5kZXgg
NDlmM2U0Ni4uMGZiZDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCkBAIC00MCwxMSArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKLWNsYXNzIFN0cnVj
dHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTdHJ1Y3R1cmVDaGFpbiBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgIHsgCkBAIC02MywxMiArNjQsOSBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkKICAgICB7CiAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCmluZGV4IDIzZjA1ZjkuLjJiMTFhYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaApAQCAtMzYs
MTIgKzM2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOwogY2xhc3MgU3RydWN0dXJlOwogCi1jbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSA6IHB1Ymxp
YyBKU0NlbGwgeworY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKKwogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTY1LDggKzY3LDYgQEAgcHJp
dmF0ZToKICAgICAKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YShWTSYsIFN0cnVjdHVyZSopOwogCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDZWxsOjpTdHJ1Y3R1
cmVGbGFnczsKLQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7CiAgICAg
V3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX29iamVjdFRvU3RyaW5nVmFsdWU7CiAgICAgV3JpdGVC
YXJyaWVyPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAppbmRleCAyN2IwMWZj
Li4xOWI2ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaApAQCAtMzQs
MTQgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBTeW1ib2wgOiBwdWJsaWMg
SlNDZWxsIHsKK2NsYXNzIFN5bWJvbCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC04MSw4ICs4MSw2IEBA
IHB1YmxpYzoKICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKLQogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBTeW1ib2woVk0mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgKaW5kZXggODVhOTNk
My4uOGIyMjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW1i
b2xQcm90b3R5cGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAt
NTUsOCArNTYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU3ltYm9sUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAppbmRleCBhNmEyMWU3Li4zN2NiYjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCkBAIC00MDQsOSArNDA0LDEwIEBAIHN0cnVjdCBTeW1ib2xUYWJs
ZUluZGV4SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8U3ltYm9sVGFibGVFbnRyeT4gewogICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogfTsKIAotY2xhc3MgU3lt
Ym9sVGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFN5bWJvbFRhYmxlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxS
ZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cz4gTWFwOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIEdsb2JhbFZhcmlhYmxlSUQ+IFVu
aXF1ZUlETWFwOwpAQCAtNDI5LDcgKzQzMCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
QEAgLTY0Miw5ICs2NDIsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2YXRlOgog
ICAgIGNsYXNzIFdhdGNocG9pbnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
RGF0YS5oCmluZGV4IGQxYzkxZjIuLmNmY2Q4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaApAQCAtMzQsOSArMzQsMTAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIFdlYWtNYXBEYXRhIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBXZWFrTWFw
RGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIFdlYWtN
YXBEYXRhKiBjcmVhdGUoVk0mIHZtKQogICAgIHsKQEAgLTUxLDcgKzUyLDYgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwot
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKIAogICAg
IHZvaWQgc2V0KFZNJiwgSlNPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBKU1ZhbHVlIGdldChKU09i
amVjdCopOwpAQCAtNjEsOCArNjEsNiBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0lt
bW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8SlNP
YmplY3QqLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4+IE1hcFR5cGU7CiAgICAgTWFwVHlwZTo6Y29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAg
TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhMmZmOTViLi45MDNkZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTUtMDQtMTEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisg
ICAgICAgIERvbid0IHNlZ3JlZ2F0ZSBoZWFwIG9iamVjdHMgYmFzZWQgb24gU3RydWN0dXJlIGlt
bW9ydGFsaXR5LgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQzNjM4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZVByb3Rv
dHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX21ldGhvZC5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDE1
LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgTGF1
bmNoU2VydmljZXMgdG8gaGFuZGxlIFVSTHMgb24gbGluayBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBlZGIyYjc5Li4xZTBjOGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtODQsMTUgKzg0
LDE2IEBAIFdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhCiAKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCBj
b25zdHJ1Y3RvciBvYmplY3RzIGluIHRoZSBKU0MgYmluZGluZ3MuCiBjbGFzcyBET01Db25zdHJ1
Y3Rvck9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewotICAgIHR5cGVkZWYgSlNET01XcmFw
cGVyIEJhc2U7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlOworCiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTRE9NV3JhcHBlcjo6U3RydWN0dXJl
RmxhZ3M7CiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBKU0RPTVdyYXBw
ZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwNzMxOTQ5Li42MjVj
MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMTEwMyw2ICsxMTAzLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOwogICAgIH0KIAorICAgICMgc3Ry
dWN0dXJlIGZsYWdzCisgICAgaWYgKCVzdHJ1Y3R1cmVGbGFncykgeworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gIik7CisgICAgICAg
IGZvcmVhY2ggbXkgJHN0cnVjdHVyZUZsYWcgKHNvcnQgKGtleXMgJXN0cnVjdHVyZUZsYWdzKSkg
eworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJHN0cnVjdHVyZUZsYWcgLiAiIHwg
Iik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkJhc2U6OlN0cnVj
dHVyZUZsYWdzO1xuIik7CisgICAgfQorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByb3Rl
Y3RlZDpcbiIpOwogCiAgICAgIyBDb25zdHJ1Y3RvcgpAQCAtMTExOSwxNSArMTEyOSw2IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxu
Iik7CiAgICAgfQogCi0gICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKLSAgICBpZiAoJXN0cnVjdHVyZUZs
YWdzKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJHN0cnVjdHVy
ZUZsYWcgKHNvcnQgKGtleXMgJXN0cnVjdHVyZUZsYWdzKSkgewotICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgJHN0cnVjdHVyZUZsYWcgLiAiIHwgIik7Ci0gICAgICAgIH0KLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkJhc2U6OlN0cnVjdHVyZUZsYWdzO1xuIik7Ci0gICAg
fQotCiAgICAgIyBJbmRleCBzZXR0ZXIKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgaW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bmRleCwgSlNDOjpKU1ZhbHVlKTtcbiIpOwpAQCAtNDMwMyw3ICs0MzA0LDcgQEAgc3ViIEdlbmVy
YXRlUHJvdG90eXBlRGVjbGFyYXRpb24KIAogICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgaWYg
KCVzdHJ1Y3R1cmVGbGFncykgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcm90ZWN0
ZWQ6XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAicHVibGljOlxuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSAiKTsKICAgICAgICAgZm9yZWFjaCBteSAkc3RydWN0dXJlRmxhZyAoc29ydCAo
a2V5cyAlc3RydWN0dXJlRmxhZ3MpKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICRzdHJ1Y3R1cmVGbGFnIC4gIiB8ICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaAppbmRleCBlNmE5YmM5Li5mNTUxMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogY2xhc3Mg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkK
ICAgICB7CkBAIC0xMjMsNyArMTI0LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBPYmpj
RmFsbGJhY2tPYmplY3RJbXAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFu
Y2UqLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IGI2ZDFmNjguLjBkM2YwZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5IHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQXJyYXkgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogCiAgICAgc3RhdGlj
IFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6OkFycmF5KiBh
cnJheSkKICAgICB7CkBAIC04MCw4ICs4MSw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQmluZGluZ3M6OkFycmF5Kik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQXJyYXk6OlN0cnVjdHVyZUZs
YWdzOwotCiBwcml2YXRlOgogICAgIFJ1bnRpbWVBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
KTsKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5oCmluZGV4IGU3ZGM3ZjQuLjhhZDI3NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgUnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBSdW50aW1l
TWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kKiBtZXRob2QpCiAgICAgewpAQCAtNjAsNyArNjEsNiBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJpbmRp
bmdzOjpNZXRob2QqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAppbmRleCAyYzJhZTVmLi4xNDM5NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lczsKIAogICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewpA
QCAtNzUsNyArNzYsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUnVudGltZU9iamVjdChW
TSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM4ODBkNTAuLmYwMTgzZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNC0xMSAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3Qgc2VncmVnYXRlIGhlYXAgb2JqZWN0cyBi
YXNlZCBvbiBTdHJ1Y3R1cmUgaW1tb3J0YWxpdHkuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNDM2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorCiAyMDE1
LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgTGF1
bmNoU2VydmljZXMgdG8gaGFuZGxlIFVSTHMgb24gbGluayBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKaW5kZXggNzlkYWY1Yi4uNzU3ZmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIE5QUnVudGltZU9iamVjdE1hcDsKIGNsYXNzIEpTTlBPYmplY3QgOiBwdWJsaWMg
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRp
YyBKU05QT2JqZWN0KiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
UFJ1bnRpbWVPYmplY3RNYXAqIG9iamVjdE1hcCwgTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIHsK
QEAgLTc0LDggKzc1LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIEpTTlBPYmplY3Qo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiwgTlBSdW50aW1lT2JqZWN0TWFw
KiwgTlBPYmplY3QqKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>